From fe04f5add6d501eb93d84bf11a36799b152f919f Mon Sep 17 00:00:00 2001 From: Lucian Radu Teodorescu Date: Sat, 27 Apr 2019 18:24:37 +0300 Subject: [PATCH 01/23] Add parser test to the tests.in file Make sure the parserIf.ll file is copied into the source dir for commit Update parserIf.ll Fix error in scanner.spr --- src/SparrowFrontend/CMakeLists.txt | 10 + src/SparrowFrontend/Grammar/parserIf.ll | 8731 +++++++++++------------ src/SparrowFrontend/Grammar/scanner.spr | 2 +- tests/tests.in | 2 + 4 files changed, 4230 insertions(+), 4515 deletions(-) diff --git a/src/SparrowFrontend/CMakeLists.txt b/src/SparrowFrontend/CMakeLists.txt index f54517e5..a7c1cbad 100644 --- a/src/SparrowFrontend/CMakeLists.txt +++ b/src/SparrowFrontend/CMakeLists.txt @@ -86,3 +86,13 @@ ADD_LIBRARY( SparrowFrontend ) TARGET_LINK_LIBRARIES(SparrowFrontend ${REQ_LLVM_LIBRARIES}) TARGET_LINK_LIBRARIES(SparrowFrontend ${Boost_FILESYSTEM_LIBRARY} ${Boost_PROGRAM_OPTIONS_LIBRARY} ${Boost_SYSTEM_LIBRARY}) + +if(BOOTSTRAP_SPARROW) + # Copy the generated assembly back to the source dir, so that we can commit it. + add_custom_command( + TARGET SparrowFrontend POST_BUILD + COMMAND + ${CMAKE_COMMAND} -E copy + ${CMAKE_CURRENT_BINARY_DIR}/Grammar/parserIf.ll + ${CMAKE_CURRENT_SOURCE_DIR}/Grammar/parserIf.ll) +endif() diff --git a/src/SparrowFrontend/Grammar/parserIf.ll b/src/SparrowFrontend/Grammar/parserIf.ll index 992279e3..29622136 100644 --- a/src/SparrowFrontend/Grammar/parserIf.ll +++ b/src/SparrowFrontend/Grammar/parserIf.ll @@ -12,7 +12,6 @@ target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" %Uninitialized = type {} %Null = type {} %StringRef = type { i8*, i8* } -%UntypedPtr = type { i8* } %StreamRefWrapperHelperClass = type { i8* } %ExternalErrorReporter = type {} %Location = type { %SourceCode, %LineCol, %LineCol } @@ -47,6 +46,7 @@ target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" %"FunctionPtr1[Bool, Char]" = type { i8* } %"ContiguousMemoryRange[Token]" = type { %"RawPtr[Token]", %"RawPtr[Token]" } %Node = type { %UntypedPtr } +%UntypedPtr = type { i8* } %"Vector[LocString]" = type { %"RawPtr[LocString]", %"RawPtr[LocString]", %"RawPtr[LocString]" } %"RawPtr[LocString]" = type { %LocString* } %LocString = type { %"Tuple[Location, String]" } @@ -1763,30 +1763,30 @@ define i64 @ptrDiff(i8* %p1, i8* %p2) #0 { ; Function Attrs: alwaysinline define void @_spr_memcpy(i8* %dest, i8* %src, i64 %size) #0 { - call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dest, i8* %src, i64 %size, i32 1, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %dest, i8* align 1 %src, i64 %size, i1 false) ret void } ; Function Attrs: argmemonly nounwind -declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i32, i1) #1 +declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i1) #1 ; Function Attrs: alwaysinline define void @_spr_memmove(i8* %dest, i8* %src, i64 %size) #0 { - call void @llvm.memmove.p0i8.p0i8.i64(i8* %dest, i8* %src, i64 %size, i32 1, i1 false) + call void @llvm.memmove.p0i8.p0i8.i64(i8* align 1 %dest, i8* align 1 %src, i64 %size, i1 false) ret void } ; Function Attrs: argmemonly nounwind -declare void @llvm.memmove.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i32, i1) #1 +declare void @llvm.memmove.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i1) #1 ; Function Attrs: alwaysinline define void @_spr_memset(i8* %dest, i8 %value, i64 %size) #0 { - call void @llvm.memset.p0i8.i64(i8* %dest, i8 %value, i64 %size, i32 1, i1 false) + call void @llvm.memset.p0i8.i64(i8* align 1 %dest, i8 %value, i64 %size, i1 false) ret void } ; Function Attrs: argmemonly nounwind -declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i32, i1) #1 +declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i1) #1 ; Function Attrs: alwaysinline define void @flushOutput() #0 { @@ -2252,14 +2252,14 @@ declare double @_Double_opMod(double, double) define internal i8 @"pre_++"(i8* %n) #3 { %n.addr = alloca i8* store i8* %n, i8** %n.addr - %tmp.v = alloca i8 + %tmp.this = alloca i8 br label %code code: ; preds = %0 %1 = load i8*, i8** %n.addr %2 = load i8, i8* %1 - store i8 1, i8* %tmp.v - %3 = load i8, i8* %tmp.v + store i8 1, i8* %tmp.this + %3 = load i8, i8* %tmp.this %4 = add i8 %2, %3 %5 = load i8*, i8** %n.addr store i8 %4, i8* %5 @@ -2272,14 +2272,14 @@ code: ; preds = %0 define internal i8 @"pre_++.18"(i8* %n) #3 { %n.addr = alloca i8* store i8* %n, i8** %n.addr - %tmp.v = alloca i8 + %tmp.this = alloca i8 br label %code code: ; preds = %0 %1 = load i8*, i8** %n.addr %2 = load i8, i8* %1 - store i8 1, i8* %tmp.v - %3 = load i8, i8* %tmp.v + store i8 1, i8* %tmp.this + %3 = load i8, i8* %tmp.this %4 = add i8 %2, %3 %5 = load i8*, i8** %n.addr store i8 %4, i8* %5 @@ -2292,14 +2292,14 @@ code: ; preds = %0 define internal i16 @"pre_++.19"(i16* %n) #3 { %n.addr = alloca i16* store i16* %n, i16** %n.addr - %tmp.v = alloca i16 + %tmp.this = alloca i16 br label %code code: ; preds = %0 %1 = load i16*, i16** %n.addr %2 = load i16, i16* %1 - store i16 1, i16* %tmp.v - %3 = load i16, i16* %tmp.v + store i16 1, i16* %tmp.this + %3 = load i16, i16* %tmp.this %4 = add i16 %2, %3 %5 = load i16*, i16** %n.addr store i16 %4, i16* %5 @@ -2312,14 +2312,14 @@ code: ; preds = %0 define internal i16 @"pre_++.20"(i16* %n) #3 { %n.addr = alloca i16* store i16* %n, i16** %n.addr - %tmp.v = alloca i16 + %tmp.this = alloca i16 br label %code code: ; preds = %0 %1 = load i16*, i16** %n.addr %2 = load i16, i16* %1 - store i16 1, i16* %tmp.v - %3 = load i16, i16* %tmp.v + store i16 1, i16* %tmp.this + %3 = load i16, i16* %tmp.this %4 = add i16 %2, %3 %5 = load i16*, i16** %n.addr store i16 %4, i16* %5 @@ -2349,14 +2349,14 @@ code: ; preds = %0 define internal i32 @"pre_++.22"(i32* %n) #3 { %n.addr = alloca i32* store i32* %n, i32** %n.addr - %tmp.v = alloca i32 + %tmp.this = alloca i32 br label %code code: ; preds = %0 %1 = load i32*, i32** %n.addr %2 = load i32, i32* %1 - store i32 1, i32* %tmp.v - %3 = load i32, i32* %tmp.v + store i32 1, i32* %tmp.this + %3 = load i32, i32* %tmp.this %4 = add i32 %2, %3 %5 = load i32*, i32** %n.addr store i32 %4, i32* %5 @@ -2369,14 +2369,14 @@ code: ; preds = %0 define internal i64 @"pre_++.23"(i64* %n) #3 { %n.addr = alloca i64* store i64* %n, i64** %n.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 %1 = load i64*, i64** %n.addr %2 = load i64, i64* %1 - store i64 1, i64* %tmp.v - %3 = load i64, i64* %tmp.v + store i64 1, i64* %tmp.this + %3 = load i64, i64* %tmp.this %4 = add i64 %2, %3 %5 = load i64*, i64** %n.addr store i64 %4, i64* %5 @@ -2389,14 +2389,14 @@ code: ; preds = %0 define internal i64 @"pre_++.24"(i64* %n) #3 { %n.addr = alloca i64* store i64* %n, i64** %n.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 %1 = load i64*, i64** %n.addr %2 = load i64, i64* %1 - store i64 1, i64* %tmp.v - %3 = load i64, i64* %tmp.v + store i64 1, i64* %tmp.this + %3 = load i64, i64* %tmp.this %4 = add i64 %2, %3 %5 = load i64*, i64** %n.addr store i64 %4, i64* %5 @@ -2409,14 +2409,14 @@ code: ; preds = %0 define internal i64 @"pre_++.25"(i64* %n) #3 { %n.addr = alloca i64* store i64* %n, i64** %n.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 %1 = load i64*, i64** %n.addr %2 = load i64, i64* %1 - store i64 1, i64* %tmp.v - %3 = load i64, i64* %tmp.v + store i64 1, i64* %tmp.this + %3 = load i64, i64* %tmp.this %4 = add i64 %2, %3 %5 = load i64*, i64** %n.addr store i64 %4, i64* %5 @@ -2429,14 +2429,14 @@ code: ; preds = %0 define internal i64 @"pre_++.26"(i64* %n) #3 { %n.addr = alloca i64* store i64* %n, i64** %n.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 %1 = load i64*, i64** %n.addr %2 = load i64, i64* %1 - store i64 1, i64* %tmp.v - %3 = load i64, i64* %tmp.v + store i64 1, i64* %tmp.this + %3 = load i64, i64* %tmp.this %4 = add i64 %2, %3 %5 = load i64*, i64** %n.addr store i64 %4, i64* %5 @@ -2449,14 +2449,14 @@ code: ; preds = %0 define internal i8 @pre_--(i8* %n) #3 { %n.addr = alloca i8* store i8* %n, i8** %n.addr - %tmp.v = alloca i8 + %tmp.this = alloca i8 br label %code code: ; preds = %0 %1 = load i8*, i8** %n.addr %2 = load i8, i8* %1 - store i8 1, i8* %tmp.v - %3 = load i8, i8* %tmp.v + store i8 1, i8* %tmp.this + %3 = load i8, i8* %tmp.this %4 = sub i8 %2, %3 %5 = load i8*, i8** %n.addr store i8 %4, i8* %5 @@ -2469,14 +2469,14 @@ code: ; preds = %0 define internal i8 @pre_--.27(i8* %n) #3 { %n.addr = alloca i8* store i8* %n, i8** %n.addr - %tmp.v = alloca i8 + %tmp.this = alloca i8 br label %code code: ; preds = %0 %1 = load i8*, i8** %n.addr %2 = load i8, i8* %1 - store i8 1, i8* %tmp.v - %3 = load i8, i8* %tmp.v + store i8 1, i8* %tmp.this + %3 = load i8, i8* %tmp.this %4 = sub i8 %2, %3 %5 = load i8*, i8** %n.addr store i8 %4, i8* %5 @@ -2489,14 +2489,14 @@ code: ; preds = %0 define internal i16 @pre_--.28(i16* %n) #3 { %n.addr = alloca i16* store i16* %n, i16** %n.addr - %tmp.v = alloca i16 + %tmp.this = alloca i16 br label %code code: ; preds = %0 %1 = load i16*, i16** %n.addr %2 = load i16, i16* %1 - store i16 1, i16* %tmp.v - %3 = load i16, i16* %tmp.v + store i16 1, i16* %tmp.this + %3 = load i16, i16* %tmp.this %4 = sub i16 %2, %3 %5 = load i16*, i16** %n.addr store i16 %4, i16* %5 @@ -2509,14 +2509,14 @@ code: ; preds = %0 define internal i16 @pre_--.29(i16* %n) #3 { %n.addr = alloca i16* store i16* %n, i16** %n.addr - %tmp.v = alloca i16 + %tmp.this = alloca i16 br label %code code: ; preds = %0 %1 = load i16*, i16** %n.addr %2 = load i16, i16* %1 - store i16 1, i16* %tmp.v - %3 = load i16, i16* %tmp.v + store i16 1, i16* %tmp.this + %3 = load i16, i16* %tmp.this %4 = sub i16 %2, %3 %5 = load i16*, i16** %n.addr store i16 %4, i16* %5 @@ -2546,14 +2546,14 @@ code: ; preds = %0 define internal i32 @pre_--.31(i32* %n) #3 { %n.addr = alloca i32* store i32* %n, i32** %n.addr - %tmp.v = alloca i32 + %tmp.this = alloca i32 br label %code code: ; preds = %0 %1 = load i32*, i32** %n.addr %2 = load i32, i32* %1 - store i32 1, i32* %tmp.v - %3 = load i32, i32* %tmp.v + store i32 1, i32* %tmp.this + %3 = load i32, i32* %tmp.this %4 = sub i32 %2, %3 %5 = load i32*, i32** %n.addr store i32 %4, i32* %5 @@ -2566,14 +2566,14 @@ code: ; preds = %0 define internal i64 @pre_--.32(i64* %n) #3 { %n.addr = alloca i64* store i64* %n, i64** %n.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 %1 = load i64*, i64** %n.addr %2 = load i64, i64* %1 - store i64 1, i64* %tmp.v - %3 = load i64, i64* %tmp.v + store i64 1, i64* %tmp.this + %3 = load i64, i64* %tmp.this %4 = sub i64 %2, %3 %5 = load i64*, i64** %n.addr store i64 %4, i64* %5 @@ -2586,14 +2586,14 @@ code: ; preds = %0 define internal i64 @pre_--.33(i64* %n) #3 { %n.addr = alloca i64* store i64* %n, i64** %n.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 %1 = load i64*, i64** %n.addr %2 = load i64, i64* %1 - store i64 1, i64* %tmp.v - %3 = load i64, i64* %tmp.v + store i64 1, i64* %tmp.this + %3 = load i64, i64* %tmp.this %4 = sub i64 %2, %3 %5 = load i64*, i64** %n.addr store i64 %4, i64* %5 @@ -2606,14 +2606,14 @@ code: ; preds = %0 define internal i64 @pre_--.34(i64* %n) #3 { %n.addr = alloca i64* store i64* %n, i64** %n.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 %1 = load i64*, i64** %n.addr %2 = load i64, i64* %1 - store i64 1, i64* %tmp.v - %3 = load i64, i64* %tmp.v + store i64 1, i64* %tmp.this + %3 = load i64, i64* %tmp.this %4 = call i64 @_SizeType_opMinus(i64 %2, i64 %3) %5 = load i64*, i64** %n.addr store i64 %4, i64* %5 @@ -2626,14 +2626,14 @@ code: ; preds = %0 define internal i64 @pre_--.35(i64* %n) #3 { %n.addr = alloca i64* store i64* %n, i64** %n.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 %1 = load i64*, i64** %n.addr %2 = load i64, i64* %1 - store i64 1, i64* %tmp.v - %3 = load i64, i64* %tmp.v + store i64 1, i64* %tmp.this + %3 = load i64, i64* %tmp.this %4 = call i64 @_DiffType_opMinus(i64 %2, i64 %3) %5 = load i64*, i64** %n.addr store i64 %4, i64* %5 @@ -2647,7 +2647,7 @@ define internal i8 @"post_++"(i8* %n) #3 { %n.addr = alloca i8* store i8* %n, i8** %n.addr %old = alloca i8 - %tmp.v = alloca i8 + %tmp.this = alloca i8 br label %code code: ; preds = %0 @@ -2656,8 +2656,8 @@ code: ; preds = %0 store i8 %2, i8* %old %3 = load i8*, i8** %n.addr %4 = load i8, i8* %3 - store i8 1, i8* %tmp.v - %5 = load i8, i8* %tmp.v + store i8 1, i8* %tmp.this + %5 = load i8, i8* %tmp.this %6 = add i8 %4, %5 %7 = load i8*, i8** %n.addr store i8 %6, i8* %7 @@ -2670,7 +2670,7 @@ define internal i8 @"post_++.36"(i8* %n) #3 { %n.addr = alloca i8* store i8* %n, i8** %n.addr %old = alloca i8 - %tmp.v = alloca i8 + %tmp.this = alloca i8 br label %code code: ; preds = %0 @@ -2679,8 +2679,8 @@ code: ; preds = %0 store i8 %2, i8* %old %3 = load i8*, i8** %n.addr %4 = load i8, i8* %3 - store i8 1, i8* %tmp.v - %5 = load i8, i8* %tmp.v + store i8 1, i8* %tmp.this + %5 = load i8, i8* %tmp.this %6 = add i8 %4, %5 %7 = load i8*, i8** %n.addr store i8 %6, i8* %7 @@ -2693,7 +2693,7 @@ define internal i16 @"post_++.37"(i16* %n) #3 { %n.addr = alloca i16* store i16* %n, i16** %n.addr %old = alloca i16 - %tmp.v = alloca i16 + %tmp.this = alloca i16 br label %code code: ; preds = %0 @@ -2702,8 +2702,8 @@ code: ; preds = %0 store i16 %2, i16* %old %3 = load i16*, i16** %n.addr %4 = load i16, i16* %3 - store i16 1, i16* %tmp.v - %5 = load i16, i16* %tmp.v + store i16 1, i16* %tmp.this + %5 = load i16, i16* %tmp.this %6 = add i16 %4, %5 %7 = load i16*, i16** %n.addr store i16 %6, i16* %7 @@ -2716,7 +2716,7 @@ define internal i16 @"post_++.38"(i16* %n) #3 { %n.addr = alloca i16* store i16* %n, i16** %n.addr %old = alloca i16 - %tmp.v = alloca i16 + %tmp.this = alloca i16 br label %code code: ; preds = %0 @@ -2725,8 +2725,8 @@ code: ; preds = %0 store i16 %2, i16* %old %3 = load i16*, i16** %n.addr %4 = load i16, i16* %3 - store i16 1, i16* %tmp.v - %5 = load i16, i16* %tmp.v + store i16 1, i16* %tmp.this + %5 = load i16, i16* %tmp.this %6 = add i16 %4, %5 %7 = load i16*, i16** %n.addr store i16 %6, i16* %7 @@ -2759,7 +2759,7 @@ define internal i32 @"post_++.40"(i32* %n) #3 { %n.addr = alloca i32* store i32* %n, i32** %n.addr %old = alloca i32 - %tmp.v = alloca i32 + %tmp.this = alloca i32 br label %code code: ; preds = %0 @@ -2768,8 +2768,8 @@ code: ; preds = %0 store i32 %2, i32* %old %3 = load i32*, i32** %n.addr %4 = load i32, i32* %3 - store i32 1, i32* %tmp.v - %5 = load i32, i32* %tmp.v + store i32 1, i32* %tmp.this + %5 = load i32, i32* %tmp.this %6 = add i32 %4, %5 %7 = load i32*, i32** %n.addr store i32 %6, i32* %7 @@ -2782,7 +2782,7 @@ define internal i64 @"post_++.41"(i64* %n) #3 { %n.addr = alloca i64* store i64* %n, i64** %n.addr %old = alloca i64 - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -2791,8 +2791,8 @@ code: ; preds = %0 store i64 %2, i64* %old %3 = load i64*, i64** %n.addr %4 = load i64, i64* %3 - store i64 1, i64* %tmp.v - %5 = load i64, i64* %tmp.v + store i64 1, i64* %tmp.this + %5 = load i64, i64* %tmp.this %6 = add i64 %4, %5 %7 = load i64*, i64** %n.addr store i64 %6, i64* %7 @@ -2805,7 +2805,7 @@ define internal i64 @"post_++.42"(i64* %n) #3 { %n.addr = alloca i64* store i64* %n, i64** %n.addr %old = alloca i64 - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -2814,8 +2814,8 @@ code: ; preds = %0 store i64 %2, i64* %old %3 = load i64*, i64** %n.addr %4 = load i64, i64* %3 - store i64 1, i64* %tmp.v - %5 = load i64, i64* %tmp.v + store i64 1, i64* %tmp.this + %5 = load i64, i64* %tmp.this %6 = add i64 %4, %5 %7 = load i64*, i64** %n.addr store i64 %6, i64* %7 @@ -2828,7 +2828,7 @@ define internal i64 @"post_++.43"(i64* %n) #3 { %n.addr = alloca i64* store i64* %n, i64** %n.addr %old = alloca i64 - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -2837,8 +2837,8 @@ code: ; preds = %0 store i64 %2, i64* %old %3 = load i64*, i64** %n.addr %4 = load i64, i64* %3 - store i64 1, i64* %tmp.v - %5 = load i64, i64* %tmp.v + store i64 1, i64* %tmp.this + %5 = load i64, i64* %tmp.this %6 = add i64 %4, %5 %7 = load i64*, i64** %n.addr store i64 %6, i64* %7 @@ -2851,7 +2851,7 @@ define internal i64 @"post_++.44"(i64* %n) #3 { %n.addr = alloca i64* store i64* %n, i64** %n.addr %old = alloca i64 - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -2860,8 +2860,8 @@ code: ; preds = %0 store i64 %2, i64* %old %3 = load i64*, i64** %n.addr %4 = load i64, i64* %3 - store i64 1, i64* %tmp.v - %5 = load i64, i64* %tmp.v + store i64 1, i64* %tmp.this + %5 = load i64, i64* %tmp.this %6 = add i64 %4, %5 %7 = load i64*, i64** %n.addr store i64 %6, i64* %7 @@ -2874,7 +2874,7 @@ define internal i8 @post_--(i8* %n) #3 { %n.addr = alloca i8* store i8* %n, i8** %n.addr %old = alloca i8 - %tmp.v = alloca i8 + %tmp.this = alloca i8 br label %code code: ; preds = %0 @@ -2883,8 +2883,8 @@ code: ; preds = %0 store i8 %2, i8* %old %3 = load i8*, i8** %n.addr %4 = load i8, i8* %3 - store i8 1, i8* %tmp.v - %5 = load i8, i8* %tmp.v + store i8 1, i8* %tmp.this + %5 = load i8, i8* %tmp.this %6 = sub i8 %4, %5 %7 = load i8*, i8** %n.addr store i8 %6, i8* %7 @@ -2897,7 +2897,7 @@ define internal i8 @post_--.45(i8* %n) #3 { %n.addr = alloca i8* store i8* %n, i8** %n.addr %old = alloca i8 - %tmp.v = alloca i8 + %tmp.this = alloca i8 br label %code code: ; preds = %0 @@ -2906,8 +2906,8 @@ code: ; preds = %0 store i8 %2, i8* %old %3 = load i8*, i8** %n.addr %4 = load i8, i8* %3 - store i8 1, i8* %tmp.v - %5 = load i8, i8* %tmp.v + store i8 1, i8* %tmp.this + %5 = load i8, i8* %tmp.this %6 = sub i8 %4, %5 %7 = load i8*, i8** %n.addr store i8 %6, i8* %7 @@ -2920,7 +2920,7 @@ define internal i16 @post_--.46(i16* %n) #3 { %n.addr = alloca i16* store i16* %n, i16** %n.addr %old = alloca i16 - %tmp.v = alloca i16 + %tmp.this = alloca i16 br label %code code: ; preds = %0 @@ -2929,8 +2929,8 @@ code: ; preds = %0 store i16 %2, i16* %old %3 = load i16*, i16** %n.addr %4 = load i16, i16* %3 - store i16 1, i16* %tmp.v - %5 = load i16, i16* %tmp.v + store i16 1, i16* %tmp.this + %5 = load i16, i16* %tmp.this %6 = sub i16 %4, %5 %7 = load i16*, i16** %n.addr store i16 %6, i16* %7 @@ -2943,7 +2943,7 @@ define internal i16 @post_--.47(i16* %n) #3 { %n.addr = alloca i16* store i16* %n, i16** %n.addr %old = alloca i16 - %tmp.v = alloca i16 + %tmp.this = alloca i16 br label %code code: ; preds = %0 @@ -2952,8 +2952,8 @@ code: ; preds = %0 store i16 %2, i16* %old %3 = load i16*, i16** %n.addr %4 = load i16, i16* %3 - store i16 1, i16* %tmp.v - %5 = load i16, i16* %tmp.v + store i16 1, i16* %tmp.this + %5 = load i16, i16* %tmp.this %6 = sub i16 %4, %5 %7 = load i16*, i16** %n.addr store i16 %6, i16* %7 @@ -2986,7 +2986,7 @@ define internal i32 @post_--.49(i32* %n) #3 { %n.addr = alloca i32* store i32* %n, i32** %n.addr %old = alloca i32 - %tmp.v = alloca i32 + %tmp.this = alloca i32 br label %code code: ; preds = %0 @@ -2995,8 +2995,8 @@ code: ; preds = %0 store i32 %2, i32* %old %3 = load i32*, i32** %n.addr %4 = load i32, i32* %3 - store i32 1, i32* %tmp.v - %5 = load i32, i32* %tmp.v + store i32 1, i32* %tmp.this + %5 = load i32, i32* %tmp.this %6 = sub i32 %4, %5 %7 = load i32*, i32** %n.addr store i32 %6, i32* %7 @@ -3009,7 +3009,7 @@ define internal i64 @post_--.50(i64* %n) #3 { %n.addr = alloca i64* store i64* %n, i64** %n.addr %old = alloca i64 - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -3018,8 +3018,8 @@ code: ; preds = %0 store i64 %2, i64* %old %3 = load i64*, i64** %n.addr %4 = load i64, i64* %3 - store i64 1, i64* %tmp.v - %5 = load i64, i64* %tmp.v + store i64 1, i64* %tmp.this + %5 = load i64, i64* %tmp.this %6 = sub i64 %4, %5 %7 = load i64*, i64** %n.addr store i64 %6, i64* %7 @@ -3032,7 +3032,7 @@ define internal i64 @post_--.51(i64* %n) #3 { %n.addr = alloca i64* store i64* %n, i64** %n.addr %old = alloca i64 - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -3041,8 +3041,8 @@ code: ; preds = %0 store i64 %2, i64* %old %3 = load i64*, i64** %n.addr %4 = load i64, i64* %3 - store i64 1, i64* %tmp.v - %5 = load i64, i64* %tmp.v + store i64 1, i64* %tmp.this + %5 = load i64, i64* %tmp.this %6 = sub i64 %4, %5 %7 = load i64*, i64** %n.addr store i64 %6, i64* %7 @@ -3055,7 +3055,7 @@ define internal i64 @post_--.52(i64* %n) #3 { %n.addr = alloca i64* store i64* %n, i64** %n.addr %old = alloca i64 - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -3064,8 +3064,8 @@ code: ; preds = %0 store i64 %2, i64* %old %3 = load i64*, i64** %n.addr %4 = load i64, i64* %3 - store i64 1, i64* %tmp.v - %5 = load i64, i64* %tmp.v + store i64 1, i64* %tmp.this + %5 = load i64, i64* %tmp.this %6 = call i64 @_SizeType_opMinus(i64 %4, i64 %5) %7 = load i64*, i64** %n.addr store i64 %6, i64* %7 @@ -3078,7 +3078,7 @@ define internal i64 @post_--.53(i64* %n) #3 { %n.addr = alloca i64* store i64* %n, i64** %n.addr %old = alloca i64 - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -3087,8 +3087,8 @@ code: ; preds = %0 store i64 %2, i64* %old %3 = load i64*, i64** %n.addr %4 = load i64, i64* %3 - store i64 1, i64* %tmp.v - %5 = load i64, i64* %tmp.v + store i64 1, i64* %tmp.this + %5 = load i64, i64* %tmp.this %6 = call i64 @_DiffType_opMinus(i64 %4, i64 %5) %7 = load i64*, i64** %n.addr store i64 %6, i64* %7 @@ -3124,8 +3124,8 @@ define internal void @ctor.55(%StringRef* %this, i64 %size) #4 { store %StringRef* %this, %StringRef** %this.addr %size.addr = alloca i64 store i64 %size, i64* %size.addr - %tmp.v = alloca i64 - %tmp.v1 = alloca i8 + %tmp.this = alloca i64 + %tmp.this1 = alloca i8 br label %code code: ; preds = %0 @@ -3136,8 +3136,8 @@ code: ; preds = %0 %4 = getelementptr inbounds %StringRef, %StringRef* %3, i32 0, i32 1 store i8* null, i8** %4 %5 = load i64, i64* %size.addr - store i64 1, i64* %tmp.v - %6 = load i64, i64* %tmp.v + store i64 1, i64* %tmp.this + %6 = load i64, i64* %tmp.this %7 = add i64 %5, %6 %8 = call i8* @malloc(i64 %7) %9 = load %StringRef*, %StringRef** %this.addr @@ -3151,8 +3151,8 @@ code: ; preds = %0 %16 = load %StringRef*, %StringRef** %this.addr %17 = getelementptr inbounds %StringRef, %StringRef* %16, i32 0, i32 1 store i8* %15, i8** %17 - store i8 0, i8* %tmp.v1 - %18 = load i8, i8* %tmp.v1 + store i8 0, i8* %tmp.this1 + %18 = load i8, i8* %tmp.this1 %19 = load %StringRef*, %StringRef** %this.addr %20 = getelementptr inbounds %StringRef, %StringRef* %19, i32 0, i32 1 %21 = load i8*, i8** %20 @@ -3232,7 +3232,7 @@ code: ; preds = %0 define internal i1 @isEmpty(%StringRef* %this) #4 { %this.addr = alloca %StringRef* store %StringRef* %this, %StringRef** %this.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -3243,14 +3243,14 @@ code: ; preds = %0 %5 = getelementptr inbounds %StringRef, %StringRef* %4, i32 0, i32 0 %6 = load i8*, i8** %5 %7 = call i64 @ptrDiff(i8* %3, i8* %6) - store i64 0, i64* %tmp.v - %8 = load i64, i64* %tmp.v + store i64 0, i64* %tmp.this + %8 = load i64, i64* %tmp.this %9 = icmp eq i64 %7, %8 - %10 = load i64, i64* %tmp.v + %10 = load i64, i64* %tmp.this ret i1 %9 dumy_block: ; No predecessors! - %11 = load i64, i64* %tmp.v + %11 = load i64, i64* %tmp.this unreachable } @@ -3258,7 +3258,7 @@ dumy_block: ; No predecessors! define internal i64 @size(%StringRef* %this) #4 { %this.addr = alloca %StringRef* store %StringRef* %this, %StringRef** %this.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -3269,8 +3269,8 @@ code: ; preds = %0 %5 = getelementptr inbounds %StringRef, %StringRef* %4, i32 0, i32 0 %6 = load i8*, i8** %5 %7 = call i64 @ptrDiff(i8* %3, i8* %6) - store i64 %7, i64* %tmp.v - %8 = load i64, i64* %tmp.v + store i64 %7, i64* %tmp.this + %8 = load i64, i64* %tmp.this ret i64 %8 } @@ -3291,15 +3291,15 @@ code: ; preds = %0 define internal i8* @back(%StringRef* %this) #4 { %this.addr = alloca %StringRef* store %StringRef* %this, %StringRef** %this.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 %1 = load %StringRef*, %StringRef** %this.addr %2 = getelementptr inbounds %StringRef, %StringRef* %1, i32 0, i32 1 %3 = load i8*, i8** %2 - store i64 4294967295, i64* %tmp.v - %4 = load i64, i64* %tmp.v + store i64 4294967295, i64* %tmp.this + %4 = load i64, i64* %tmp.this %5 = call i8* @ptrAdd(i8* %3, i64 %4) ret i8* %5 } @@ -3355,15 +3355,15 @@ code: ; preds = %0 define internal void @popFront(%StringRef* %this) #3 { %this.addr = alloca %StringRef* store %StringRef* %this, %StringRef** %this.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 %1 = load %StringRef*, %StringRef** %this.addr %2 = getelementptr inbounds %StringRef, %StringRef* %1, i32 0, i32 0 %3 = load i8*, i8** %2 - store i64 1, i64* %tmp.v - %4 = load i64, i64* %tmp.v + store i64 1, i64* %tmp.this + %4 = load i64, i64* %tmp.this %5 = call i8* @ptrAdd(i8* %3, i64 %4) %6 = load %StringRef*, %StringRef** %this.addr %7 = getelementptr inbounds %StringRef, %StringRef* %6, i32 0, i32 0 @@ -3375,15 +3375,15 @@ code: ; preds = %0 define internal void @popBack(%StringRef* %this) #3 { %this.addr = alloca %StringRef* store %StringRef* %this, %StringRef** %this.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 %1 = load %StringRef*, %StringRef** %this.addr %2 = getelementptr inbounds %StringRef, %StringRef* %1, i32 0, i32 1 %3 = load i8*, i8** %2 - store i64 4294967295, i64* %tmp.v - %4 = load i64, i64* %tmp.v + store i64 4294967295, i64* %tmp.this + %4 = load i64, i64* %tmp.this %5 = call i8* @ptrAdd(i8* %3, i64 %4) %6 = load %StringRef*, %StringRef** %this.addr %7 = getelementptr inbounds %StringRef, %StringRef* %6, i32 0, i32 1 @@ -3417,8 +3417,8 @@ define internal void @popBack.61(%StringRef* %this, i64 %n) #3 { store %StringRef* %this, %StringRef** %this.addr %n.addr = alloca i64 store i64 %n, i64* %n.addr - %tmp.v = alloca i64 - %tmp.v1 = alloca i64 + %tmp.this = alloca i64 + %tmp.this1 = alloca i64 br label %code code: ; preds = %0 @@ -3426,11 +3426,11 @@ code: ; preds = %0 %2 = getelementptr inbounds %StringRef, %StringRef* %1, i32 0, i32 1 %3 = load i8*, i8** %2 %4 = load i64, i64* %n.addr - store i64 %4, i64* %tmp.v1 - %5 = load i64, i64* %tmp.v1 + store i64 %4, i64* %tmp.this1 + %5 = load i64, i64* %tmp.this1 %6 = sub i64 0, %5 - store i64 %6, i64* %tmp.v - %7 = load i64, i64* %tmp.v + store i64 %6, i64* %tmp.this + %7 = load i64, i64* %tmp.this %8 = call i8* @ptrAdd(i8* %3, i64 %7) %9 = load %StringRef*, %StringRef** %this.addr %10 = getelementptr inbounds %StringRef, %StringRef* %9, i32 0, i32 1 @@ -3475,27 +3475,26 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i1 @"=="(%StringRef* %this, %StringRef %other) #4 { - %this.addr = alloca %StringRef* - store %StringRef* %this, %StringRef** %this.addr +define internal i1 @"=="(%StringRef %this, %StringRef %other) #4 { + %this.addr = alloca %StringRef + store %StringRef %this, %StringRef* %this.addr %other.addr = alloca %StringRef store %StringRef %other, %StringRef* %other.addr %s = alloca i64 %i = alloca i64 - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 - %1 = load %StringRef*, %StringRef** %this.addr - %2 = call i64 @size(%StringRef* %1) - store i64 %2, i64* %s + %1 = call i64 @size(%StringRef* %this.addr) + store i64 %1, i64* %s br label %if_block if_block: ; preds = %code - %3 = load i64, i64* %s - %4 = call i64 @size(%StringRef* %other.addr) - %5 = icmp ne i64 %3, %4 - br i1 %5, label %if_then, label %if_end + %2 = load i64, i64* %s + %3 = call i64 @size(%StringRef* %other.addr) + %4 = icmp ne i64 %2, %3 + br i1 %4, label %if_then, label %if_end if_then: ; preds = %if_block ret i1 false @@ -3508,35 +3507,34 @@ dumy_block: ; No predecessors! br label %if_end while_block: ; preds = %while_step, %if_end - %6 = load i64, i64* %i - %7 = load i64, i64* %s - %8 = icmp slt i64 %6, %7 - br i1 %8, label %while_body, label %while_end + %5 = load i64, i64* %i + %6 = load i64, i64* %s + %7 = icmp slt i64 %5, %6 + br i1 %7, label %while_body, label %while_end while_body: ; preds = %while_block br label %if_block1 while_step: ; preds = %if_end3 - %9 = load i64, i64* %i - store i64 1, i64* %tmp.v - %10 = load i64, i64* %tmp.v - %11 = add i64 %9, %10 - store i64 %11, i64* %i + %8 = load i64, i64* %i + store i64 1, i64* %tmp.this + %9 = load i64, i64* %tmp.this + %10 = add i64 %8, %9 + store i64 %10, i64* %i br label %while_block while_end: ; preds = %while_block ret i1 true if_block1: ; preds = %while_body - %12 = load %StringRef*, %StringRef** %this.addr - %13 = load i64, i64* %i - %14 = call i8* @at(%StringRef* %12, i64 %13) - %15 = load i8, i8* %14 - %16 = load i64, i64* %i - %17 = call i8* @at(%StringRef* %other.addr, i64 %16) - %18 = load i8, i8* %17 - %19 = icmp ne i8 %15, %18 - br i1 %19, label %if_then2, label %if_end3 + %11 = load i64, i64* %i + %12 = call i8* @at(%StringRef* %this.addr, i64 %11) + %13 = load i8, i8* %12 + %14 = load i64, i64* %i + %15 = call i8* @at(%StringRef* %other.addr, i64 %14) + %16 = load i8, i8* %15 + %17 = icmp ne i8 %13, %16 + br i1 %17, label %if_then2, label %if_end3 if_then2: ; preds = %if_block1 ret i1 false @@ -3580,9 +3578,9 @@ define internal i64 @cStringLen(i8* %s) #4 { store i8* %s, i8** %s.addr %p = alloca i8* %len = alloca i64 - %tmp.v = alloca i8 - %tmp.v1 = alloca i64 - %tmp.v2 = alloca i64 + %tmp.this = alloca i8 + %tmp.this1 = alloca i64 + %tmp.this2 = alloca i64 br label %code code: ; preds = %0 @@ -3594,23 +3592,23 @@ code: ; preds = %0 while_block: ; preds = %while_step, %code %2 = load i8*, i8** %p %3 = load i8, i8* %2 - store i8 0, i8* %tmp.v - %4 = load i8, i8* %tmp.v + store i8 0, i8* %tmp.this + %4 = load i8, i8* %tmp.this %5 = icmp ne i8 %3, %4 br i1 %5, label %while_body, label %while_end while_body: ; preds = %while_block %6 = load i64, i64* %len - store i64 1, i64* %tmp.v1 - %7 = load i64, i64* %tmp.v1 + store i64 1, i64* %tmp.this1 + %7 = load i64, i64* %tmp.this1 %8 = add i64 %6, %7 store i64 %8, i64* %len br label %while_step while_step: ; preds = %while_body %9 = load i8*, i8** %p - store i64 1, i64* %tmp.v2 - %10 = load i64, i64* %tmp.v2 + store i64 1, i64* %tmp.this2 + %10 = load i64, i64* %tmp.this2 %11 = call i8* @ptrAdd(i8* %9, i64 %10) store i8* %11, i8** %p br label %while_block @@ -3624,8 +3622,8 @@ while_end: ; preds = %while_block define internal i8 @char(%StringRef* %this) #4 { %this.addr = alloca %StringRef* store %StringRef* %this, %StringRef** %this.addr - %tmp.v = alloca i8 - %tmp.v1 = alloca i64 + %tmp.this = alloca i8 + %tmp.this1 = alloca i64 br label %code code: ; preds = %0 @@ -3637,14 +3635,14 @@ if_block: ; preds = %code br i1 %2, label %if_then, label %if_else if_then: ; preds = %if_block - store i8 0, i8* %tmp.v - %3 = load i8, i8* %tmp.v + store i8 0, i8* %tmp.this + %3 = load i8, i8* %tmp.this ret i8 %3 if_else: ; preds = %if_block %4 = load %StringRef*, %StringRef** %this.addr - store i64 0, i64* %tmp.v1 - %5 = load i64, i64* %tmp.v1 + store i64 0, i64* %tmp.this1 + %5 = load i64, i64* %tmp.this1 %6 = call i8* @at(%StringRef* %4, i64 %5) %7 = load i8, i8* %6 ret i8 %7 @@ -3660,9 +3658,7 @@ dumy_block2: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal void @"+"(%StringRef* sret %_result, %StringRef %x, %StringRef %y) #4 { - %_result.addr = alloca %StringRef* - store %StringRef* %_result, %StringRef** %_result.addr +define internal %StringRef @"+"(%StringRef %x, %StringRef %y) #4 { %x.addr = alloca %StringRef store %StringRef %x, %StringRef* %x.addr %y.addr = alloca %StringRef @@ -3695,16 +3691,12 @@ code: ; preds = %0 %16 = load i8*, i8** %15 %17 = load i64, i64* %sz2 call void @_spr_memcpy(i8* %14, i8* %16, i64 %17) - %18 = load %StringRef*, %StringRef** %_result.addr - %19 = load %StringRef, %StringRef* %res - call void @ctor.56(%StringRef* %18, %StringRef %19) - ret void + %18 = load %StringRef, %StringRef* %res + ret %StringRef %18 } ; Function Attrs: inlinehint nounwind -define internal void @"+.62"(%StringRef* sret %_result, %StringRef %x, i8 %y) #4 { - %_result.addr = alloca %StringRef* - store %StringRef* %_result, %StringRef** %_result.addr +define internal %StringRef @"+.62"(%StringRef %x, i8 %y) #4 { %x.addr = alloca %StringRef store %StringRef %x, %StringRef* %x.addr %y.addr = alloca i8 @@ -3712,8 +3704,8 @@ define internal void @"+.62"(%StringRef* sret %_result, %StringRef %x, i8 %y) #4 %sz1 = alloca i64 %sz2 = alloca i32 %res = alloca %StringRef - %tmp.v = alloca i64 - %tmp.v1 = alloca i64 + %tmp.this = alloca i64 + %tmp.this1 = alloca i64 br label %code code: ; preds = %0 @@ -3723,8 +3715,8 @@ code: ; preds = %0 %2 = load i64, i64* %sz1 %3 = load i32, i32* %sz2 %4 = zext i32 %3 to i64 - store i64 %4, i64* %tmp.v - %5 = load i64, i64* %tmp.v + store i64 %4, i64* %tmp.this + %5 = load i64, i64* %tmp.this %6 = add i64 %2, %5 call void @ctor.55(%StringRef* %res, i64 %6) %7 = getelementptr inbounds %StringRef, %StringRef* %res, i32 0, i32 0 @@ -3739,13 +3731,11 @@ code: ; preds = %0 %15 = call i8* @ptrAdd(i8* %13, i64 %14) %16 = load i32, i32* %sz2 %17 = zext i32 %16 to i64 - store i64 %17, i64* %tmp.v1 - %18 = load i64, i64* %tmp.v1 + store i64 %17, i64* %tmp.this1 + %18 = load i64, i64* %tmp.this1 call void @_spr_memcpy(i8* %15, i8* %y.addr, i64 %18) - %19 = load %StringRef*, %StringRef** %_result.addr - %20 = load %StringRef, %StringRef* %res - call void @ctor.56(%StringRef* %19, %StringRef %20) - ret void + %19 = load %StringRef, %StringRef* %res + ret %StringRef %19 } ; Function Attrs: nounwind @@ -3757,100 +3747,6 @@ declare void @reinterpretCast() #2 ; Function Attrs: nounwind declare void @construct() #2 -; Function Attrs: alwaysinline nounwind -define internal void @ctor.63(%UntypedPtr* %this, i8* %fdata) #3 { - %this.addr = alloca %UntypedPtr* - store %UntypedPtr* %this, %UntypedPtr** %this.addr - %fdata.addr = alloca i8* - store i8* %fdata, i8** %fdata.addr - br label %code - -code: ; preds = %0 - %1 = load i8*, i8** %fdata.addr - %2 = load %UntypedPtr*, %UntypedPtr** %this.addr - %3 = getelementptr inbounds %UntypedPtr, %UntypedPtr* %2, i32 0, i32 0 - store i8* %1, i8** %3 - ret void -} - -; Function Attrs: alwaysinline nounwind -define internal void @ctor.64(%UntypedPtr* %this) #3 { - %this.addr = alloca %UntypedPtr* - store %UntypedPtr* %this, %UntypedPtr** %this.addr - br label %code - -code: ; preds = %0 - %1 = load %UntypedPtr*, %UntypedPtr** %this.addr - %2 = getelementptr inbounds %UntypedPtr, %UntypedPtr* %1, i32 0, i32 0 - store i8* null, i8** %2 - ret void -} - -; Function Attrs: alwaysinline nounwind -define internal void @ctor.65(%UntypedPtr* %this, %UntypedPtr* %other) #3 { - %this.addr = alloca %UntypedPtr* - store %UntypedPtr* %this, %UntypedPtr** %this.addr - %other.addr = alloca %UntypedPtr* - store %UntypedPtr* %other, %UntypedPtr** %other.addr - br label %code - -code: ; preds = %0 - %1 = load %UntypedPtr*, %UntypedPtr** %other.addr - %2 = getelementptr inbounds %UntypedPtr, %UntypedPtr* %1, i32 0, i32 0 - %3 = load i8*, i8** %2 - %4 = load %UntypedPtr*, %UntypedPtr** %this.addr - %5 = getelementptr inbounds %UntypedPtr, %UntypedPtr* %4, i32 0, i32 0 - store i8* %3, i8** %5 - ret void -} - -; Function Attrs: alwaysinline nounwind -define internal void @dtor.66(%UntypedPtr* %this) #3 { - %this.addr = alloca %UntypedPtr* - store %UntypedPtr* %this, %UntypedPtr** %this.addr - br label %code - -code: ; preds = %0 - ret void -} - -; Function Attrs: alwaysinline nounwind -define internal void @"=.67"(%UntypedPtr* %this, %UntypedPtr* %other) #3 { - %this.addr = alloca %UntypedPtr* - store %UntypedPtr* %this, %UntypedPtr** %this.addr - %other.addr = alloca %UntypedPtr* - store %UntypedPtr* %other, %UntypedPtr** %other.addr - br label %code - -code: ; preds = %0 - %1 = load %UntypedPtr*, %UntypedPtr** %other.addr - %2 = getelementptr inbounds %UntypedPtr, %UntypedPtr* %1, i32 0, i32 0 - %3 = load i8*, i8** %2 - %4 = load %UntypedPtr*, %UntypedPtr** %this.addr - %5 = getelementptr inbounds %UntypedPtr, %UntypedPtr* %4, i32 0, i32 0 - store i8* %3, i8** %5 - ret void -} - -; Function Attrs: alwaysinline nounwind -define internal i1 @"==.68"(%UntypedPtr* %this, %UntypedPtr* %other) #3 { - %this.addr = alloca %UntypedPtr* - store %UntypedPtr* %this, %UntypedPtr** %this.addr - %other.addr = alloca %UntypedPtr* - store %UntypedPtr* %other, %UntypedPtr** %other.addr - br label %code - -code: ; preds = %0 - %1 = load %UntypedPtr*, %UntypedPtr** %this.addr - %2 = getelementptr inbounds %UntypedPtr, %UntypedPtr* %1, i32 0, i32 0 - %3 = load i8*, i8** %2 - %4 = load %UntypedPtr*, %UntypedPtr** %other.addr - %5 = getelementptr inbounds %UntypedPtr, %UntypedPtr* %4, i32 0, i32 0 - %6 = load i8*, i8** %5 - %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) - ret i1 %7 -} - declare i8* @calloc(i64, i64) declare i8* @realloc(i8*, i64) @@ -3871,7 +3767,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.69(%EndLineHelperClass* %this) #3 { +define internal void @ctor.63(%EndLineHelperClass* %this) #3 { %this.addr = alloca %EndLineHelperClass* store %EndLineHelperClass* %this, %EndLineHelperClass** %this.addr br label %code @@ -3888,7 +3784,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.70(%EndLineHelperClass* %this) #3 { +define internal void @dtor.64(%EndLineHelperClass* %this) #3 { %this.addr = alloca %EndLineHelperClass* store %EndLineHelperClass* %this, %EndLineHelperClass** %this.addr br label %code @@ -3905,7 +3801,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.71(%FlushHelperClass* %this) #3 { +define internal void @ctor.65(%FlushHelperClass* %this) #3 { %this.addr = alloca %FlushHelperClass* store %FlushHelperClass* %this, %FlushHelperClass** %this.addr br label %code @@ -3922,7 +3818,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.72(%FlushHelperClass* %this) #3 { +define internal void @dtor.66(%FlushHelperClass* %this) #3 { %this.addr = alloca %FlushHelperClass* store %FlushHelperClass* %this, %FlushHelperClass** %this.addr br label %code @@ -3932,7 +3828,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.73(%EndLineHelperClass* %this, %EndLineHelperClass* %other) #3 { +define internal void @ctor.67(%EndLineHelperClass* %this, %EndLineHelperClass* %other) #3 { %this.addr = alloca %EndLineHelperClass* store %EndLineHelperClass* %this, %EndLineHelperClass** %this.addr %other.addr = alloca %EndLineHelperClass* @@ -3944,7 +3840,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.74"(%EndLineHelperClass* %this, %EndLineHelperClass* %other) #3 { +define internal void @"=.68"(%EndLineHelperClass* %this, %EndLineHelperClass* %other) #3 { %this.addr = alloca %EndLineHelperClass* store %EndLineHelperClass* %this, %EndLineHelperClass** %this.addr %other.addr = alloca %EndLineHelperClass* @@ -3956,7 +3852,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.75"(%EndLineHelperClass* %this, %EndLineHelperClass* %other) #3 { +define internal i1 @"==.69"(%EndLineHelperClass* %this, %EndLineHelperClass* %other) #3 { %this.addr = alloca %EndLineHelperClass* store %EndLineHelperClass* %this, %EndLineHelperClass** %this.addr %other.addr = alloca %EndLineHelperClass* @@ -3968,7 +3864,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.76(%FlushHelperClass* %this, %FlushHelperClass* %other) #3 { +define internal void @ctor.70(%FlushHelperClass* %this, %FlushHelperClass* %other) #3 { %this.addr = alloca %FlushHelperClass* store %FlushHelperClass* %this, %FlushHelperClass** %this.addr %other.addr = alloca %FlushHelperClass* @@ -3980,7 +3876,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.77"(%FlushHelperClass* %this, %FlushHelperClass* %other) #3 { +define internal void @"=.71"(%FlushHelperClass* %this, %FlushHelperClass* %other) #3 { %this.addr = alloca %FlushHelperClass* store %FlushHelperClass* %this, %FlushHelperClass** %this.addr %other.addr = alloca %FlushHelperClass* @@ -3992,7 +3888,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.78"(%FlushHelperClass* %this, %FlushHelperClass* %other) #3 { +define internal i1 @"==.72"(%FlushHelperClass* %this, %FlushHelperClass* %other) #3 { %this.addr = alloca %FlushHelperClass* store %FlushHelperClass* %this, %FlushHelperClass** %this.addr %other.addr = alloca %FlushHelperClass* @@ -4004,7 +3900,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.79(%StreamRefWrapperHelperClass* %this) #3 { +define internal void @ctor.73(%StreamRefWrapperHelperClass* %this) #3 { %this.addr = alloca %StreamRefWrapperHelperClass* store %StreamRefWrapperHelperClass* %this, %StreamRefWrapperHelperClass** %this.addr br label %code @@ -4017,7 +3913,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.80(%StreamRefWrapperHelperClass* %this, %StreamRefWrapperHelperClass* %other) #3 { +define internal void @ctor.74(%StreamRefWrapperHelperClass* %this, %StreamRefWrapperHelperClass* %other) #3 { %this.addr = alloca %StreamRefWrapperHelperClass* store %StreamRefWrapperHelperClass* %this, %StreamRefWrapperHelperClass** %this.addr %other.addr = alloca %StreamRefWrapperHelperClass* @@ -4035,7 +3931,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.81(%StreamRefWrapperHelperClass* %this) #3 { +define internal void @dtor.75(%StreamRefWrapperHelperClass* %this) #3 { %this.addr = alloca %StreamRefWrapperHelperClass* store %StreamRefWrapperHelperClass* %this, %StreamRefWrapperHelperClass** %this.addr br label %code @@ -4045,7 +3941,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.82"(%StreamRefWrapperHelperClass* %this, %StreamRefWrapperHelperClass* %other) #3 { +define internal void @"=.76"(%StreamRefWrapperHelperClass* %this, %StreamRefWrapperHelperClass* %other) #3 { %this.addr = alloca %StreamRefWrapperHelperClass* store %StreamRefWrapperHelperClass* %this, %StreamRefWrapperHelperClass** %this.addr %other.addr = alloca %StreamRefWrapperHelperClass* @@ -4063,7 +3959,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.83"(%StreamRefWrapperHelperClass* %this, %StreamRefWrapperHelperClass* %other) #3 { +define internal i1 @"==.77"(%StreamRefWrapperHelperClass* %this, %StreamRefWrapperHelperClass* %other) #3 { %this.addr = alloca %StreamRefWrapperHelperClass* store %StreamRefWrapperHelperClass* %this, %StreamRefWrapperHelperClass** %this.addr %other.addr = alloca %StreamRefWrapperHelperClass* @@ -4089,7 +3985,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.84(%ConsoleOutputStream* %this) #3 { +define internal void @ctor.78(%ConsoleOutputStream* %this) #3 { %this.addr = alloca %ConsoleOutputStream* store %ConsoleOutputStream* %this, %ConsoleOutputStream** %this.addr br label %code @@ -4106,7 +4002,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.85(%ConsoleOutputStream* %this) #3 { +define internal void @dtor.79(%ConsoleOutputStream* %this) #3 { %this.addr = alloca %ConsoleOutputStream* store %ConsoleOutputStream* %this, %ConsoleOutputStream** %this.addr br label %code @@ -4116,7 +4012,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.86(%ConsoleOutputStream* %this, %ConsoleOutputStream* %other) #3 { +define internal void @ctor.80(%ConsoleOutputStream* %this, %ConsoleOutputStream* %other) #3 { %this.addr = alloca %ConsoleOutputStream* store %ConsoleOutputStream* %this, %ConsoleOutputStream** %this.addr %other.addr = alloca %ConsoleOutputStream* @@ -4128,7 +4024,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.87"(%ConsoleOutputStream* %this, %ConsoleOutputStream* %other) #3 { +define internal void @"=.81"(%ConsoleOutputStream* %this, %ConsoleOutputStream* %other) #3 { %this.addr = alloca %ConsoleOutputStream* store %ConsoleOutputStream* %this, %ConsoleOutputStream** %this.addr %other.addr = alloca %ConsoleOutputStream* @@ -4140,7 +4036,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.88"(%ConsoleOutputStream* %this, %ConsoleOutputStream* %other) #3 { +define internal i1 @"==.82"(%ConsoleOutputStream* %this, %ConsoleOutputStream* %other) #3 { %this.addr = alloca %ConsoleOutputStream* store %ConsoleOutputStream* %this, %ConsoleOutputStream** %this.addr %other.addr = alloca %ConsoleOutputStream* @@ -4166,7 +4062,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"<<<.89"(%ConsoleOutputStream %this, i1 %x) #3 { +define internal void @"<<<.83"(%ConsoleOutputStream %this, i1 %x) #3 { %this.addr = alloca %ConsoleOutputStream store %ConsoleOutputStream %this, %ConsoleOutputStream* %this.addr %x.addr = alloca i1 @@ -4189,7 +4085,7 @@ if_then: ; preds = %if_block store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str, i32 0, i32 0), i8** %3 store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str, i32 0, i32 4), i8** %4 %5 = load %StringRef, %StringRef* %tmp.StringRef - call void @"<<<.90"(%ConsoleOutputStream %2, %StringRef %5) + call void @"<<<.84"(%ConsoleOutputStream %2, %StringRef %5) br label %if_end if_else: ; preds = %if_block @@ -4199,7 +4095,7 @@ if_else: ; preds = %if_block store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.5, i32 0, i32 0), i8** %7 store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.5, i32 0, i32 5), i8** %8 %9 = load %StringRef, %StringRef* %tmp.StringRef1 - call void @"<<<.90"(%ConsoleOutputStream %6, %StringRef %9) + call void @"<<<.84"(%ConsoleOutputStream %6, %StringRef %9) br label %if_end if_end: ; preds = %if_else, %if_then @@ -4207,7 +4103,7 @@ if_end: ; preds = %if_else, %if_then } ; Function Attrs: alwaysinline nounwind -define internal void @"<<<.90"(%ConsoleOutputStream %this, %StringRef %x) #3 { +define internal void @"<<<.84"(%ConsoleOutputStream %this, %StringRef %x) #3 { %this.addr = alloca %ConsoleOutputStream store %ConsoleOutputStream %this, %ConsoleOutputStream* %this.addr %x.addr = alloca %StringRef @@ -4256,7 +4152,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.91(%MainParameters* %this) #3 { +define internal void @ctor.85(%MainParameters* %this) #3 { %this.addr = alloca %MainParameters* store %MainParameters* %this, %MainParameters** %this.addr br label %code @@ -4264,15 +4160,15 @@ define internal void @ctor.91(%MainParameters* %this) #3 { code: ; preds = %0 %1 = load %MainParameters*, %MainParameters** %this.addr %2 = getelementptr inbounds %MainParameters, %MainParameters* %1, i32 0, i32 0 - call void @ctor.92(%CStrPtr* %2) + call void @ctor.86(%CStrPtr* %2) %3 = load %MainParameters*, %MainParameters** %this.addr %4 = getelementptr inbounds %MainParameters, %MainParameters* %3, i32 0, i32 1 - call void @ctor.92(%CStrPtr* %4) + call void @ctor.86(%CStrPtr* %4) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.92(%CStrPtr* %this) #3 { +define internal void @ctor.86(%CStrPtr* %this) #3 { %this.addr = alloca %CStrPtr* store %CStrPtr* %this, %CStrPtr** %this.addr br label %code @@ -4285,7 +4181,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.93(%MainParameters* %this, %MainParameters* %other) #3 { +define internal void @ctor.87(%MainParameters* %this, %MainParameters* %other) #3 { %this.addr = alloca %MainParameters* store %MainParameters* %this, %MainParameters** %this.addr %other.addr = alloca %MainParameters* @@ -4297,17 +4193,17 @@ code: ; preds = %0 %2 = getelementptr inbounds %MainParameters, %MainParameters* %1, i32 0, i32 0 %3 = load %MainParameters*, %MainParameters** %other.addr %4 = getelementptr inbounds %MainParameters, %MainParameters* %3, i32 0, i32 0 - call void @ctor.94(%CStrPtr* %2, %CStrPtr* %4) + call void @ctor.88(%CStrPtr* %2, %CStrPtr* %4) %5 = load %MainParameters*, %MainParameters** %this.addr %6 = getelementptr inbounds %MainParameters, %MainParameters* %5, i32 0, i32 1 %7 = load %MainParameters*, %MainParameters** %other.addr %8 = getelementptr inbounds %MainParameters, %MainParameters* %7, i32 0, i32 1 - call void @ctor.94(%CStrPtr* %6, %CStrPtr* %8) + call void @ctor.88(%CStrPtr* %6, %CStrPtr* %8) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.94(%CStrPtr* %this, %CStrPtr* %other) #3 { +define internal void @ctor.88(%CStrPtr* %this, %CStrPtr* %other) #3 { %this.addr = alloca %CStrPtr* store %CStrPtr* %this, %CStrPtr** %this.addr %other.addr = alloca %CStrPtr* @@ -4325,7 +4221,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.95(%MainParameters* %this) #3 { +define internal void @dtor.89(%MainParameters* %this) #3 { %this.addr = alloca %MainParameters* store %MainParameters* %this, %MainParameters** %this.addr br label %code @@ -4335,7 +4231,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.96"(%MainParameters* %this, %MainParameters* %other) #3 { +define internal void @"=.90"(%MainParameters* %this, %MainParameters* %other) #3 { %this.addr = alloca %MainParameters* store %MainParameters* %this, %MainParameters** %this.addr %other.addr = alloca %MainParameters* @@ -4347,17 +4243,17 @@ code: ; preds = %0 %2 = getelementptr inbounds %MainParameters, %MainParameters* %1, i32 0, i32 0 %3 = load %MainParameters*, %MainParameters** %other.addr %4 = getelementptr inbounds %MainParameters, %MainParameters* %3, i32 0, i32 0 - call void @"=.97"(%CStrPtr* %2, %CStrPtr* %4) + call void @"=.91"(%CStrPtr* %2, %CStrPtr* %4) %5 = load %MainParameters*, %MainParameters** %this.addr %6 = getelementptr inbounds %MainParameters, %MainParameters* %5, i32 0, i32 1 %7 = load %MainParameters*, %MainParameters** %other.addr %8 = getelementptr inbounds %MainParameters, %MainParameters* %7, i32 0, i32 1 - call void @"=.97"(%CStrPtr* %6, %CStrPtr* %8) + call void @"=.91"(%CStrPtr* %6, %CStrPtr* %8) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @"=.97"(%CStrPtr* %this, %CStrPtr* %other) #3 { +define internal void @"=.91"(%CStrPtr* %this, %CStrPtr* %other) #3 { %this.addr = alloca %CStrPtr* store %CStrPtr* %this, %CStrPtr** %this.addr %other.addr = alloca %CStrPtr* @@ -4375,7 +4271,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.98"(%MainParameters* %this, %MainParameters* %other) #3 { +define internal i1 @"==.92"(%MainParameters* %this, %MainParameters* %other) #3 { %this.addr = alloca %MainParameters* store %MainParameters* %this, %MainParameters** %this.addr %other.addr = alloca %MainParameters* @@ -4387,7 +4283,7 @@ code: ; preds = %0 %2 = getelementptr inbounds %MainParameters, %MainParameters* %1, i32 0, i32 0 %3 = load %MainParameters*, %MainParameters** %other.addr %4 = getelementptr inbounds %MainParameters, %MainParameters* %3, i32 0, i32 0 - %5 = call i1 @"==.99"(%CStrPtr* %2, %CStrPtr* %4) + %5 = call i1 @"==.93"(%CStrPtr* %2, %CStrPtr* %4) br i1 %5, label %cond.true, label %cond.false cond.true: ; preds = %code @@ -4395,7 +4291,7 @@ cond.true: ; preds = %code %7 = getelementptr inbounds %MainParameters, %MainParameters* %6, i32 0, i32 1 %8 = load %MainParameters*, %MainParameters** %other.addr %9 = getelementptr inbounds %MainParameters, %MainParameters* %8, i32 0, i32 1 - %10 = call i1 @"==.99"(%CStrPtr* %7, %CStrPtr* %9) + %10 = call i1 @"==.93"(%CStrPtr* %7, %CStrPtr* %9) br label %cond.end cond.false: ; preds = %code @@ -4407,7 +4303,7 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.99"(%CStrPtr* %this, %CStrPtr* %other) #3 { +define internal i1 @"==.93"(%CStrPtr* %this, %CStrPtr* %other) #3 { %this.addr = alloca %CStrPtr* store %CStrPtr* %this, %CStrPtr** %this.addr %other.addr = alloca %CStrPtr* @@ -4428,7 +4324,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @ctor.100(%MainParameters* %this, i32 %argc, i8** %argv) #4 { +define internal void @ctor.94(%MainParameters* %this, i32 %argc, i8** %argv) #4 { %this.addr = alloca %MainParameters* store %MainParameters* %this, %MainParameters** %this.addr %argc.addr = alloca i32 @@ -4437,21 +4333,21 @@ define internal void @ctor.100(%MainParameters* %this, i32 %argc, i8** %argv) #4 store i8** %argv, i8*** %argv.addr %"$tmpC" = alloca %CStrPtr %"$tmpC1" = alloca %CStrPtr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 %1 = load %MainParameters*, %MainParameters** %this.addr %2 = getelementptr inbounds %MainParameters, %MainParameters* %1, i32 0, i32 0 - call void @ctor.92(%CStrPtr* %2) + call void @ctor.86(%CStrPtr* %2) %3 = load %MainParameters*, %MainParameters** %this.addr %4 = getelementptr inbounds %MainParameters, %MainParameters* %3, i32 0, i32 1 - call void @ctor.92(%CStrPtr* %4) + call void @ctor.86(%CStrPtr* %4) %5 = load %MainParameters*, %MainParameters** %this.addr %6 = getelementptr inbounds %MainParameters, %MainParameters* %5, i32 0, i32 0 %7 = load i8**, i8*** %argv.addr call void @fromArgvPtr(%CStrPtr* %"$tmpC", i8** %7) - call void @"=.97"(%CStrPtr* %6, %CStrPtr* %"$tmpC") + call void @"=.91"(%CStrPtr* %6, %CStrPtr* %"$tmpC") %8 = load %MainParameters*, %MainParameters** %this.addr %9 = getelementptr inbounds %MainParameters, %MainParameters* %8, i32 0, i32 1 %10 = load %MainParameters*, %MainParameters** %this.addr @@ -4459,10 +4355,10 @@ code: ; preds = %0 %12 = load %CStrPtr, %CStrPtr* %11 %13 = load i32, i32* %argc.addr %14 = zext i32 %13 to i64 - store i64 %14, i64* %tmp.v - %15 = load i64, i64* %tmp.v - call void @"+.103"(%CStrPtr* %"$tmpC1", %CStrPtr %12, i64 %15) - call void @"=.97"(%CStrPtr* %9, %CStrPtr* %"$tmpC1") + store i64 %14, i64* %tmp.this + %15 = load i64, i64* %tmp.this + call void @"+.97"(%CStrPtr* %"$tmpC1", %CStrPtr %12, i64 %15) + call void @"=.91"(%CStrPtr* %9, %CStrPtr* %"$tmpC1") ret void } @@ -4478,12 +4374,12 @@ code: ; preds = %0 %1 = load %CStrPtr*, %CStrPtr** %_result.addr %2 = load i8**, i8*** %argv.addr %3 = bitcast i8** %2 to %CStr* - call void @ctor.101(%CStrPtr* %1, %CStr* %3) + call void @ctor.95(%CStrPtr* %1, %CStr* %3) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.101(%CStrPtr* %this, %CStr* %fptr) #3 { +define internal void @ctor.95(%CStrPtr* %this, %CStr* %fptr) #3 { %this.addr = alloca %CStrPtr* store %CStrPtr* %this, %CStrPtr** %this.addr %fptr.addr = alloca %CStr* @@ -4499,7 +4395,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.102(%CStrPtr* %this) #3 { +define internal void @dtor.96(%CStrPtr* %this) #3 { %this.addr = alloca %CStrPtr* store %CStrPtr* %this, %CStrPtr** %this.addr br label %code @@ -4509,7 +4405,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @"+.103"(%CStrPtr* sret %_result, %CStrPtr %p, i64 %n) #4 { +define internal void @"+.97"(%CStrPtr* sret %_result, %CStrPtr %p, i64 %n) #4 { %_result.addr = alloca %CStrPtr* store %CStrPtr* %_result, %CStrPtr** %_result.addr %p.addr = alloca %CStrPtr @@ -4541,7 +4437,7 @@ code: ; preds = %0 %1 = load %CStrPtr*, %CStrPtr** %_result.addr %2 = load i8*, i8** %p.addr %3 = bitcast i8* %2 to %CStr* - call void @ctor.101(%CStrPtr* %1, %CStr* %3) + call void @ctor.95(%CStrPtr* %1, %CStr* %3) ret void } @@ -4559,23 +4455,23 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i1 @isEmpty.104(%MainParameters %this) #4 { +define internal i1 @isEmpty.98(%MainParameters %this) #4 { %this.addr = alloca %MainParameters store %MainParameters %this, %MainParameters* %this.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 %1 = load %MainParameters, %MainParameters* %this.addr - %2 = call i64 @size.105(%MainParameters %1) - store i64 0, i64* %tmp.v - %3 = load i64, i64* %tmp.v + %2 = call i64 @size.99(%MainParameters %1) + store i64 0, i64* %tmp.this + %3 = load i64, i64* %tmp.this %4 = icmp eq i64 %2, %3 ret i1 %4 } ; Function Attrs: inlinehint nounwind -define internal i64 @size.105(%MainParameters %this) #4 { +define internal i64 @size.99(%MainParameters %this) #4 { %this.addr = alloca %MainParameters store %MainParameters %this, %MainParameters* %this.addr br label %code @@ -4595,7 +4491,7 @@ define internal i64 @-(%CStrPtr %p, %CStrPtr %q) #4 { store %CStrPtr %p, %CStrPtr* %p.addr %q.addr = alloca %CStrPtr store %CStrPtr %q, %CStrPtr* %q.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -4604,71 +4500,61 @@ code: ; preds = %0 %3 = load %CStrPtr, %CStrPtr* %q.addr %4 = call i8* @toBytePtr(%CStrPtr %3) %5 = call i64 @ptrDiff(i8* %2, i8* %4) - store i64 %5, i64* %tmp.v - %6 = load i64, i64* %tmp.v + store i64 %5, i64* %tmp.this + %6 = load i64, i64* %tmp.this %7 = call i64 @_SizeType_opDiv(i64 %6, i64 8) ret i64 %7 } ; Function Attrs: inlinehint nounwind -define internal void @front.106(%StringRef* sret %_result, %MainParameters %this) #4 { - %_result.addr = alloca %StringRef* - store %StringRef* %_result, %StringRef** %_result.addr +define internal %StringRef @front.100(%MainParameters %this) #4 { %this.addr = alloca %MainParameters store %MainParameters %this, %MainParameters* %this.addr br label %code code: ; preds = %0 - %1 = load %StringRef*, %StringRef** %_result.addr - %2 = getelementptr inbounds %MainParameters, %MainParameters* %this.addr, i32 0, i32 0 - %3 = load %CStrPtr, %CStrPtr* %2 - call void @toStringRef(%StringRef* %1, %CStrPtr %3) - ret void + %1 = getelementptr inbounds %MainParameters, %MainParameters* %this.addr, i32 0, i32 0 + %2 = load %CStrPtr, %CStrPtr* %1 + %3 = call %StringRef @toStringRef(%CStrPtr %2) + ret %StringRef %3 } ; Function Attrs: inlinehint nounwind -define internal void @toStringRef(%StringRef* sret %_result, %CStrPtr %p) #4 { - %_result.addr = alloca %StringRef* - store %StringRef* %_result, %StringRef** %_result.addr +define internal %StringRef @toStringRef(%CStrPtr %p) #4 { %p.addr = alloca %CStrPtr store %CStrPtr %p, %CStrPtr* %p.addr br label %code code: ; preds = %0 - %1 = load %StringRef*, %StringRef** %_result.addr - %2 = getelementptr inbounds %CStrPtr, %CStrPtr* %p.addr, i32 0, i32 0 - %3 = load %CStr*, %CStr** %2 - %4 = getelementptr inbounds %CStr, %CStr* %3, i32 0, i32 0 - %5 = load i8*, i8** %4 - %6 = call %StringRef @_String_fromCString(i8* %5) - call void @ctor.56(%StringRef* %1, %StringRef %6) - ret void + %1 = getelementptr inbounds %CStrPtr, %CStrPtr* %p.addr, i32 0, i32 0 + %2 = load %CStr*, %CStr** %1 + %3 = getelementptr inbounds %CStr, %CStr* %2, i32 0, i32 0 + %4 = load i8*, i8** %3 + %5 = call %StringRef @_String_fromCString(i8* %4) + ret %StringRef %5 } ; Function Attrs: inlinehint nounwind -define internal void @back.107(%StringRef* sret %_result, %MainParameters %this) #4 { - %_result.addr = alloca %StringRef* - store %StringRef* %_result, %StringRef** %_result.addr +define internal %StringRef @back.101(%MainParameters %this) #4 { %this.addr = alloca %MainParameters store %MainParameters %this, %MainParameters* %this.addr %"$tmpC" = alloca %CStrPtr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 - %1 = load %StringRef*, %StringRef** %_result.addr - %2 = getelementptr inbounds %MainParameters, %MainParameters* %this.addr, i32 0, i32 1 - %3 = load %CStrPtr, %CStrPtr* %2 - store i64 1, i64* %tmp.v - %4 = load i64, i64* %tmp.v - call void @-.108(%CStrPtr* %"$tmpC", %CStrPtr %3, i64 %4) - %5 = load %CStrPtr, %CStrPtr* %"$tmpC" - call void @toStringRef(%StringRef* %1, %CStrPtr %5) - ret void + %1 = getelementptr inbounds %MainParameters, %MainParameters* %this.addr, i32 0, i32 1 + %2 = load %CStrPtr, %CStrPtr* %1 + store i64 1, i64* %tmp.this + %3 = load i64, i64* %tmp.this + call void @-.102(%CStrPtr* %"$tmpC", %CStrPtr %2, i64 %3) + %4 = load %CStrPtr, %CStrPtr* %"$tmpC" + %5 = call %StringRef @toStringRef(%CStrPtr %4) + ret %StringRef %5 } ; Function Attrs: inlinehint nounwind -define internal void @-.108(%CStrPtr* sret %_result, %CStrPtr %p, i64 %n) #4 { +define internal void @-.102(%CStrPtr* sret %_result, %CStrPtr %p, i64 %n) #4 { %_result.addr = alloca %CStrPtr* store %CStrPtr* %_result, %CStrPtr** %_result.addr %p.addr = alloca %CStrPtr @@ -4689,25 +4575,20 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @"().109"(%StringRef* sret %_result, %MainParameters %this) #4 { - %_result.addr = alloca %StringRef* - store %StringRef* %_result, %StringRef** %_result.addr +define internal %StringRef @"().103"(%MainParameters %this) #4 { %this.addr = alloca %MainParameters store %MainParameters %this, %MainParameters* %this.addr br label %code code: ; preds = %0 - %1 = load %StringRef*, %StringRef** %_result.addr - %2 = getelementptr inbounds %MainParameters, %MainParameters* %this.addr, i32 0, i32 0 - %3 = load %CStrPtr, %CStrPtr* %2 - call void @toStringRef(%StringRef* %1, %CStrPtr %3) - ret void + %1 = getelementptr inbounds %MainParameters, %MainParameters* %this.addr, i32 0, i32 0 + %2 = load %CStrPtr, %CStrPtr* %1 + %3 = call %StringRef @toStringRef(%CStrPtr %2) + ret %StringRef %3 } ; Function Attrs: inlinehint nounwind -define internal void @"().110"(%StringRef* sret %_result, %MainParameters %this, i64 %n) #4 { - %_result.addr = alloca %StringRef* - store %StringRef* %_result, %StringRef** %_result.addr +define internal %StringRef @"().104"(%MainParameters %this, i64 %n) #4 { %this.addr = alloca %MainParameters store %MainParameters %this, %MainParameters* %this.addr %n.addr = alloca i64 @@ -4716,22 +4597,21 @@ define internal void @"().110"(%StringRef* sret %_result, %MainParameters %this, br label %code code: ; preds = %0 - %1 = load %StringRef*, %StringRef** %_result.addr - %2 = getelementptr inbounds %MainParameters, %MainParameters* %this.addr, i32 0, i32 0 - %3 = load %CStrPtr, %CStrPtr* %2 - %4 = load i64, i64* %n.addr - call void @"+.103"(%CStrPtr* %"$tmpC", %CStrPtr %3, i64 %4) - %5 = load %CStrPtr, %CStrPtr* %"$tmpC" - call void @toStringRef(%StringRef* %1, %CStrPtr %5) - ret void + %1 = getelementptr inbounds %MainParameters, %MainParameters* %this.addr, i32 0, i32 0 + %2 = load %CStrPtr, %CStrPtr* %1 + %3 = load i64, i64* %n.addr + call void @"+.97"(%CStrPtr* %"$tmpC", %CStrPtr %2, i64 %3) + %4 = load %CStrPtr, %CStrPtr* %"$tmpC" + %5 = call %StringRef @toStringRef(%CStrPtr %4) + ret %StringRef %5 } ; Function Attrs: alwaysinline nounwind -define internal void @popFront.111(%MainParameters* %this) #3 { +define internal void @popFront.105(%MainParameters* %this) #3 { %this.addr = alloca %MainParameters* store %MainParameters* %this, %MainParameters** %this.addr %"$tmpC" = alloca %CStrPtr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -4740,19 +4620,19 @@ code: ; preds = %0 %3 = load %MainParameters*, %MainParameters** %this.addr %4 = getelementptr inbounds %MainParameters, %MainParameters* %3, i32 0, i32 0 %5 = load %CStrPtr, %CStrPtr* %4 - store i64 1, i64* %tmp.v - %6 = load i64, i64* %tmp.v - call void @"+.103"(%CStrPtr* %"$tmpC", %CStrPtr %5, i64 %6) - call void @"=.97"(%CStrPtr* %2, %CStrPtr* %"$tmpC") + store i64 1, i64* %tmp.this + %6 = load i64, i64* %tmp.this + call void @"+.97"(%CStrPtr* %"$tmpC", %CStrPtr %5, i64 %6) + call void @"=.91"(%CStrPtr* %2, %CStrPtr* %"$tmpC") ret void } ; Function Attrs: alwaysinline nounwind -define internal void @popBack.112(%MainParameters* %this) #3 { +define internal void @popBack.106(%MainParameters* %this) #3 { %this.addr = alloca %MainParameters* store %MainParameters* %this, %MainParameters** %this.addr %"$tmpC" = alloca %CStrPtr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -4761,15 +4641,15 @@ code: ; preds = %0 %3 = load %MainParameters*, %MainParameters** %this.addr %4 = getelementptr inbounds %MainParameters, %MainParameters* %3, i32 0, i32 1 %5 = load %CStrPtr, %CStrPtr* %4 - store i64 1, i64* %tmp.v - %6 = load i64, i64* %tmp.v - call void @-.108(%CStrPtr* %"$tmpC", %CStrPtr %5, i64 %6) - call void @"=.97"(%CStrPtr* %2, %CStrPtr* %"$tmpC") + store i64 1, i64* %tmp.this + %6 = load i64, i64* %tmp.this + call void @-.102(%CStrPtr* %"$tmpC", %CStrPtr %5, i64 %6) + call void @"=.91"(%CStrPtr* %2, %CStrPtr* %"$tmpC") ret void } ; Function Attrs: alwaysinline nounwind -define internal void @popFront.113(%MainParameters* %this, i64 %n) #3 { +define internal void @popFront.107(%MainParameters* %this, i64 %n) #3 { %this.addr = alloca %MainParameters* store %MainParameters* %this, %MainParameters** %this.addr %n.addr = alloca i64 @@ -4784,13 +4664,13 @@ code: ; preds = %0 %4 = getelementptr inbounds %MainParameters, %MainParameters* %3, i32 0, i32 0 %5 = load %CStrPtr, %CStrPtr* %4 %6 = load i64, i64* %n.addr - call void @"+.103"(%CStrPtr* %"$tmpC", %CStrPtr %5, i64 %6) - call void @"=.97"(%CStrPtr* %2, %CStrPtr* %"$tmpC") + call void @"+.97"(%CStrPtr* %"$tmpC", %CStrPtr %5, i64 %6) + call void @"=.91"(%CStrPtr* %2, %CStrPtr* %"$tmpC") ret void } ; Function Attrs: alwaysinline nounwind -define internal void @popBack.114(%MainParameters* %this, i64 %n) #3 { +define internal void @popBack.108(%MainParameters* %this, i64 %n) #3 { %this.addr = alloca %MainParameters* store %MainParameters* %this, %MainParameters** %this.addr %n.addr = alloca i64 @@ -4805,13 +4685,13 @@ code: ; preds = %0 %4 = getelementptr inbounds %MainParameters, %MainParameters* %3, i32 0, i32 1 %5 = load %CStrPtr, %CStrPtr* %4 %6 = load i64, i64* %n.addr - call void @-.108(%CStrPtr* %"$tmpC", %CStrPtr %5, i64 %6) - call void @"=.97"(%CStrPtr* %2, %CStrPtr* %"$tmpC") + call void @-.102(%CStrPtr* %"$tmpC", %CStrPtr %5, i64 %6) + call void @"=.91"(%CStrPtr* %2, %CStrPtr* %"$tmpC") ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.115(%CStr* %this) #3 { +define internal void @ctor.109(%CStr* %this) #3 { %this.addr = alloca %CStr* store %CStr* %this, %CStr** %this.addr br label %code @@ -4824,7 +4704,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.116(%CStr* %this, %CStr* %other) #3 { +define internal void @ctor.110(%CStr* %this, %CStr* %other) #3 { %this.addr = alloca %CStr* store %CStr* %this, %CStr** %this.addr %other.addr = alloca %CStr* @@ -4842,7 +4722,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.117(%CStr* %this) #3 { +define internal void @dtor.111(%CStr* %this) #3 { %this.addr = alloca %CStr* store %CStr* %this, %CStr** %this.addr br label %code @@ -4852,7 +4732,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.118"(%CStr* %this, %CStr* %other) #3 { +define internal void @"=.112"(%CStr* %this, %CStr* %other) #3 { %this.addr = alloca %CStr* store %CStr* %this, %CStr** %this.addr %other.addr = alloca %CStr* @@ -4870,7 +4750,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.119"(%CStr* %this, %CStr* %other) #3 { +define internal i1 @"==.113"(%CStr* %this, %CStr* %other) #3 { %this.addr = alloca %CStr* store %CStr* %this, %CStr** %this.addr %other.addr = alloca %CStr* @@ -4892,7 +4772,7 @@ define internal void @__global_ctor.6() { br label %code code: ; preds = %0 - call void @ctor.91(%MainParameters* @programArgs.3) + call void @ctor.85(%MainParameters* @programArgs.3) ret void } @@ -4949,7 +4829,7 @@ code: ; preds = %0 declare double @atof(i8*) ; Function Attrs: alwaysinline nounwind -define internal void @ctor.134(%ExternalErrorReporter* %this) #3 { +define internal void @ctor.128(%ExternalErrorReporter* %this) #3 { %this.addr = alloca %ExternalErrorReporter* store %ExternalErrorReporter* %this, %ExternalErrorReporter** %this.addr br label %code @@ -4959,7 +4839,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.135(%ExternalErrorReporter* %this, %ExternalErrorReporter* %other) #3 { +define internal void @ctor.129(%ExternalErrorReporter* %this, %ExternalErrorReporter* %other) #3 { %this.addr = alloca %ExternalErrorReporter* store %ExternalErrorReporter* %this, %ExternalErrorReporter** %this.addr %other.addr = alloca %ExternalErrorReporter* @@ -4971,7 +4851,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.136(%ExternalErrorReporter* %this) #3 { +define internal void @dtor.130(%ExternalErrorReporter* %this) #3 { %this.addr = alloca %ExternalErrorReporter* store %ExternalErrorReporter* %this, %ExternalErrorReporter** %this.addr br label %code @@ -4981,7 +4861,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.137"(%ExternalErrorReporter* %this, %ExternalErrorReporter* %other) #3 { +define internal void @"=.131"(%ExternalErrorReporter* %this, %ExternalErrorReporter* %other) #3 { %this.addr = alloca %ExternalErrorReporter* store %ExternalErrorReporter* %this, %ExternalErrorReporter** %this.addr %other.addr = alloca %ExternalErrorReporter* @@ -4993,7 +4873,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.138"(%ExternalErrorReporter* %this, %ExternalErrorReporter* %other) #3 { +define internal i1 @"==.132"(%ExternalErrorReporter* %this, %ExternalErrorReporter* %other) #3 { %this.addr = alloca %ExternalErrorReporter* store %ExternalErrorReporter* %this, %ExternalErrorReporter** %this.addr %other.addr = alloca %ExternalErrorReporter* @@ -5012,13 +4892,11 @@ define internal void @reportError(%ExternalErrorReporter* %this, %Location %loc, store %Location %loc, %Location* %loc.addr %msg.addr = alloca %String* store %String* %msg, %String** %msg.addr - %"$tmpC" = alloca %StringRef br label %code code: ; preds = %0 %1 = load %String*, %String** %msg.addr - call void @asStringRef(%StringRef* %"$tmpC", %String* %1) - %2 = load %StringRef, %StringRef* %"$tmpC" + %2 = call %StringRef @asStringRef(%String* %1) call void @comp_parser_reportError(%Location* %loc.addr, %StringRef %2) ret void } @@ -5026,25 +4904,24 @@ code: ; preds = %0 declare void @comp_parser_reportError(%Location*, %StringRef) ; Function Attrs: inlinehint nounwind -define internal void @asStringRef(%StringRef* sret %_result, %String* %this) #4 { - %_result.addr = alloca %StringRef* - store %StringRef* %_result, %StringRef** %_result.addr +define internal %StringRef @asStringRef(%String* %this) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr + %tmp.this = alloca %StringRef br label %code code: ; preds = %0 - %1 = load %StringRef*, %StringRef** %_result.addr - %2 = load %String*, %String** %this.addr - %3 = getelementptr inbounds %String, %String* %2, i32 0, i32 0 - %4 = load %"RawPtr[Char]", %"RawPtr[Char]"* %3 - %5 = call i8* @bytePtr(%"RawPtr[Char]" %4) - %6 = load %String*, %String** %this.addr - %7 = getelementptr inbounds %String, %String* %6, i32 0, i32 1 - %8 = load %"RawPtr[Char]", %"RawPtr[Char]"* %7 - %9 = call i8* @bytePtr(%"RawPtr[Char]" %8) - call void @ctor.57(%StringRef* %1, i8* %5, i8* %9) - ret void + %1 = load %String*, %String** %this.addr + %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 0 + %3 = load %"RawPtr[Char]", %"RawPtr[Char]"* %2 + %4 = call i8* @bytePtr(%"RawPtr[Char]" %3) + %5 = load %String*, %String** %this.addr + %6 = getelementptr inbounds %String, %String* %5, i32 0, i32 1 + %7 = load %"RawPtr[Char]", %"RawPtr[Char]"* %6 + %8 = call i8* @bytePtr(%"RawPtr[Char]" %7) + call void @ctor.57(%StringRef* %tmp.this, i8* %4, i8* %8) + %9 = load %StringRef, %StringRef* %tmp.this + ret %StringRef %9 } ; Function Attrs: inlinehint nounwind @@ -5060,7 +4937,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.139(%_CharSource* %this) #3 { +define internal void @ctor.133(%_CharSource* %this) #3 { %this.addr = alloca %_CharSource* store %_CharSource* %this, %_CharSource** %this.addr br label %code @@ -5076,7 +4953,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.140(%_CharSource* %this, %_CharSource* %other) #3 { +define internal void @ctor.134(%_CharSource* %this, %_CharSource* %other) #3 { %this.addr = alloca %_CharSource* store %_CharSource* %this, %_CharSource** %this.addr %other.addr = alloca %_CharSource* @@ -5100,7 +4977,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.141(%_CharSource* %this) #3 { +define internal void @dtor.135(%_CharSource* %this) #3 { %this.addr = alloca %_CharSource* store %_CharSource* %this, %_CharSource** %this.addr br label %code @@ -5110,7 +4987,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.142"(%_CharSource* %this, %_CharSource* %other) #3 { +define internal void @"=.136"(%_CharSource* %this, %_CharSource* %other) #3 { %this.addr = alloca %_CharSource* store %_CharSource* %this, %_CharSource** %this.addr %other.addr = alloca %_CharSource* @@ -5134,7 +5011,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.143"(%_CharSource* %this, %_CharSource* %other) #3 { +define internal i1 @"==.137"(%_CharSource* %this, %_CharSource* %other) #3 { %this.addr = alloca %_CharSource* store %_CharSource* %this, %_CharSource** %this.addr %other.addr = alloca %_CharSource* @@ -5156,22 +5033,23 @@ code: ; preds = %0 cond.true: ; preds = %code %10 = load %_CharSource*, %_CharSource** %this.addr %11 = getelementptr inbounds %_CharSource, %_CharSource* %10, i32 0, i32 1 - %12 = load %_CharSource*, %_CharSource** %other.addr - %13 = getelementptr inbounds %_CharSource, %_CharSource* %12, i32 0, i32 1 - %14 = load %StringRef, %StringRef* %13 - %15 = call i1 @"=="(%StringRef* %11, %StringRef %14) + %12 = load %StringRef, %StringRef* %11 + %13 = load %_CharSource*, %_CharSource** %other.addr + %14 = getelementptr inbounds %_CharSource, %_CharSource* %13, i32 0, i32 1 + %15 = load %StringRef, %StringRef* %14 + %16 = call i1 @"=="(%StringRef %12, %StringRef %15) br label %cond.end cond.false: ; preds = %code br label %cond.end cond.end: ; preds = %cond.false, %cond.true - %cond.res = phi i1 [ %15, %cond.true ], [ false, %cond.false ] + %cond.res = phi i1 [ %16, %cond.true ], [ false, %cond.false ] ret i1 %cond.res } ; Function Attrs: inlinehint nounwind -define internal void @ctor.144(%_CharSource* %this, %FileRange* %fileRange, %StringRef %code) #4 { +define internal void @ctor.138(%_CharSource* %this, %FileRange* %fileRange, %StringRef %code) #4 { %this.addr = alloca %_CharSource* store %_CharSource* %this, %_CharSource** %this.addr %fileRange.addr = alloca %FileRange* @@ -5196,7 +5074,7 @@ code1: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i1 @isEmpty.145(%_CharSource* %this) #4 { +define internal i1 @isEmpty.139(%_CharSource* %this) #4 { %this.addr = alloca %_CharSource* store %_CharSource* %this, %_CharSource** %this.addr br label %code @@ -5213,7 +5091,7 @@ cond_alt1: ; preds = %code %6 = load %_CharSource*, %_CharSource** %this.addr %7 = getelementptr inbounds %_CharSource, %_CharSource* %6, i32 0, i32 0 %8 = load %FileRange*, %FileRange** %7 - %9 = call i1 @isEmpty.146(%FileRange* %8) + %9 = call i1 @isEmpty.140(%FileRange* %8) br label %cond_end cond_alt2: ; preds = %code @@ -5228,7 +5106,7 @@ cond_end: ; preds = %cond_alt2, %cond_al } ; Function Attrs: inlinehint nounwind -define internal i1 @isEmpty.146(%FileRange* %s) #4 { +define internal i1 @isEmpty.140(%FileRange* %s) #4 { %s.addr = alloca %FileRange* store %FileRange* %s, %FileRange** %s.addr br label %code @@ -5241,7 +5119,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i8 @front.147(%_CharSource* %this) #4 { +define internal i8 @front.141(%_CharSource* %this) #4 { %this.addr = alloca %_CharSource* store %_CharSource* %this, %_CharSource** %this.addr br label %code @@ -5261,7 +5139,7 @@ if_then: ; preds = %if_block %6 = load %_CharSource*, %_CharSource** %this.addr %7 = getelementptr inbounds %_CharSource, %_CharSource* %6, i32 0, i32 0 %8 = load %FileRange*, %FileRange** %7 - %9 = call i8 @front.148(%FileRange* %8) + %9 = call i8 @front.142(%FileRange* %8) ret i8 %9 if_else: ; preds = %if_block @@ -5282,7 +5160,7 @@ dumy_block1: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal i8 @front.148(%FileRange* %s) #4 { +define internal i8 @front.142(%FileRange* %s) #4 { %s.addr = alloca %FileRange* store %FileRange* %s, %FileRange** %s.addr br label %code @@ -5295,7 +5173,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @popFront.149(%_CharSource* %this) #4 { +define internal void @popFront.143(%_CharSource* %this) #4 { %this.addr = alloca %_CharSource* store %_CharSource* %this, %_CharSource** %this.addr br label %code @@ -5315,7 +5193,7 @@ if_then: ; preds = %if_block %6 = load %_CharSource*, %_CharSource** %this.addr %7 = getelementptr inbounds %_CharSource, %_CharSource* %6, i32 0, i32 0 %8 = load %FileRange*, %FileRange** %7 - call void @popFront.150(%FileRange* %8) + call void @popFront.144(%FileRange* %8) br label %if_end if_else: ; preds = %if_block @@ -5329,7 +5207,7 @@ if_end: ; preds = %if_else, %if_then } ; Function Attrs: inlinehint nounwind -define internal void @popFront.150(%FileRange* %s) #4 { +define internal void @popFront.144(%FileRange* %s) #4 { %s.addr = alloca %FileRange* store %FileRange* %s, %FileRange** %s.addr br label %code @@ -5365,7 +5243,7 @@ if_end: ; preds = %if_then, %if_block define internal i8 @readChar(%File* %this) #4 { %this.addr = alloca %File* store %File* %this, %File** %this.addr - %tmp.v = alloca i8 + %tmp.this = alloca i8 br label %code code: ; preds = %0 @@ -5374,8 +5252,8 @@ code: ; preds = %0 %3 = load i8*, i8** %2 %4 = call i32 @fgetc(i8* %3) %5 = trunc i32 %4 to i8 - store i8 %5, i8* %tmp.v - %6 = load i8, i8* %tmp.v + store i8 %5, i8* %tmp.this + %6 = load i8, i8* %tmp.this ret i8 %6 } @@ -5399,7 +5277,7 @@ code: ; preds = %0 declare i32 @feof(i8*) ; Function Attrs: alwaysinline nounwind -define internal void @ctor.151(%ParserContext* %this) #3 { +define internal void @ctor.145(%ParserContext* %this) #3 { %this.addr = alloca %ParserContext* store %ParserContext* %this, %ParserContext** %this.addr br label %code @@ -5407,27 +5285,27 @@ define internal void @ctor.151(%ParserContext* %this) #3 { code: ; preds = %0 %1 = load %ParserContext*, %ParserContext** %this.addr %2 = getelementptr inbounds %ParserContext, %ParserContext* %1, i32 0, i32 0 - call void @ctor.152(%File* %2) + call void @ctor.146(%File* %2) %3 = load %ParserContext*, %ParserContext** %this.addr %4 = getelementptr inbounds %ParserContext, %ParserContext* %3, i32 0, i32 1 - call void @ctor.153(%FileRange* %4) + call void @ctor.147(%FileRange* %4) %5 = load %ParserContext*, %ParserContext** %this.addr %6 = getelementptr inbounds %ParserContext, %ParserContext* %5, i32 0, i32 2 - call void @ctor.139(%_CharSource* %6) + call void @ctor.133(%_CharSource* %6) %7 = load %ParserContext*, %ParserContext** %this.addr %8 = getelementptr inbounds %ParserContext, %ParserContext* %7, i32 0, i32 3 - call void @ctor.154(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %8) + call void @ctor.148(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %8) %9 = load %ParserContext*, %ParserContext** %this.addr %10 = getelementptr inbounds %ParserContext, %ParserContext* %9, i32 0, i32 4 - call void @ctor.165(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %10) + call void @ctor.159(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %10) %11 = load %ParserContext*, %ParserContext** %this.addr %12 = getelementptr inbounds %ParserContext, %ParserContext* %11, i32 0, i32 5 - call void @ctor.171(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %12) + call void @ctor.165(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %12) ret void } ; Function Attrs: inlinehint nounwind -define internal void @ctor.152(%File* %this) #4 { +define internal void @ctor.146(%File* %this) #4 { %this.addr = alloca %File* store %File* %this, %File** %this.addr br label %code @@ -5443,7 +5321,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.153(%FileRange* %this) #3 { +define internal void @ctor.147(%FileRange* %this) #3 { %this.addr = alloca %FileRange* store %FileRange* %this, %FileRange** %this.addr br label %code @@ -5462,7 +5340,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.154(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this) #3 { +define internal void @ctor.148(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this) #3 { %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr br label %code @@ -5470,13 +5348,13 @@ define internal void @ctor.154(%"SparrowScanner[_CharSource, ExternalErrorReport code: ; preds = %0 %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 0 - call void @ctor.155(%Location* %2) + call void @ctor.149(%Location* %2) %3 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %4 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %3, i32 0, i32 1 - call void @ctor.158(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %4) + call void @ctor.152(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %4) %5 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %6 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %5, i32 0, i32 2 - call void @ctor.162(%Token* %6) + call void @ctor.156(%Token* %6) %7 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %8 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %7, i32 0, i32 3 store i1 false, i1* %8 @@ -5484,7 +5362,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.155(%Location* %this) #3 { +define internal void @ctor.149(%Location* %this) #3 { %this.addr = alloca %Location* store %Location* %this, %Location** %this.addr br label %code @@ -5492,18 +5370,18 @@ define internal void @ctor.155(%Location* %this) #3 { code: ; preds = %0 %1 = load %Location*, %Location** %this.addr %2 = getelementptr inbounds %Location, %Location* %1, i32 0, i32 0 - call void @ctor.156(%SourceCode* %2) + call void @ctor.150(%SourceCode* %2) %3 = load %Location*, %Location** %this.addr %4 = getelementptr inbounds %Location, %Location* %3, i32 0, i32 1 - call void @ctor.157(%LineCol* %4) + call void @ctor.151(%LineCol* %4) %5 = load %Location*, %Location** %this.addr %6 = getelementptr inbounds %Location, %Location* %5, i32 0, i32 2 - call void @ctor.157(%LineCol* %6) + call void @ctor.151(%LineCol* %6) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.156(%SourceCode* %this) #3 { +define internal void @ctor.150(%SourceCode* %this) #3 { %this.addr = alloca %SourceCode* store %SourceCode* %this, %SourceCode** %this.addr br label %code @@ -5516,7 +5394,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.157(%LineCol* %this) #3 { +define internal void @ctor.151(%LineCol* %this) #3 { %this.addr = alloca %LineCol* store %LineCol* %this, %LineCol** %this.addr br label %code @@ -5532,7 +5410,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.158(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this) #3 { +define internal void @ctor.152(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this) #3 { %this.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr br label %code @@ -5540,7 +5418,7 @@ define internal void @ctor.158(%"LocationSyncCharRange[RangeWithLookahead[_CharS code: ; preds = %0 %1 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr %2 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1, i32 0, i32 0 - call void @ctor.159(%"RangeWithLookahead[_CharSource]"* %2) + call void @ctor.153(%"RangeWithLookahead[_CharSource]"* %2) %3 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr %4 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %3, i32 0, i32 1 store %Location* null, %Location** %4 @@ -5548,7 +5426,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.159(%"RangeWithLookahead[_CharSource]"* %this) #3 { +define internal void @ctor.153(%"RangeWithLookahead[_CharSource]"* %this) #3 { %this.addr = alloca %"RangeWithLookahead[_CharSource]"* store %"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"** %this.addr br label %code @@ -5556,15 +5434,15 @@ define internal void @ctor.159(%"RangeWithLookahead[_CharSource]"* %this) #3 { code: ; preds = %0 %1 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr %2 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %1, i32 0, i32 0 - call void @ctor.139(%_CharSource* %2) + call void @ctor.133(%_CharSource* %2) %3 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr %4 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %3, i32 0, i32 1 - call void @ctor.160(%"Vector[Char]"* %4) + call void @ctor.154(%"Vector[Char]"* %4) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.160(%"Vector[Char]"* %this) #3 { +define internal void @ctor.154(%"Vector[Char]"* %this) #3 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr br label %code @@ -5572,18 +5450,18 @@ define internal void @ctor.160(%"Vector[Char]"* %this) #3 { code: ; preds = %0 %1 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %2 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %1, i32 0, i32 0 - call void @ctor.161(%"RawPtr[Char]"* %2) + call void @ctor.155(%"RawPtr[Char]"* %2) %3 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %4 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %3, i32 0, i32 1 - call void @ctor.161(%"RawPtr[Char]"* %4) + call void @ctor.155(%"RawPtr[Char]"* %4) %5 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %6 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %5, i32 0, i32 2 - call void @ctor.161(%"RawPtr[Char]"* %6) + call void @ctor.155(%"RawPtr[Char]"* %6) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.161(%"RawPtr[Char]"* %this) #3 { +define internal void @ctor.155(%"RawPtr[Char]"* %this) #3 { %this.addr = alloca %"RawPtr[Char]"* store %"RawPtr[Char]"* %this, %"RawPtr[Char]"** %this.addr br label %code @@ -5596,7 +5474,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.162(%Token* %this) #3 { +define internal void @ctor.156(%Token* %this) #3 { %this.addr = alloca %Token* store %Token* %this, %Token** %this.addr br label %code @@ -5604,13 +5482,13 @@ define internal void @ctor.162(%Token* %this) #3 { code: ; preds = %0 %1 = load %Token*, %Token** %this.addr %2 = getelementptr inbounds %Token, %Token* %1, i32 0, i32 0 - call void @ctor.155(%Location* %2) + call void @ctor.149(%Location* %2) %3 = load %Token*, %Token** %this.addr %4 = getelementptr inbounds %Token, %Token* %3, i32 0, i32 1 - call void @ctor.163(%TokenType* %4) + call void @ctor.157(%TokenType* %4) %5 = load %Token*, %Token** %this.addr %6 = getelementptr inbounds %Token, %Token* %5, i32 0, i32 2 - call void @ctor.164(%String* %6) + call void @ctor.158(%String* %6) %7 = load %Token*, %Token** %this.addr %8 = getelementptr inbounds %Token, %Token* %7, i32 0, i32 3 store i64 0, i64* %8 @@ -5621,7 +5499,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.163(%TokenType* %this) #3 { +define internal void @ctor.157(%TokenType* %this) #3 { %this.addr = alloca %TokenType* store %TokenType* %this, %TokenType** %this.addr br label %code @@ -5634,7 +5512,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @ctor.164(%String* %this) #4 { +define internal void @ctor.158(%String* %this) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr br label %code @@ -5642,18 +5520,18 @@ define internal void @ctor.164(%String* %this) #4 { code: ; preds = %0 %1 = load %String*, %String** %this.addr %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 0 - call void @ctor.161(%"RawPtr[Char]"* %2) + call void @ctor.155(%"RawPtr[Char]"* %2) %3 = load %String*, %String** %this.addr %4 = getelementptr inbounds %String, %String* %3, i32 0, i32 1 - call void @ctor.161(%"RawPtr[Char]"* %4) + call void @ctor.155(%"RawPtr[Char]"* %4) %5 = load %String*, %String** %this.addr %6 = getelementptr inbounds %String, %String* %5, i32 0, i32 2 - call void @ctor.161(%"RawPtr[Char]"* %6) + call void @ctor.155(%"RawPtr[Char]"* %6) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.165(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this) #3 { +define internal void @ctor.159(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this) #3 { %this.addr = alloca %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* store %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr br label %code @@ -5661,16 +5539,16 @@ define internal void @ctor.165(%"SparrowLayoutDecoder[SparrowScanner[_CharSource code: ; preds = %0 %1 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %2 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 0 - call void @ctor.166(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %2) + call void @ctor.160(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %2) %3 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %4 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %3, i32 0, i32 2 - call void @ctor.169(%"Vector[UInt]"* %4) + call void @ctor.163(%"Vector[UInt]"* %4) %5 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %6 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 3 - call void @ctor.160(%"Vector[Char]"* %6) + call void @ctor.154(%"Vector[Char]"* %6) %7 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %8 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %7, i32 0, i32 4 - call void @ctor.163(%TokenType* %8) + call void @ctor.157(%TokenType* %8) %9 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %10 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %9, i32 0, i32 5 store i32 0, i32* %10 @@ -5678,7 +5556,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.166(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this) #3 { +define internal void @ctor.160(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this) #3 { %this.addr = alloca %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* store %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr br label %code @@ -5686,15 +5564,15 @@ define internal void @ctor.166(%"RangeWithLookahead[SparrowScanner[_CharSource, code: ; preds = %0 %1 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr %2 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %1, i32 0, i32 0 - call void @ctor.154(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %2) + call void @ctor.148(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %2) %3 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr %4 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %3, i32 0, i32 1 - call void @ctor.167(%"Vector[Token]"* %4) + call void @ctor.161(%"Vector[Token]"* %4) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.167(%"Vector[Token]"* %this) #3 { +define internal void @ctor.161(%"Vector[Token]"* %this) #3 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr br label %code @@ -5702,18 +5580,18 @@ define internal void @ctor.167(%"Vector[Token]"* %this) #3 { code: ; preds = %0 %1 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %2 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %1, i32 0, i32 0 - call void @ctor.168(%"RawPtr[Token]"* %2) + call void @ctor.162(%"RawPtr[Token]"* %2) %3 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %4 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %3, i32 0, i32 1 - call void @ctor.168(%"RawPtr[Token]"* %4) + call void @ctor.162(%"RawPtr[Token]"* %4) %5 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %6 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %5, i32 0, i32 2 - call void @ctor.168(%"RawPtr[Token]"* %6) + call void @ctor.162(%"RawPtr[Token]"* %6) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.168(%"RawPtr[Token]"* %this) #3 { +define internal void @ctor.162(%"RawPtr[Token]"* %this) #3 { %this.addr = alloca %"RawPtr[Token]"* store %"RawPtr[Token]"* %this, %"RawPtr[Token]"** %this.addr br label %code @@ -5726,7 +5604,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.169(%"Vector[UInt]"* %this) #3 { +define internal void @ctor.163(%"Vector[UInt]"* %this) #3 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr br label %code @@ -5734,18 +5612,18 @@ define internal void @ctor.169(%"Vector[UInt]"* %this) #3 { code: ; preds = %0 %1 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %2 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %1, i32 0, i32 0 - call void @ctor.170(%"RawPtr[UInt]"* %2) + call void @ctor.164(%"RawPtr[UInt]"* %2) %3 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %4 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %3, i32 0, i32 1 - call void @ctor.170(%"RawPtr[UInt]"* %4) + call void @ctor.164(%"RawPtr[UInt]"* %4) %5 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %6 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %5, i32 0, i32 2 - call void @ctor.170(%"RawPtr[UInt]"* %6) + call void @ctor.164(%"RawPtr[UInt]"* %6) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.170(%"RawPtr[UInt]"* %this) #3 { +define internal void @ctor.164(%"RawPtr[UInt]"* %this) #3 { %this.addr = alloca %"RawPtr[UInt]"* store %"RawPtr[UInt]"* %this, %"RawPtr[UInt]"** %this.addr br label %code @@ -5758,7 +5636,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.171(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this) #3 { +define internal void @ctor.165(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this) #3 { %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr br label %code @@ -5766,10 +5644,10 @@ define internal void @ctor.171(%"SparrowParser[SparrowLayoutDecoder[SparrowScann code: ; preds = %0 %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 0 - call void @ctor.172(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %2) + call void @ctor.166(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %2) %3 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %4 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %3, i32 0, i32 1 - call void @ctor.162(%Token* %4) + call void @ctor.156(%Token* %4) %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 2 store i1 false, i1* %6 @@ -5777,7 +5655,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.172(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this) #3 { +define internal void @ctor.166(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this) #3 { %this.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr br label %code @@ -5785,15 +5663,15 @@ define internal void @ctor.172(%"RangeWithLookahead[SparrowLayoutDecoder[Sparrow code: ; preds = %0 %1 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr %2 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %1, i32 0, i32 0 - call void @ctor.165(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %2) + call void @ctor.159(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %2) %3 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr %4 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %3, i32 0, i32 1 - call void @ctor.167(%"Vector[Token]"* %4) + call void @ctor.161(%"Vector[Token]"* %4) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.173(%ParserContext* %this, %ParserContext* %other) #3 { +define internal void @ctor.167(%ParserContext* %this, %ParserContext* %other) #3 { %this.addr = alloca %ParserContext* store %ParserContext* %this, %ParserContext** %this.addr %other.addr = alloca %ParserContext* @@ -5805,37 +5683,37 @@ code: ; preds = %0 %2 = getelementptr inbounds %ParserContext, %ParserContext* %1, i32 0, i32 0 %3 = load %ParserContext*, %ParserContext** %other.addr %4 = getelementptr inbounds %ParserContext, %ParserContext* %3, i32 0, i32 0 - call void @ctor.174(%File* %2, %File* %4) + call void @ctor.168(%File* %2, %File* %4) %5 = load %ParserContext*, %ParserContext** %this.addr %6 = getelementptr inbounds %ParserContext, %ParserContext* %5, i32 0, i32 1 %7 = load %ParserContext*, %ParserContext** %other.addr %8 = getelementptr inbounds %ParserContext, %ParserContext* %7, i32 0, i32 1 - call void @ctor.175(%FileRange* %6, %FileRange* %8) + call void @ctor.169(%FileRange* %6, %FileRange* %8) %9 = load %ParserContext*, %ParserContext** %this.addr %10 = getelementptr inbounds %ParserContext, %ParserContext* %9, i32 0, i32 2 %11 = load %ParserContext*, %ParserContext** %other.addr %12 = getelementptr inbounds %ParserContext, %ParserContext* %11, i32 0, i32 2 - call void @ctor.140(%_CharSource* %10, %_CharSource* %12) + call void @ctor.134(%_CharSource* %10, %_CharSource* %12) %13 = load %ParserContext*, %ParserContext** %this.addr %14 = getelementptr inbounds %ParserContext, %ParserContext* %13, i32 0, i32 3 %15 = load %ParserContext*, %ParserContext** %other.addr %16 = getelementptr inbounds %ParserContext, %ParserContext* %15, i32 0, i32 3 - call void @ctor.176(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %14, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %16) + call void @ctor.170(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %14, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %16) %17 = load %ParserContext*, %ParserContext** %this.addr %18 = getelementptr inbounds %ParserContext, %ParserContext* %17, i32 0, i32 4 %19 = load %ParserContext*, %ParserContext** %other.addr %20 = getelementptr inbounds %ParserContext, %ParserContext* %19, i32 0, i32 4 - call void @ctor.196(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %18, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %20) + call void @ctor.188(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %18, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %20) %21 = load %ParserContext*, %ParserContext** %this.addr %22 = getelementptr inbounds %ParserContext, %ParserContext* %21, i32 0, i32 5 %23 = load %ParserContext*, %ParserContext** %other.addr %24 = getelementptr inbounds %ParserContext, %ParserContext* %23, i32 0, i32 5 - call void @ctor.224(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %22, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %24) + call void @ctor.213(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %22, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %24) ret void } ; Function Attrs: inlinehint nounwind -define internal void @ctor.174(%File* %this, %File* %other) #4 { +define internal void @ctor.168(%File* %this, %File* %other) #4 { %this.addr = alloca %File* store %File* %this, %File** %this.addr %other.addr = alloca %File* @@ -5859,7 +5737,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.175(%FileRange* %this, %FileRange* %other) #3 { +define internal void @ctor.169(%FileRange* %this, %FileRange* %other) #3 { %this.addr = alloca %FileRange* store %FileRange* %this, %FileRange** %this.addr %other.addr = alloca %FileRange* @@ -5889,7 +5767,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.176(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %other) #3 { +define internal void @ctor.170(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %other) #3 { %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %other.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* @@ -5901,17 +5779,17 @@ code: ; preds = %0 %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 0 %3 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %other.addr %4 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %3, i32 0, i32 0 - call void @ctor.177(%Location* %2, %Location* %4) + call void @ctor.171(%Location* %2, %Location* %4) %5 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %6 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %5, i32 0, i32 1 %7 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %other.addr %8 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %7, i32 0, i32 1 - call void @ctor.180(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %6, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %8) + call void @ctor.174(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %6, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %8) %9 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %10 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %9, i32 0, i32 2 %11 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %other.addr %12 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %11, i32 0, i32 2 - call void @ctor.190(%Token* %10, %Token* %12) + call void @ctor.182(%Token* %10, %Token* %12) %13 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %other.addr %14 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %13, i32 0, i32 3 %15 = load i1, i1* %14 @@ -5922,7 +5800,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.177(%Location* %this, %Location* %other) #3 { +define internal void @ctor.171(%Location* %this, %Location* %other) #3 { %this.addr = alloca %Location* store %Location* %this, %Location** %this.addr %other.addr = alloca %Location* @@ -5934,22 +5812,22 @@ code: ; preds = %0 %2 = getelementptr inbounds %Location, %Location* %1, i32 0, i32 0 %3 = load %Location*, %Location** %other.addr %4 = getelementptr inbounds %Location, %Location* %3, i32 0, i32 0 - call void @ctor.178(%SourceCode* %2, %SourceCode* %4) + call void @ctor.172(%SourceCode* %2, %SourceCode* %4) %5 = load %Location*, %Location** %this.addr %6 = getelementptr inbounds %Location, %Location* %5, i32 0, i32 1 %7 = load %Location*, %Location** %other.addr %8 = getelementptr inbounds %Location, %Location* %7, i32 0, i32 1 - call void @ctor.179(%LineCol* %6, %LineCol* %8) + call void @ctor.173(%LineCol* %6, %LineCol* %8) %9 = load %Location*, %Location** %this.addr %10 = getelementptr inbounds %Location, %Location* %9, i32 0, i32 2 %11 = load %Location*, %Location** %other.addr %12 = getelementptr inbounds %Location, %Location* %11, i32 0, i32 2 - call void @ctor.179(%LineCol* %10, %LineCol* %12) + call void @ctor.173(%LineCol* %10, %LineCol* %12) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.178(%SourceCode* %this, %SourceCode* %other) #3 { +define internal void @ctor.172(%SourceCode* %this, %SourceCode* %other) #3 { %this.addr = alloca %SourceCode* store %SourceCode* %this, %SourceCode** %this.addr %other.addr = alloca %SourceCode* @@ -5967,7 +5845,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.179(%LineCol* %this, %LineCol* %other) #3 { +define internal void @ctor.173(%LineCol* %this, %LineCol* %other) #3 { %this.addr = alloca %LineCol* store %LineCol* %this, %LineCol** %this.addr %other.addr = alloca %LineCol* @@ -5991,7 +5869,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.180(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %other) #3 { +define internal void @ctor.174(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %other) #3 { %this.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr %other.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* @@ -6003,7 +5881,7 @@ code: ; preds = %0 %2 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1, i32 0, i32 0 %3 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %other.addr %4 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %3, i32 0, i32 0 - call void @ctor.181(%"RangeWithLookahead[_CharSource]"* %2, %"RangeWithLookahead[_CharSource]"* %4) + call void @ctor.175(%"RangeWithLookahead[_CharSource]"* %2, %"RangeWithLookahead[_CharSource]"* %4) %5 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %other.addr %6 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5, i32 0, i32 1 %7 = load %Location*, %Location** %6 @@ -6014,7 +5892,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.181(%"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"* %other) #3 { +define internal void @ctor.175(%"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"* %other) #3 { %this.addr = alloca %"RangeWithLookahead[_CharSource]"* store %"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"** %this.addr %other.addr = alloca %"RangeWithLookahead[_CharSource]"* @@ -6026,17 +5904,17 @@ code: ; preds = %0 %2 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %1, i32 0, i32 0 %3 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %other.addr %4 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %3, i32 0, i32 0 - call void @ctor.140(%_CharSource* %2, %_CharSource* %4) + call void @ctor.134(%_CharSource* %2, %_CharSource* %4) %5 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr %6 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %5, i32 0, i32 1 %7 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %other.addr %8 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %7, i32 0, i32 1 - call void @ctor.182(%"Vector[Char]"* %6, %"Vector[Char]"* %8) + call void @ctor.176(%"Vector[Char]"* %6, %"Vector[Char]"* %8) ret void } ; Function Attrs: inlinehint nounwind -define internal void @ctor.182(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #4 { +define internal void @ctor.176(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #4 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr %other.addr = alloca %"Vector[Char]"* @@ -6046,28 +5924,26 @@ define internal void @ctor.182(%"Vector[Char]"* %this, %"Vector[Char]"* %other) %"$tmpC1" = alloca %"RawPtr[Char]" %dst = alloca %"RawPtr[Char]" %src = alloca %"RawPtr[Char]" - %"$tmpC2" = alloca %"RawPtr[Char]" - %"$tmpC3" = alloca %"RawPtr[Char]" br label %code code: ; preds = %0 %1 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %2 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %1, i32 0, i32 0 - call void @ctor.161(%"RawPtr[Char]"* %2) + call void @ctor.155(%"RawPtr[Char]"* %2) %3 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %4 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %3, i32 0, i32 1 - call void @ctor.161(%"RawPtr[Char]"* %4) + call void @ctor.155(%"RawPtr[Char]"* %4) %5 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %6 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %5, i32 0, i32 2 - call void @ctor.161(%"RawPtr[Char]"* %6) + call void @ctor.155(%"RawPtr[Char]"* %6) %7 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr - %8 = call i64 @size.183(%"Vector[Char]"* %7) + %8 = call i64 @size.177(%"Vector[Char]"* %7) store i64 %8, i64* %size %9 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %10 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %9, i32 0, i32 0 %11 = load i64, i64* %size call void @allocRawPtr(%"RawPtr[Char]"* %"$tmpC", i64 %11) - call void @"=.184"(%"RawPtr[Char]"* %10, %"RawPtr[Char]"* %"$tmpC") + call void @"=.178"(%"RawPtr[Char]"* %10, %"RawPtr[Char]"* %"$tmpC") %12 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %13 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %12, i32 0, i32 1 %14 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr @@ -6075,54 +5951,33 @@ code: ; preds = %0 %16 = load %"RawPtr[Char]", %"RawPtr[Char]"* %15 %17 = load i64, i64* %size call void @advance(%"RawPtr[Char]"* %"$tmpC1", %"RawPtr[Char]" %16, i64 %17) - call void @"=.184"(%"RawPtr[Char]"* %13, %"RawPtr[Char]"* %"$tmpC1") + call void @"=.178"(%"RawPtr[Char]"* %13, %"RawPtr[Char]"* %"$tmpC1") %18 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %19 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %18, i32 0, i32 2 %20 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %21 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %20, i32 0, i32 1 - call void @"=.184"(%"RawPtr[Char]"* %19, %"RawPtr[Char]"* %21) + call void @"=.178"(%"RawPtr[Char]"* %19, %"RawPtr[Char]"* %21) %22 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %23 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %22, i32 0, i32 0 - call void @ctor.187(%"RawPtr[Char]"* %dst, %"RawPtr[Char]"* %23) + call void @ctor.181(%"RawPtr[Char]"* %dst, %"RawPtr[Char]"* %23) %24 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr %25 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %24, i32 0, i32 0 - call void @ctor.187(%"RawPtr[Char]"* %src, %"RawPtr[Char]"* %25) - br label %while_block - -while_block: ; preds = %while_step, %code - %26 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %27 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %26, i32 0, i32 1 - %28 = call i1 @"==.188"(%"RawPtr[Char]"* %dst, %"RawPtr[Char]"* %27) - %29 = xor i1 true, %28 - br i1 %29, label %while_body, label %while_end - -while_body: ; preds = %while_block - %30 = load %"RawPtr[Char]", %"RawPtr[Char]"* %src - %31 = call i8* @value(%"RawPtr[Char]" %30) - %32 = load i8, i8* %31 - %33 = load %"RawPtr[Char]", %"RawPtr[Char]"* %dst - %34 = call i8* @value(%"RawPtr[Char]" %33) - store i8 %32, i8* %34 - %35 = load %"RawPtr[Char]", %"RawPtr[Char]"* %dst - call void @advance.189(%"RawPtr[Char]"* %"$tmpC2", %"RawPtr[Char]" %35) - call void @"=.184"(%"RawPtr[Char]"* %dst, %"RawPtr[Char]"* %"$tmpC2") - %36 = load %"RawPtr[Char]", %"RawPtr[Char]"* %src - call void @advance.189(%"RawPtr[Char]"* %"$tmpC3", %"RawPtr[Char]" %36) - call void @"=.184"(%"RawPtr[Char]"* %src, %"RawPtr[Char]"* %"$tmpC3") - br label %while_step - -while_step: ; preds = %while_body - br label %while_block - -while_end: ; preds = %while_block + call void @ctor.181(%"RawPtr[Char]"* %src, %"RawPtr[Char]"* %25) + %26 = load %"RawPtr[Char]", %"RawPtr[Char]"* %dst + %27 = call i8* @bytePtr(%"RawPtr[Char]" %26) + %28 = load %"RawPtr[Char]", %"RawPtr[Char]"* %src + %29 = call i8* @bytePtr(%"RawPtr[Char]" %28) + %30 = load i64, i64* %size + %31 = mul i64 %30, 1 + call void @_spr_memcpy(i8* %27, i8* %29, i64 %31) ret void } ; Function Attrs: inlinehint nounwind -define internal i64 @size.183(%"Vector[Char]"* %this) #4 { +define internal i64 @size.177(%"Vector[Char]"* %this) #4 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -6133,8 +5988,8 @@ code: ; preds = %0 %5 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %4, i32 0, i32 0 %6 = load %"RawPtr[Char]", %"RawPtr[Char]"* %5 %7 = call i64 @diff(%"RawPtr[Char]" %3, %"RawPtr[Char]" %6) - store i64 %7, i64* %tmp.v - %8 = load i64, i64* %tmp.v + store i64 %7, i64* %tmp.this + %8 = load i64, i64* %tmp.this ret i64 %8 } @@ -6144,8 +5999,8 @@ define internal i64 @diff(%"RawPtr[Char]" %this, %"RawPtr[Char]" %other) #4 { store %"RawPtr[Char]" %this, %"RawPtr[Char]"* %this.addr %other.addr = alloca %"RawPtr[Char]" store %"RawPtr[Char]" %other, %"RawPtr[Char]"* %other.addr - %tmp.v = alloca i64 - %tmp.v1 = alloca i64 + %tmp.this = alloca i64 + %tmp.this1 = alloca i64 br label %code code: ; preds = %0 @@ -6154,16 +6009,16 @@ code: ; preds = %0 %3 = load %"RawPtr[Char]", %"RawPtr[Char]"* %other.addr %4 = call i8* @bytePtr(%"RawPtr[Char]" %3) %5 = call i64 @ptrDiff(i8* %2, i8* %4) - store i64 1, i64* %tmp.v1 - %6 = load i64, i64* %tmp.v1 + store i64 1, i64* %tmp.this1 + %6 = load i64, i64* %tmp.this1 %7 = sdiv i64 %5, %6 - store i64 %7, i64* %tmp.v - %8 = load i64, i64* %tmp.v + store i64 %7, i64* %tmp.this + %8 = load i64, i64* %tmp.this ret i64 %8 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.184"(%"RawPtr[Char]"* %this, %"RawPtr[Char]"* %other) #3 { +define internal void @"=.178"(%"RawPtr[Char]"* %this, %"RawPtr[Char]"* %other) #3 { %this.addr = alloca %"RawPtr[Char]"* store %"RawPtr[Char]"* %this, %"RawPtr[Char]"** %this.addr %other.addr = alloca %"RawPtr[Char]"* @@ -6193,12 +6048,12 @@ code: ; preds = %0 %2 = load i64, i64* %num.addr %3 = mul i64 %2, 1 %4 = call i8* @malloc(i64 %3) - call void @ctor.185(%"RawPtr[Char]"* %1, i8* %4) + call void @ctor.179(%"RawPtr[Char]"* %1, i8* %4) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.185(%"RawPtr[Char]"* %this, i8* %f_ptr) #3 { +define internal void @ctor.179(%"RawPtr[Char]"* %this, i8* %f_ptr) #3 { %this.addr = alloca %"RawPtr[Char]"* store %"RawPtr[Char]"* %this, %"RawPtr[Char]"** %this.addr %f_ptr.addr = alloca i8* @@ -6230,12 +6085,12 @@ code: ; preds = %0 %4 = load i64, i64* %n.addr %5 = mul i64 %4, 1 %6 = call i8* @ptrAdd(i8* %3, i64 %5) - call void @ctor.186(%"RawPtr[Char]"* %1, i8* %6) + call void @ctor.180(%"RawPtr[Char]"* %1, i8* %6) ret void } ; Function Attrs: inlinehint nounwind -define internal void @ctor.186(%"RawPtr[Char]"* %this, i8* %byteRef) #4 { +define internal void @ctor.180(%"RawPtr[Char]"* %this, i8* %byteRef) #4 { %this.addr = alloca %"RawPtr[Char]"* store %"RawPtr[Char]"* %this, %"RawPtr[Char]"** %this.addr %byteRef.addr = alloca i8* @@ -6254,7 +6109,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.187(%"RawPtr[Char]"* %this, %"RawPtr[Char]"* %other) #3 { +define internal void @ctor.181(%"RawPtr[Char]"* %this, %"RawPtr[Char]"* %other) #3 { %this.addr = alloca %"RawPtr[Char]"* store %"RawPtr[Char]"* %this, %"RawPtr[Char]"** %this.addr %other.addr = alloca %"RawPtr[Char]"* @@ -6272,55 +6127,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.188"(%"RawPtr[Char]"* %this, %"RawPtr[Char]"* %other) #3 { - %this.addr = alloca %"RawPtr[Char]"* - store %"RawPtr[Char]"* %this, %"RawPtr[Char]"** %this.addr - %other.addr = alloca %"RawPtr[Char]"* - store %"RawPtr[Char]"* %other, %"RawPtr[Char]"** %other.addr - br label %code - -code: ; preds = %0 - %1 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %this.addr - %2 = getelementptr inbounds %"RawPtr[Char]", %"RawPtr[Char]"* %1, i32 0, i32 0 - %3 = load i8*, i8** %2 - %4 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %other.addr - %5 = getelementptr inbounds %"RawPtr[Char]", %"RawPtr[Char]"* %4, i32 0, i32 0 - %6 = load i8*, i8** %5 - %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) - ret i1 %7 -} - -; Function Attrs: inlinehint nounwind -define internal i8* @value(%"RawPtr[Char]" %this) #4 { - %this.addr = alloca %"RawPtr[Char]" - store %"RawPtr[Char]" %this, %"RawPtr[Char]"* %this.addr - br label %code - -code: ; preds = %0 - %1 = getelementptr inbounds %"RawPtr[Char]", %"RawPtr[Char]"* %this.addr, i32 0, i32 0 - %2 = load i8*, i8** %1 - ret i8* %2 -} - -; Function Attrs: inlinehint nounwind -define internal void @advance.189(%"RawPtr[Char]"* sret %_result, %"RawPtr[Char]" %this) #4 { - %_result.addr = alloca %"RawPtr[Char]"* - store %"RawPtr[Char]"* %_result, %"RawPtr[Char]"** %_result.addr - %this.addr = alloca %"RawPtr[Char]" - store %"RawPtr[Char]" %this, %"RawPtr[Char]"* %this.addr - br label %code - -code: ; preds = %0 - %1 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %_result.addr - %2 = load %"RawPtr[Char]", %"RawPtr[Char]"* %this.addr - %3 = call i8* @bytePtr(%"RawPtr[Char]" %2) - %4 = call i8* @ptrAdd(i8* %3, i64 1) - call void @ctor.186(%"RawPtr[Char]"* %1, i8* %4) - ret void -} - -; Function Attrs: alwaysinline nounwind -define internal void @ctor.190(%Token* %this, %Token* %other) #3 { +define internal void @ctor.182(%Token* %this, %Token* %other) #3 { %this.addr = alloca %Token* store %Token* %this, %Token** %this.addr %other.addr = alloca %Token* @@ -6332,17 +6139,17 @@ code: ; preds = %0 %2 = getelementptr inbounds %Token, %Token* %1, i32 0, i32 0 %3 = load %Token*, %Token** %other.addr %4 = getelementptr inbounds %Token, %Token* %3, i32 0, i32 0 - call void @ctor.177(%Location* %2, %Location* %4) + call void @ctor.171(%Location* %2, %Location* %4) %5 = load %Token*, %Token** %this.addr %6 = getelementptr inbounds %Token, %Token* %5, i32 0, i32 1 %7 = load %Token*, %Token** %other.addr %8 = getelementptr inbounds %Token, %Token* %7, i32 0, i32 1 - call void @ctor.191(%TokenType* %6, %TokenType* %8) + call void @ctor.183(%TokenType* %6, %TokenType* %8) %9 = load %Token*, %Token** %this.addr %10 = getelementptr inbounds %Token, %Token* %9, i32 0, i32 2 %11 = load %Token*, %Token** %other.addr %12 = getelementptr inbounds %Token, %Token* %11, i32 0, i32 2 - call void @ctor.192(%String* %10, %String* %12) + call void @ctor.184(%String* %10, %String* %12) %13 = load %Token*, %Token** %other.addr %14 = getelementptr inbounds %Token, %Token* %13, i32 0, i32 3 %15 = load i64, i64* %14 @@ -6359,7 +6166,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.191(%TokenType* %this, %TokenType* %other) #3 { +define internal void @ctor.183(%TokenType* %this, %TokenType* %other) #3 { %this.addr = alloca %TokenType* store %TokenType* %this, %TokenType** %this.addr %other.addr = alloca %TokenType* @@ -6377,7 +6184,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @ctor.192(%String* %this, %String* %other) #4 { +define internal void @ctor.184(%String* %this, %String* %other) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr %other.addr = alloca %String* @@ -6387,11 +6194,11 @@ define internal void @ctor.192(%String* %this, %String* %other) #4 { code: ; preds = %0 %1 = load %String*, %String** %other.addr - %2 = call i64 @size.193(%String* %1) + %2 = call i64 @size.185(%String* %1) store i64 %2, i64* %size %3 = load %String*, %String** %this.addr %4 = load i64, i64* %size - call void @ctor.194(%String* %3, i64 %4) + call void @ctor.186(%String* %3, i64 %4) %5 = load %String*, %String** %this.addr %6 = getelementptr inbounds %String, %String* %5, i32 0, i32 0 %7 = load %"RawPtr[Char]", %"RawPtr[Char]"* %6 @@ -6406,10 +6213,10 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i64 @size.193(%String* %this) #4 { +define internal i64 @size.185(%String* %this) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -6420,50 +6227,50 @@ code: ; preds = %0 %5 = getelementptr inbounds %String, %String* %4, i32 0, i32 0 %6 = load %"RawPtr[Char]", %"RawPtr[Char]"* %5 %7 = call i64 @diff(%"RawPtr[Char]" %3, %"RawPtr[Char]" %6) - store i64 %7, i64* %tmp.v - %8 = load i64, i64* %tmp.v + store i64 %7, i64* %tmp.this + %8 = load i64, i64* %tmp.this ret i64 %8 } ; Function Attrs: inlinehint nounwind -define internal void @ctor.194(%String* %this, i64 %size) #4 { +define internal void @ctor.186(%String* %this, i64 %size) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr %size.addr = alloca i64 store i64 %size, i64* %size.addr %"$tmpC" = alloca %"RawPtr[Char]" - %tmp.v = alloca i64 + %tmp.this = alloca i64 %"$tmpC1" = alloca %"RawPtr[Char]" - %tmp.v2 = alloca i64 - %tmp.v3 = alloca i8 + %tmp.this2 = alloca i64 + %tmp.this3 = alloca i8 br label %code code: ; preds = %0 %1 = load %String*, %String** %this.addr %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 0 %3 = load i64, i64* %size.addr - store i64 1, i64* %tmp.v - %4 = load i64, i64* %tmp.v + store i64 1, i64* %tmp.this + %4 = load i64, i64* %tmp.this %5 = add i64 %3, %4 call void @allocRawPtr(%"RawPtr[Char]"* %"$tmpC", i64 %5) - call void @ctor.187(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %"$tmpC") + call void @ctor.181(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %"$tmpC") %6 = load %String*, %String** %this.addr %7 = getelementptr inbounds %String, %String* %6, i32 0, i32 1 %8 = load %String*, %String** %this.addr %9 = getelementptr inbounds %String, %String* %8, i32 0, i32 0 %10 = load %"RawPtr[Char]", %"RawPtr[Char]"* %9 %11 = load i64, i64* %size.addr - store i64 %11, i64* %tmp.v2 - %12 = load i64, i64* %tmp.v2 - call void @advance.195(%"RawPtr[Char]"* %"$tmpC1", %"RawPtr[Char]" %10, i64 %12) - call void @ctor.187(%"RawPtr[Char]"* %7, %"RawPtr[Char]"* %"$tmpC1") + store i64 %11, i64* %tmp.this2 + %12 = load i64, i64* %tmp.this2 + call void @advance.187(%"RawPtr[Char]"* %"$tmpC1", %"RawPtr[Char]" %10, i64 %12) + call void @ctor.181(%"RawPtr[Char]"* %7, %"RawPtr[Char]"* %"$tmpC1") %13 = load %String*, %String** %this.addr %14 = getelementptr inbounds %String, %String* %13, i32 0, i32 2 %15 = load %String*, %String** %this.addr %16 = getelementptr inbounds %String, %String* %15, i32 0, i32 1 - call void @ctor.187(%"RawPtr[Char]"* %14, %"RawPtr[Char]"* %16) - store i8 0, i8* %tmp.v3 - %17 = load i8, i8* %tmp.v3 + call void @ctor.181(%"RawPtr[Char]"* %14, %"RawPtr[Char]"* %16) + store i8 0, i8* %tmp.this3 + %17 = load i8, i8* %tmp.this3 %18 = load %String*, %String** %this.addr %19 = getelementptr inbounds %String, %String* %18, i32 0, i32 1 %20 = load %"RawPtr[Char]", %"RawPtr[Char]"* %19 @@ -6473,15 +6280,15 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @advance.195(%"RawPtr[Char]"* sret %_result, %"RawPtr[Char]" %this, i64 %n) #4 { +define internal void @advance.187(%"RawPtr[Char]"* sret %_result, %"RawPtr[Char]" %this, i64 %n) #4 { %_result.addr = alloca %"RawPtr[Char]"* store %"RawPtr[Char]"* %_result, %"RawPtr[Char]"** %_result.addr %this.addr = alloca %"RawPtr[Char]" store %"RawPtr[Char]" %this, %"RawPtr[Char]"* %this.addr %n.addr = alloca i64 store i64 %n, i64* %n.addr - %tmp.v = alloca i64 - %tmp.v1 = alloca i64 + %tmp.this = alloca i64 + %tmp.this1 = alloca i64 br label %code code: ; preds = %0 @@ -6489,18 +6296,30 @@ code: ; preds = %0 %2 = load %"RawPtr[Char]", %"RawPtr[Char]"* %this.addr %3 = call i8* @bytePtr(%"RawPtr[Char]" %2) %4 = load i64, i64* %n.addr - store i64 1, i64* %tmp.v1 - %5 = load i64, i64* %tmp.v1 + store i64 1, i64* %tmp.this1 + %5 = load i64, i64* %tmp.this1 %6 = mul i64 %4, %5 - store i64 %6, i64* %tmp.v - %7 = load i64, i64* %tmp.v + store i64 %6, i64* %tmp.this + %7 = load i64, i64* %tmp.this %8 = call i8* @ptrAdd(i8* %3, i64 %7) - call void @ctor.186(%"RawPtr[Char]"* %1, i8* %8) + call void @ctor.180(%"RawPtr[Char]"* %1, i8* %8) ret void } +; Function Attrs: inlinehint nounwind +define internal i8* @value(%"RawPtr[Char]" %this) #4 { + %this.addr = alloca %"RawPtr[Char]" + store %"RawPtr[Char]" %this, %"RawPtr[Char]"* %this.addr + br label %code + +code: ; preds = %0 + %1 = getelementptr inbounds %"RawPtr[Char]", %"RawPtr[Char]"* %this.addr, i32 0, i32 0 + %2 = load i8*, i8** %1 + ret i8* %2 +} + ; Function Attrs: alwaysinline nounwind -define internal void @ctor.196(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %other) #3 { +define internal void @ctor.188(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %other) #3 { %this.addr = alloca %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* store %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %other.addr = alloca %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* @@ -6512,22 +6331,22 @@ code: ; preds = %0 %2 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 0 %3 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr %4 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %3, i32 0, i32 0 - call void @ctor.197(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %2, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %4) + call void @ctor.189(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %2, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %4) %5 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %6 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 2 %7 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr %8 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %7, i32 0, i32 2 - call void @ctor.211(%"Vector[UInt]"* %6, %"Vector[UInt]"* %8) + call void @ctor.203(%"Vector[UInt]"* %6, %"Vector[UInt]"* %8) %9 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %10 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %9, i32 0, i32 3 %11 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr %12 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %11, i32 0, i32 3 - call void @ctor.182(%"Vector[Char]"* %10, %"Vector[Char]"* %12) + call void @ctor.176(%"Vector[Char]"* %10, %"Vector[Char]"* %12) %13 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %14 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %13, i32 0, i32 4 %15 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr %16 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %15, i32 0, i32 4 - call void @ctor.191(%TokenType* %14, %TokenType* %16) + call void @ctor.183(%TokenType* %14, %TokenType* %16) %17 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr %18 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %17, i32 0, i32 5 %19 = load i32, i32* %18 @@ -6538,7 +6357,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.197(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %other) #3 { +define internal void @ctor.189(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %other) #3 { %this.addr = alloca %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* store %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr %other.addr = alloca %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* @@ -6550,17 +6369,17 @@ code: ; preds = %0 %2 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %1, i32 0, i32 0 %3 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %other.addr %4 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %3, i32 0, i32 0 - call void @ctor.176(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %2, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %4) + call void @ctor.170(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %2, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %4) %5 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr %6 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %5, i32 0, i32 1 %7 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %other.addr %8 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %7, i32 0, i32 1 - call void @ctor.198(%"Vector[Token]"* %6, %"Vector[Token]"* %8) + call void @ctor.190(%"Vector[Token]"* %6, %"Vector[Token]"* %8) ret void } ; Function Attrs: inlinehint nounwind -define internal void @ctor.198(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #4 { +define internal void @ctor.190(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #4 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr %other.addr = alloca %"Vector[Token]"* @@ -6577,61 +6396,61 @@ define internal void @ctor.198(%"Vector[Token]"* %this, %"Vector[Token]"* %other code: ; preds = %0 %1 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %2 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %1, i32 0, i32 0 - call void @ctor.168(%"RawPtr[Token]"* %2) + call void @ctor.162(%"RawPtr[Token]"* %2) %3 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %4 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %3, i32 0, i32 1 - call void @ctor.168(%"RawPtr[Token]"* %4) + call void @ctor.162(%"RawPtr[Token]"* %4) %5 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %6 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %5, i32 0, i32 2 - call void @ctor.168(%"RawPtr[Token]"* %6) + call void @ctor.162(%"RawPtr[Token]"* %6) %7 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr - %8 = call i64 @size.199(%"Vector[Token]"* %7) + %8 = call i64 @size.191(%"Vector[Token]"* %7) store i64 %8, i64* %size %9 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %10 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %9, i32 0, i32 0 %11 = load i64, i64* %size - call void @allocRawPtr.203(%"RawPtr[Token]"* %"$tmpC", i64 %11) - call void @"=.202"(%"RawPtr[Token]"* %10, %"RawPtr[Token]"* %"$tmpC") + call void @allocRawPtr.195(%"RawPtr[Token]"* %"$tmpC", i64 %11) + call void @"=.194"(%"RawPtr[Token]"* %10, %"RawPtr[Token]"* %"$tmpC") %12 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %13 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %12, i32 0, i32 1 %14 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %15 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %14, i32 0, i32 0 %16 = load %"RawPtr[Token]", %"RawPtr[Token]"* %15 %17 = load i64, i64* %size - call void @advance.205(%"RawPtr[Token]"* %"$tmpC1", %"RawPtr[Token]" %16, i64 %17) - call void @"=.202"(%"RawPtr[Token]"* %13, %"RawPtr[Token]"* %"$tmpC1") + call void @advance.197(%"RawPtr[Token]"* %"$tmpC1", %"RawPtr[Token]" %16, i64 %17) + call void @"=.194"(%"RawPtr[Token]"* %13, %"RawPtr[Token]"* %"$tmpC1") %18 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %19 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %18, i32 0, i32 2 %20 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %21 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %20, i32 0, i32 1 - call void @"=.202"(%"RawPtr[Token]"* %19, %"RawPtr[Token]"* %21) + call void @"=.194"(%"RawPtr[Token]"* %19, %"RawPtr[Token]"* %21) %22 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %23 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %22, i32 0, i32 0 - call void @ctor.207(%"RawPtr[Token]"* %dst, %"RawPtr[Token]"* %23) + call void @ctor.199(%"RawPtr[Token]"* %dst, %"RawPtr[Token]"* %23) %24 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr %25 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %24, i32 0, i32 0 - call void @ctor.207(%"RawPtr[Token]"* %src, %"RawPtr[Token]"* %25) + call void @ctor.199(%"RawPtr[Token]"* %src, %"RawPtr[Token]"* %25) br label %while_block while_block: ; preds = %while_step, %code %26 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %27 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %26, i32 0, i32 1 - %28 = call i1 @"==.208"(%"RawPtr[Token]"* %dst, %"RawPtr[Token]"* %27) + %28 = call i1 @"==.200"(%"RawPtr[Token]"* %dst, %"RawPtr[Token]"* %27) %29 = xor i1 true, %28 br i1 %29, label %while_body, label %while_end while_body: ; preds = %while_block %30 = load %"RawPtr[Token]", %"RawPtr[Token]"* %dst - %31 = call %Token* @value.209(%"RawPtr[Token]" %30) + %31 = call %Token* @value.201(%"RawPtr[Token]" %30) %32 = load %"RawPtr[Token]", %"RawPtr[Token]"* %src - %33 = call %Token* @value.209(%"RawPtr[Token]" %32) - call void @ctor.190(%Token* %31, %Token* %33) + %33 = call %Token* @value.201(%"RawPtr[Token]" %32) + call void @ctor.182(%Token* %31, %Token* %33) %34 = load %"RawPtr[Token]", %"RawPtr[Token]"* %dst - call void @advance.210(%"RawPtr[Token]"* %"$tmpC2", %"RawPtr[Token]" %34) - call void @"=.202"(%"RawPtr[Token]"* %dst, %"RawPtr[Token]"* %"$tmpC2") + call void @advance.202(%"RawPtr[Token]"* %"$tmpC2", %"RawPtr[Token]" %34) + call void @"=.194"(%"RawPtr[Token]"* %dst, %"RawPtr[Token]"* %"$tmpC2") %35 = load %"RawPtr[Token]", %"RawPtr[Token]"* %src - call void @advance.210(%"RawPtr[Token]"* %"$tmpC3", %"RawPtr[Token]" %35) - call void @"=.202"(%"RawPtr[Token]"* %src, %"RawPtr[Token]"* %"$tmpC3") + call void @advance.202(%"RawPtr[Token]"* %"$tmpC3", %"RawPtr[Token]" %35) + call void @"=.194"(%"RawPtr[Token]"* %src, %"RawPtr[Token]"* %"$tmpC3") br label %while_step while_step: ; preds = %while_body @@ -6642,10 +6461,10 @@ while_end: ; preds = %while_block } ; Function Attrs: inlinehint nounwind -define internal i64 @size.199(%"Vector[Token]"* %this) #4 { +define internal i64 @size.191(%"Vector[Token]"* %this) #4 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -6655,38 +6474,38 @@ code: ; preds = %0 %4 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %5 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %4, i32 0, i32 0 %6 = load %"RawPtr[Token]", %"RawPtr[Token]"* %5 - %7 = call i64 @diff.200(%"RawPtr[Token]" %3, %"RawPtr[Token]" %6) - store i64 %7, i64* %tmp.v - %8 = load i64, i64* %tmp.v + %7 = call i64 @diff.192(%"RawPtr[Token]" %3, %"RawPtr[Token]" %6) + store i64 %7, i64* %tmp.this + %8 = load i64, i64* %tmp.this ret i64 %8 } ; Function Attrs: inlinehint nounwind -define internal i64 @diff.200(%"RawPtr[Token]" %this, %"RawPtr[Token]" %other) #4 { +define internal i64 @diff.192(%"RawPtr[Token]" %this, %"RawPtr[Token]" %other) #4 { %this.addr = alloca %"RawPtr[Token]" store %"RawPtr[Token]" %this, %"RawPtr[Token]"* %this.addr %other.addr = alloca %"RawPtr[Token]" store %"RawPtr[Token]" %other, %"RawPtr[Token]"* %other.addr - %tmp.v = alloca i64 - %tmp.v1 = alloca i64 + %tmp.this = alloca i64 + %tmp.this1 = alloca i64 br label %code code: ; preds = %0 %1 = load %"RawPtr[Token]", %"RawPtr[Token]"* %this.addr - %2 = call i8* @bytePtr.201(%"RawPtr[Token]" %1) + %2 = call i8* @bytePtr.193(%"RawPtr[Token]" %1) %3 = load %"RawPtr[Token]", %"RawPtr[Token]"* %other.addr - %4 = call i8* @bytePtr.201(%"RawPtr[Token]" %3) + %4 = call i8* @bytePtr.193(%"RawPtr[Token]" %3) %5 = call i64 @ptrDiff(i8* %2, i8* %4) - store i64 72, i64* %tmp.v1 - %6 = load i64, i64* %tmp.v1 + store i64 72, i64* %tmp.this1 + %6 = load i64, i64* %tmp.this1 %7 = sdiv i64 %5, %6 - store i64 %7, i64* %tmp.v - %8 = load i64, i64* %tmp.v + store i64 %7, i64* %tmp.this + %8 = load i64, i64* %tmp.this ret i64 %8 } ; Function Attrs: inlinehint nounwind -define internal i8* @bytePtr.201(%"RawPtr[Token]" %this) #4 { +define internal i8* @bytePtr.193(%"RawPtr[Token]" %this) #4 { %this.addr = alloca %"RawPtr[Token]" store %"RawPtr[Token]" %this, %"RawPtr[Token]"* %this.addr br label %code @@ -6699,7 +6518,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.202"(%"RawPtr[Token]"* %this, %"RawPtr[Token]"* %other) #3 { +define internal void @"=.194"(%"RawPtr[Token]"* %this, %"RawPtr[Token]"* %other) #3 { %this.addr = alloca %"RawPtr[Token]"* store %"RawPtr[Token]"* %this, %"RawPtr[Token]"** %this.addr %other.addr = alloca %"RawPtr[Token]"* @@ -6717,7 +6536,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @allocRawPtr.203(%"RawPtr[Token]"* sret %_result, i64 %num) #4 { +define internal void @allocRawPtr.195(%"RawPtr[Token]"* sret %_result, i64 %num) #4 { %_result.addr = alloca %"RawPtr[Token]"* store %"RawPtr[Token]"* %_result, %"RawPtr[Token]"** %_result.addr %num.addr = alloca i64 @@ -6730,12 +6549,12 @@ code: ; preds = %0 %3 = mul i64 %2, 72 %4 = call i8* @malloc(i64 %3) %5 = bitcast i8* %4 to %Token* - call void @ctor.204(%"RawPtr[Token]"* %1, %Token* %5) + call void @ctor.196(%"RawPtr[Token]"* %1, %Token* %5) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.204(%"RawPtr[Token]"* %this, %Token* %f_ptr) #3 { +define internal void @ctor.196(%"RawPtr[Token]"* %this, %Token* %f_ptr) #3 { %this.addr = alloca %"RawPtr[Token]"* store %"RawPtr[Token]"* %this, %"RawPtr[Token]"** %this.addr %f_ptr.addr = alloca %Token* @@ -6751,7 +6570,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @advance.205(%"RawPtr[Token]"* sret %_result, %"RawPtr[Token]" %this, i64 %n) #4 { +define internal void @advance.197(%"RawPtr[Token]"* sret %_result, %"RawPtr[Token]" %this, i64 %n) #4 { %_result.addr = alloca %"RawPtr[Token]"* store %"RawPtr[Token]"* %_result, %"RawPtr[Token]"** %_result.addr %this.addr = alloca %"RawPtr[Token]" @@ -6763,16 +6582,16 @@ define internal void @advance.205(%"RawPtr[Token]"* sret %_result, %"RawPtr[Toke code: ; preds = %0 %1 = load %"RawPtr[Token]"*, %"RawPtr[Token]"** %_result.addr %2 = load %"RawPtr[Token]", %"RawPtr[Token]"* %this.addr - %3 = call i8* @bytePtr.201(%"RawPtr[Token]" %2) + %3 = call i8* @bytePtr.193(%"RawPtr[Token]" %2) %4 = load i64, i64* %n.addr %5 = mul i64 %4, 72 %6 = call i8* @ptrAdd(i8* %3, i64 %5) - call void @ctor.206(%"RawPtr[Token]"* %1, i8* %6) + call void @ctor.198(%"RawPtr[Token]"* %1, i8* %6) ret void } ; Function Attrs: inlinehint nounwind -define internal void @ctor.206(%"RawPtr[Token]"* %this, i8* %byteRef) #4 { +define internal void @ctor.198(%"RawPtr[Token]"* %this, i8* %byteRef) #4 { %this.addr = alloca %"RawPtr[Token]"* store %"RawPtr[Token]"* %this, %"RawPtr[Token]"** %this.addr %byteRef.addr = alloca i8* @@ -6792,7 +6611,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.207(%"RawPtr[Token]"* %this, %"RawPtr[Token]"* %other) #3 { +define internal void @ctor.199(%"RawPtr[Token]"* %this, %"RawPtr[Token]"* %other) #3 { %this.addr = alloca %"RawPtr[Token]"* store %"RawPtr[Token]"* %this, %"RawPtr[Token]"** %this.addr %other.addr = alloca %"RawPtr[Token]"* @@ -6810,7 +6629,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.208"(%"RawPtr[Token]"* %this, %"RawPtr[Token]"* %other) #3 { +define internal i1 @"==.200"(%"RawPtr[Token]"* %this, %"RawPtr[Token]"* %other) #3 { %this.addr = alloca %"RawPtr[Token]"* store %"RawPtr[Token]"* %this, %"RawPtr[Token]"** %this.addr %other.addr = alloca %"RawPtr[Token]"* @@ -6831,7 +6650,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal %Token* @value.209(%"RawPtr[Token]" %this) #4 { +define internal %Token* @value.201(%"RawPtr[Token]" %this) #4 { %this.addr = alloca %"RawPtr[Token]" store %"RawPtr[Token]" %this, %"RawPtr[Token]"* %this.addr br label %code @@ -6843,7 +6662,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @advance.210(%"RawPtr[Token]"* sret %_result, %"RawPtr[Token]" %this) #4 { +define internal void @advance.202(%"RawPtr[Token]"* sret %_result, %"RawPtr[Token]" %this) #4 { %_result.addr = alloca %"RawPtr[Token]"* store %"RawPtr[Token]"* %_result, %"RawPtr[Token]"** %_result.addr %this.addr = alloca %"RawPtr[Token]" @@ -6853,14 +6672,14 @@ define internal void @advance.210(%"RawPtr[Token]"* sret %_result, %"RawPtr[Toke code: ; preds = %0 %1 = load %"RawPtr[Token]"*, %"RawPtr[Token]"** %_result.addr %2 = load %"RawPtr[Token]", %"RawPtr[Token]"* %this.addr - %3 = call i8* @bytePtr.201(%"RawPtr[Token]" %2) + %3 = call i8* @bytePtr.193(%"RawPtr[Token]" %2) %4 = call i8* @ptrAdd(i8* %3, i64 72) - call void @ctor.206(%"RawPtr[Token]"* %1, i8* %4) + call void @ctor.198(%"RawPtr[Token]"* %1, i8* %4) ret void } ; Function Attrs: inlinehint nounwind -define internal void @ctor.211(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #4 { +define internal void @ctor.203(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #4 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr %other.addr = alloca %"Vector[UInt]"* @@ -6870,83 +6689,60 @@ define internal void @ctor.211(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) %"$tmpC1" = alloca %"RawPtr[UInt]" %dst = alloca %"RawPtr[UInt]" %src = alloca %"RawPtr[UInt]" - %"$tmpC2" = alloca %"RawPtr[UInt]" - %"$tmpC3" = alloca %"RawPtr[UInt]" br label %code code: ; preds = %0 %1 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %2 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %1, i32 0, i32 0 - call void @ctor.170(%"RawPtr[UInt]"* %2) + call void @ctor.164(%"RawPtr[UInt]"* %2) %3 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %4 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %3, i32 0, i32 1 - call void @ctor.170(%"RawPtr[UInt]"* %4) + call void @ctor.164(%"RawPtr[UInt]"* %4) %5 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %6 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %5, i32 0, i32 2 - call void @ctor.170(%"RawPtr[UInt]"* %6) + call void @ctor.164(%"RawPtr[UInt]"* %6) %7 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr - %8 = call i64 @size.212(%"Vector[UInt]"* %7) + %8 = call i64 @size.204(%"Vector[UInt]"* %7) store i64 %8, i64* %size %9 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %10 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %9, i32 0, i32 0 %11 = load i64, i64* %size - call void @allocRawPtr.216(%"RawPtr[UInt]"* %"$tmpC", i64 %11) - call void @"=.215"(%"RawPtr[UInt]"* %10, %"RawPtr[UInt]"* %"$tmpC") + call void @allocRawPtr.208(%"RawPtr[UInt]"* %"$tmpC", i64 %11) + call void @"=.207"(%"RawPtr[UInt]"* %10, %"RawPtr[UInt]"* %"$tmpC") %12 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %13 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %12, i32 0, i32 1 %14 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %15 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %14, i32 0, i32 0 %16 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %15 %17 = load i64, i64* %size - call void @advance.218(%"RawPtr[UInt]"* %"$tmpC1", %"RawPtr[UInt]" %16, i64 %17) - call void @"=.215"(%"RawPtr[UInt]"* %13, %"RawPtr[UInt]"* %"$tmpC1") + call void @advance.210(%"RawPtr[UInt]"* %"$tmpC1", %"RawPtr[UInt]" %16, i64 %17) + call void @"=.207"(%"RawPtr[UInt]"* %13, %"RawPtr[UInt]"* %"$tmpC1") %18 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %19 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %18, i32 0, i32 2 %20 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %21 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %20, i32 0, i32 1 - call void @"=.215"(%"RawPtr[UInt]"* %19, %"RawPtr[UInt]"* %21) + call void @"=.207"(%"RawPtr[UInt]"* %19, %"RawPtr[UInt]"* %21) %22 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %23 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %22, i32 0, i32 0 - call void @ctor.220(%"RawPtr[UInt]"* %dst, %"RawPtr[UInt]"* %23) + call void @ctor.212(%"RawPtr[UInt]"* %dst, %"RawPtr[UInt]"* %23) %24 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr %25 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %24, i32 0, i32 0 - call void @ctor.220(%"RawPtr[UInt]"* %src, %"RawPtr[UInt]"* %25) - br label %while_block - -while_block: ; preds = %while_step, %code - %26 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr - %27 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %26, i32 0, i32 1 - %28 = call i1 @"==.221"(%"RawPtr[UInt]"* %dst, %"RawPtr[UInt]"* %27) - %29 = xor i1 true, %28 - br i1 %29, label %while_body, label %while_end - -while_body: ; preds = %while_block - %30 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %src - %31 = call i32* @value.222(%"RawPtr[UInt]" %30) - %32 = load i32, i32* %31 - %33 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %dst - %34 = call i32* @value.222(%"RawPtr[UInt]" %33) - store i32 %32, i32* %34 - %35 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %dst - call void @advance.223(%"RawPtr[UInt]"* %"$tmpC2", %"RawPtr[UInt]" %35) - call void @"=.215"(%"RawPtr[UInt]"* %dst, %"RawPtr[UInt]"* %"$tmpC2") - %36 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %src - call void @advance.223(%"RawPtr[UInt]"* %"$tmpC3", %"RawPtr[UInt]" %36) - call void @"=.215"(%"RawPtr[UInt]"* %src, %"RawPtr[UInt]"* %"$tmpC3") - br label %while_step - -while_step: ; preds = %while_body - br label %while_block - -while_end: ; preds = %while_block + call void @ctor.212(%"RawPtr[UInt]"* %src, %"RawPtr[UInt]"* %25) + %26 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %dst + %27 = call i8* @bytePtr.206(%"RawPtr[UInt]" %26) + %28 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %src + %29 = call i8* @bytePtr.206(%"RawPtr[UInt]" %28) + %30 = load i64, i64* %size + %31 = mul i64 %30, 4 + call void @_spr_memcpy(i8* %27, i8* %29, i64 %31) ret void } ; Function Attrs: inlinehint nounwind -define internal i64 @size.212(%"Vector[UInt]"* %this) #4 { +define internal i64 @size.204(%"Vector[UInt]"* %this) #4 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -6956,38 +6752,38 @@ code: ; preds = %0 %4 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %5 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %4, i32 0, i32 0 %6 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %5 - %7 = call i64 @diff.213(%"RawPtr[UInt]" %3, %"RawPtr[UInt]" %6) - store i64 %7, i64* %tmp.v - %8 = load i64, i64* %tmp.v + %7 = call i64 @diff.205(%"RawPtr[UInt]" %3, %"RawPtr[UInt]" %6) + store i64 %7, i64* %tmp.this + %8 = load i64, i64* %tmp.this ret i64 %8 } ; Function Attrs: inlinehint nounwind -define internal i64 @diff.213(%"RawPtr[UInt]" %this, %"RawPtr[UInt]" %other) #4 { +define internal i64 @diff.205(%"RawPtr[UInt]" %this, %"RawPtr[UInt]" %other) #4 { %this.addr = alloca %"RawPtr[UInt]" store %"RawPtr[UInt]" %this, %"RawPtr[UInt]"* %this.addr %other.addr = alloca %"RawPtr[UInt]" store %"RawPtr[UInt]" %other, %"RawPtr[UInt]"* %other.addr - %tmp.v = alloca i64 - %tmp.v1 = alloca i64 + %tmp.this = alloca i64 + %tmp.this1 = alloca i64 br label %code code: ; preds = %0 %1 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %this.addr - %2 = call i8* @bytePtr.214(%"RawPtr[UInt]" %1) + %2 = call i8* @bytePtr.206(%"RawPtr[UInt]" %1) %3 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %other.addr - %4 = call i8* @bytePtr.214(%"RawPtr[UInt]" %3) + %4 = call i8* @bytePtr.206(%"RawPtr[UInt]" %3) %5 = call i64 @ptrDiff(i8* %2, i8* %4) - store i64 4, i64* %tmp.v1 - %6 = load i64, i64* %tmp.v1 + store i64 4, i64* %tmp.this1 + %6 = load i64, i64* %tmp.this1 %7 = sdiv i64 %5, %6 - store i64 %7, i64* %tmp.v - %8 = load i64, i64* %tmp.v + store i64 %7, i64* %tmp.this + %8 = load i64, i64* %tmp.this ret i64 %8 } ; Function Attrs: inlinehint nounwind -define internal i8* @bytePtr.214(%"RawPtr[UInt]" %this) #4 { +define internal i8* @bytePtr.206(%"RawPtr[UInt]" %this) #4 { %this.addr = alloca %"RawPtr[UInt]" store %"RawPtr[UInt]" %this, %"RawPtr[UInt]"* %this.addr br label %code @@ -7000,7 +6796,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.215"(%"RawPtr[UInt]"* %this, %"RawPtr[UInt]"* %other) #3 { +define internal void @"=.207"(%"RawPtr[UInt]"* %this, %"RawPtr[UInt]"* %other) #3 { %this.addr = alloca %"RawPtr[UInt]"* store %"RawPtr[UInt]"* %this, %"RawPtr[UInt]"** %this.addr %other.addr = alloca %"RawPtr[UInt]"* @@ -7018,7 +6814,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @allocRawPtr.216(%"RawPtr[UInt]"* sret %_result, i64 %num) #4 { +define internal void @allocRawPtr.208(%"RawPtr[UInt]"* sret %_result, i64 %num) #4 { %_result.addr = alloca %"RawPtr[UInt]"* store %"RawPtr[UInt]"* %_result, %"RawPtr[UInt]"** %_result.addr %num.addr = alloca i64 @@ -7031,12 +6827,12 @@ code: ; preds = %0 %3 = mul i64 %2, 4 %4 = call i8* @malloc(i64 %3) %5 = bitcast i8* %4 to i32* - call void @ctor.217(%"RawPtr[UInt]"* %1, i32* %5) + call void @ctor.209(%"RawPtr[UInt]"* %1, i32* %5) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.217(%"RawPtr[UInt]"* %this, i32* %f_ptr) #3 { +define internal void @ctor.209(%"RawPtr[UInt]"* %this, i32* %f_ptr) #3 { %this.addr = alloca %"RawPtr[UInt]"* store %"RawPtr[UInt]"* %this, %"RawPtr[UInt]"** %this.addr %f_ptr.addr = alloca i32* @@ -7052,7 +6848,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @advance.218(%"RawPtr[UInt]"* sret %_result, %"RawPtr[UInt]" %this, i64 %n) #4 { +define internal void @advance.210(%"RawPtr[UInt]"* sret %_result, %"RawPtr[UInt]" %this, i64 %n) #4 { %_result.addr = alloca %"RawPtr[UInt]"* store %"RawPtr[UInt]"* %_result, %"RawPtr[UInt]"** %_result.addr %this.addr = alloca %"RawPtr[UInt]" @@ -7064,16 +6860,16 @@ define internal void @advance.218(%"RawPtr[UInt]"* sret %_result, %"RawPtr[UInt] code: ; preds = %0 %1 = load %"RawPtr[UInt]"*, %"RawPtr[UInt]"** %_result.addr %2 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %this.addr - %3 = call i8* @bytePtr.214(%"RawPtr[UInt]" %2) + %3 = call i8* @bytePtr.206(%"RawPtr[UInt]" %2) %4 = load i64, i64* %n.addr %5 = mul i64 %4, 4 %6 = call i8* @ptrAdd(i8* %3, i64 %5) - call void @ctor.219(%"RawPtr[UInt]"* %1, i8* %6) + call void @ctor.211(%"RawPtr[UInt]"* %1, i8* %6) ret void } ; Function Attrs: inlinehint nounwind -define internal void @ctor.219(%"RawPtr[UInt]"* %this, i8* %byteRef) #4 { +define internal void @ctor.211(%"RawPtr[UInt]"* %this, i8* %byteRef) #4 { %this.addr = alloca %"RawPtr[UInt]"* store %"RawPtr[UInt]"* %this, %"RawPtr[UInt]"** %this.addr %byteRef.addr = alloca i8* @@ -7093,7 +6889,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.220(%"RawPtr[UInt]"* %this, %"RawPtr[UInt]"* %other) #3 { +define internal void @ctor.212(%"RawPtr[UInt]"* %this, %"RawPtr[UInt]"* %other) #3 { %this.addr = alloca %"RawPtr[UInt]"* store %"RawPtr[UInt]"* %this, %"RawPtr[UInt]"** %this.addr %other.addr = alloca %"RawPtr[UInt]"* @@ -7111,61 +6907,11 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.221"(%"RawPtr[UInt]"* %this, %"RawPtr[UInt]"* %other) #3 { - %this.addr = alloca %"RawPtr[UInt]"* - store %"RawPtr[UInt]"* %this, %"RawPtr[UInt]"** %this.addr - %other.addr = alloca %"RawPtr[UInt]"* - store %"RawPtr[UInt]"* %other, %"RawPtr[UInt]"** %other.addr - br label %code - -code: ; preds = %0 - %1 = load %"RawPtr[UInt]"*, %"RawPtr[UInt]"** %this.addr - %2 = getelementptr inbounds %"RawPtr[UInt]", %"RawPtr[UInt]"* %1, i32 0, i32 0 - %3 = load i32*, i32** %2 - %4 = bitcast i32* %3 to i8* - %5 = load %"RawPtr[UInt]"*, %"RawPtr[UInt]"** %other.addr - %6 = getelementptr inbounds %"RawPtr[UInt]", %"RawPtr[UInt]"* %5, i32 0, i32 0 - %7 = load i32*, i32** %6 - %8 = bitcast i32* %7 to i8* - %9 = call i1 @implOpRefEQ(i8* %4, i8* %8) - ret i1 %9 -} - -; Function Attrs: inlinehint nounwind -define internal i32* @value.222(%"RawPtr[UInt]" %this) #4 { - %this.addr = alloca %"RawPtr[UInt]" - store %"RawPtr[UInt]" %this, %"RawPtr[UInt]"* %this.addr - br label %code - -code: ; preds = %0 - %1 = getelementptr inbounds %"RawPtr[UInt]", %"RawPtr[UInt]"* %this.addr, i32 0, i32 0 - %2 = load i32*, i32** %1 - ret i32* %2 -} - -; Function Attrs: inlinehint nounwind -define internal void @advance.223(%"RawPtr[UInt]"* sret %_result, %"RawPtr[UInt]" %this) #4 { - %_result.addr = alloca %"RawPtr[UInt]"* - store %"RawPtr[UInt]"* %_result, %"RawPtr[UInt]"** %_result.addr - %this.addr = alloca %"RawPtr[UInt]" - store %"RawPtr[UInt]" %this, %"RawPtr[UInt]"* %this.addr - br label %code - -code: ; preds = %0 - %1 = load %"RawPtr[UInt]"*, %"RawPtr[UInt]"** %_result.addr - %2 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %this.addr - %3 = call i8* @bytePtr.214(%"RawPtr[UInt]" %2) - %4 = call i8* @ptrAdd(i8* %3, i64 4) - call void @ctor.219(%"RawPtr[UInt]"* %1, i8* %4) - ret void -} - -; Function Attrs: alwaysinline nounwind -define internal void @ctor.224(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %other) #3 { - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %other.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %other, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %other.addr +define internal void @ctor.213(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %other) #3 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr + %other.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %other, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %other.addr br label %code code: ; preds = %0 @@ -7173,12 +6919,12 @@ code: ; preds = %0 %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 0 %3 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %other.addr %4 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %3, i32 0, i32 0 - call void @ctor.225(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %2, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %4) + call void @ctor.214(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %2, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %4) %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 1 %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %other.addr %8 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %7, i32 0, i32 1 - call void @ctor.190(%Token* %6, %Token* %8) + call void @ctor.182(%Token* %6, %Token* %8) %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %other.addr %10 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9, i32 0, i32 2 %11 = load i1, i1* %10 @@ -7189,7 +6935,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.225(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %other) #3 { +define internal void @ctor.214(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %other) #3 { %this.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr %other.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* @@ -7201,17 +6947,17 @@ code: ; preds = %0 %2 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %1, i32 0, i32 0 %3 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %other.addr %4 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %3, i32 0, i32 0 - call void @ctor.196(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %2, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %4) + call void @ctor.188(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %2, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %4) %5 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr %6 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %5, i32 0, i32 1 %7 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %other.addr %8 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %7, i32 0, i32 1 - call void @ctor.198(%"Vector[Token]"* %6, %"Vector[Token]"* %8) + call void @ctor.190(%"Vector[Token]"* %6, %"Vector[Token]"* %8) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.226(%ParserContext* %this) #3 { +define internal void @dtor.215(%ParserContext* %this) #3 { %this.addr = alloca %ParserContext* store %ParserContext* %this, %ParserContext** %this.addr br label %code @@ -7219,21 +6965,21 @@ define internal void @dtor.226(%ParserContext* %this) #3 { code: ; preds = %0 %1 = load %ParserContext*, %ParserContext** %this.addr %2 = getelementptr inbounds %ParserContext, %ParserContext* %1, i32 0, i32 5 - call void @dtor.227(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2) + call void @dtor.216(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2) %3 = load %ParserContext*, %ParserContext** %this.addr %4 = getelementptr inbounds %ParserContext, %ParserContext* %3, i32 0, i32 4 - call void @dtor.234(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %4) + call void @dtor.223(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %4) %5 = load %ParserContext*, %ParserContext** %this.addr %6 = getelementptr inbounds %ParserContext, %ParserContext* %5, i32 0, i32 3 - call void @dtor.240(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %6) + call void @dtor.234(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %6) %7 = load %ParserContext*, %ParserContext** %this.addr %8 = getelementptr inbounds %ParserContext, %ParserContext* %7, i32 0, i32 0 - call void @dtor.243(%File* %8) + call void @dtor.237(%File* %8) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.227(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this) #3 { +define internal void @dtor.216(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this) #3 { %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr br label %code @@ -7241,15 +6987,15 @@ define internal void @dtor.227(%"SparrowParser[SparrowLayoutDecoder[SparrowScann code: ; preds = %0 %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 1 - call void @dtor.228(%Token* %2) + call void @dtor.217(%Token* %2) %3 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %4 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %3, i32 0, i32 0 - call void @dtor.230(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %4) + call void @dtor.219(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %4) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.228(%Token* %this) #3 { +define internal void @dtor.217(%Token* %this) #3 { %this.addr = alloca %Token* store %Token* %this, %Token** %this.addr br label %code @@ -7257,12 +7003,12 @@ define internal void @dtor.228(%Token* %this) #3 { code: ; preds = %0 %1 = load %Token*, %Token** %this.addr %2 = getelementptr inbounds %Token, %Token* %1, i32 0, i32 2 - call void @dtor.229(%String* %2) + call void @dtor.218(%String* %2) ret void } ; Function Attrs: inlinehint nounwind -define internal void @dtor.229(%String* %this) #4 { +define internal void @dtor.218(%String* %this) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr br label %code @@ -7313,7 +7059,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.230(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this) #3 { +define internal void @dtor.219(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this) #3 { %this.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr br label %code @@ -7321,15 +7067,15 @@ define internal void @dtor.230(%"RangeWithLookahead[SparrowLayoutDecoder[Sparrow code: ; preds = %0 %1 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr %2 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %1, i32 0, i32 1 - call void @dtor.231(%"Vector[Token]"* %2) + call void @dtor.220(%"Vector[Token]"* %2) %3 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr %4 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %3, i32 0, i32 0 - call void @dtor.234(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %4) + call void @dtor.223(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %4) ret void } ; Function Attrs: inlinehint nounwind -define internal void @dtor.231(%"Vector[Token]"* %this) #4 { +define internal void @dtor.220(%"Vector[Token]"* %this) #4 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr %p = alloca %"RawPtr[Token]" @@ -7339,38 +7085,38 @@ define internal void @dtor.231(%"Vector[Token]"* %this) #4 { code: ; preds = %0 %1 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %2 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %1, i32 0, i32 0 - call void @ctor.207(%"RawPtr[Token]"* %p, %"RawPtr[Token]"* %2) + call void @ctor.199(%"RawPtr[Token]"* %p, %"RawPtr[Token]"* %2) br label %while_block while_block: ; preds = %while_step, %code %3 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %4 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %3, i32 0, i32 1 - %5 = call i1 @"==.208"(%"RawPtr[Token]"* %p, %"RawPtr[Token]"* %4) + %5 = call i1 @"==.200"(%"RawPtr[Token]"* %p, %"RawPtr[Token]"* %4) %6 = xor i1 true, %5 br i1 %6, label %while_body, label %while_end while_body: ; preds = %while_block %7 = load %"RawPtr[Token]", %"RawPtr[Token]"* %p - %8 = call %Token* @value.209(%"RawPtr[Token]" %7) - call void @dtor.228(%Token* %8) + %8 = call %Token* @value.201(%"RawPtr[Token]" %7) + call void @dtor.217(%Token* %8) br label %while_step while_step: ; preds = %while_body %9 = load %"RawPtr[Token]", %"RawPtr[Token]"* %p - call void @advance.210(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %9) - call void @"=.202"(%"RawPtr[Token]"* %p, %"RawPtr[Token]"* %"$tmpC") + call void @advance.202(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %9) + call void @"=.194"(%"RawPtr[Token]"* %p, %"RawPtr[Token]"* %"$tmpC") br label %while_block while_end: ; preds = %while_block %10 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %11 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %10, i32 0, i32 0 %12 = load %"RawPtr[Token]", %"RawPtr[Token]"* %11 - call void @freePtr.232(%"RawPtr[Token]" %12) + call void @freePtr.221(%"RawPtr[Token]" %12) ret void } ; Function Attrs: inlinehint nounwind -define internal void @freePtr.232(%"RawPtr[Token]" %this) #4 { +define internal void @freePtr.221(%"RawPtr[Token]" %this) #4 { %this.addr = alloca %"RawPtr[Token]" store %"RawPtr[Token]" %this, %"RawPtr[Token]"* %this.addr br label %code @@ -7380,12 +7126,12 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %"RawPtr[Token]", %"RawPtr[Token]"* %this.addr - %2 = call i1 @isSet.233(%"RawPtr[Token]" %1) + %2 = call i1 @isSet.222(%"RawPtr[Token]" %1) br i1 %2, label %if_then, label %if_end if_then: ; preds = %if_block %3 = load %"RawPtr[Token]", %"RawPtr[Token]"* %this.addr - %4 = call i8* @bytePtr.201(%"RawPtr[Token]" %3) + %4 = call i8* @bytePtr.193(%"RawPtr[Token]" %3) call void @free(i8* %4) br label %if_end @@ -7394,7 +7140,7 @@ if_end: ; preds = %if_then, %if_block } ; Function Attrs: inlinehint nounwind -define internal i1 @isSet.233(%"RawPtr[Token]" %this) #4 { +define internal i1 @isSet.222(%"RawPtr[Token]" %this) #4 { %this.addr = alloca %"RawPtr[Token]" store %"RawPtr[Token]" %this, %"RawPtr[Token]"* %this.addr br label %code @@ -7408,7 +7154,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.234(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this) #3 { +define internal void @dtor.223(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this) #3 { %this.addr = alloca %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* store %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr br label %code @@ -7416,18 +7162,18 @@ define internal void @dtor.234(%"SparrowLayoutDecoder[SparrowScanner[_CharSource code: ; preds = %0 %1 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %2 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 3 - call void @dtor.235(%"Vector[Char]"* %2) + call void @dtor.224(%"Vector[Char]"* %2) %3 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %4 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %3, i32 0, i32 2 - call void @dtor.236(%"Vector[UInt]"* %4) + call void @dtor.227(%"Vector[UInt]"* %4) %5 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %6 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 0 - call void @dtor.239(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %6) + call void @dtor.233(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %6) ret void } ; Function Attrs: inlinehint nounwind -define internal void @dtor.235(%"Vector[Char]"* %this) #4 { +define internal void @dtor.224(%"Vector[Char]"* %this) #4 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr %p = alloca %"RawPtr[Char]" @@ -7437,13 +7183,13 @@ define internal void @dtor.235(%"Vector[Char]"* %this) #4 { code: ; preds = %0 %1 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %2 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %1, i32 0, i32 0 - call void @ctor.187(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %2) + call void @ctor.181(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %2) br label %while_block while_block: ; preds = %while_step, %code %3 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %4 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %3, i32 0, i32 1 - %5 = call i1 @"==.188"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %4) + %5 = call i1 @"==.225"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %4) %6 = xor i1 true, %5 br i1 %6, label %while_body, label %while_end @@ -7455,8 +7201,8 @@ while_body: ; preds = %while_block while_step: ; preds = %while_body %10 = load %"RawPtr[Char]", %"RawPtr[Char]"* %p - call void @advance.189(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %10) - call void @"=.184"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %"$tmpC") + call void @advance.226(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %10) + call void @"=.178"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %"$tmpC") br label %while_block while_end: ; preds = %while_block @@ -7467,8 +7213,44 @@ while_end: ; preds = %while_block ret void } +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.225"(%"RawPtr[Char]"* %this, %"RawPtr[Char]"* %other) #3 { + %this.addr = alloca %"RawPtr[Char]"* + store %"RawPtr[Char]"* %this, %"RawPtr[Char]"** %this.addr + %other.addr = alloca %"RawPtr[Char]"* + store %"RawPtr[Char]"* %other, %"RawPtr[Char]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %this.addr + %2 = getelementptr inbounds %"RawPtr[Char]", %"RawPtr[Char]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %other.addr + %5 = getelementptr inbounds %"RawPtr[Char]", %"RawPtr[Char]"* %4, i32 0, i32 0 + %6 = load i8*, i8** %5 + %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) + ret i1 %7 +} + +; Function Attrs: inlinehint nounwind +define internal void @advance.226(%"RawPtr[Char]"* sret %_result, %"RawPtr[Char]" %this) #4 { + %_result.addr = alloca %"RawPtr[Char]"* + store %"RawPtr[Char]"* %_result, %"RawPtr[Char]"** %_result.addr + %this.addr = alloca %"RawPtr[Char]" + store %"RawPtr[Char]" %this, %"RawPtr[Char]"* %this.addr + br label %code + +code: ; preds = %0 + %1 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %_result.addr + %2 = load %"RawPtr[Char]", %"RawPtr[Char]"* %this.addr + %3 = call i8* @bytePtr(%"RawPtr[Char]" %2) + %4 = call i8* @ptrAdd(i8* %3, i64 1) + call void @ctor.180(%"RawPtr[Char]"* %1, i8* %4) + ret void +} + ; Function Attrs: inlinehint nounwind -define internal void @dtor.236(%"Vector[UInt]"* %this) #4 { +define internal void @dtor.227(%"Vector[UInt]"* %this) #4 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr %p = alloca %"RawPtr[UInt]" @@ -7478,38 +7260,88 @@ define internal void @dtor.236(%"Vector[UInt]"* %this) #4 { code: ; preds = %0 %1 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %2 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %1, i32 0, i32 0 - call void @ctor.220(%"RawPtr[UInt]"* %p, %"RawPtr[UInt]"* %2) + call void @ctor.212(%"RawPtr[UInt]"* %p, %"RawPtr[UInt]"* %2) br label %while_block while_block: ; preds = %while_step, %code %3 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %4 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %3, i32 0, i32 1 - %5 = call i1 @"==.221"(%"RawPtr[UInt]"* %p, %"RawPtr[UInt]"* %4) + %5 = call i1 @"==.228"(%"RawPtr[UInt]"* %p, %"RawPtr[UInt]"* %4) %6 = xor i1 true, %5 br i1 %6, label %while_body, label %while_end while_body: ; preds = %while_block %7 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %p - %8 = call i32* @value.222(%"RawPtr[UInt]" %7) + %8 = call i32* @value.229(%"RawPtr[UInt]" %7) %9 = load i32, i32* %8 br label %while_step while_step: ; preds = %while_body %10 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %p - call void @advance.223(%"RawPtr[UInt]"* %"$tmpC", %"RawPtr[UInt]" %10) - call void @"=.215"(%"RawPtr[UInt]"* %p, %"RawPtr[UInt]"* %"$tmpC") + call void @advance.230(%"RawPtr[UInt]"* %"$tmpC", %"RawPtr[UInt]" %10) + call void @"=.207"(%"RawPtr[UInt]"* %p, %"RawPtr[UInt]"* %"$tmpC") br label %while_block while_end: ; preds = %while_block %11 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %12 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %11, i32 0, i32 0 %13 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %12 - call void @freePtr.237(%"RawPtr[UInt]" %13) + call void @freePtr.231(%"RawPtr[UInt]" %13) + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.228"(%"RawPtr[UInt]"* %this, %"RawPtr[UInt]"* %other) #3 { + %this.addr = alloca %"RawPtr[UInt]"* + store %"RawPtr[UInt]"* %this, %"RawPtr[UInt]"** %this.addr + %other.addr = alloca %"RawPtr[UInt]"* + store %"RawPtr[UInt]"* %other, %"RawPtr[UInt]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"RawPtr[UInt]"*, %"RawPtr[UInt]"** %this.addr + %2 = getelementptr inbounds %"RawPtr[UInt]", %"RawPtr[UInt]"* %1, i32 0, i32 0 + %3 = load i32*, i32** %2 + %4 = bitcast i32* %3 to i8* + %5 = load %"RawPtr[UInt]"*, %"RawPtr[UInt]"** %other.addr + %6 = getelementptr inbounds %"RawPtr[UInt]", %"RawPtr[UInt]"* %5, i32 0, i32 0 + %7 = load i32*, i32** %6 + %8 = bitcast i32* %7 to i8* + %9 = call i1 @implOpRefEQ(i8* %4, i8* %8) + ret i1 %9 +} + +; Function Attrs: inlinehint nounwind +define internal i32* @value.229(%"RawPtr[UInt]" %this) #4 { + %this.addr = alloca %"RawPtr[UInt]" + store %"RawPtr[UInt]" %this, %"RawPtr[UInt]"* %this.addr + br label %code + +code: ; preds = %0 + %1 = getelementptr inbounds %"RawPtr[UInt]", %"RawPtr[UInt]"* %this.addr, i32 0, i32 0 + %2 = load i32*, i32** %1 + ret i32* %2 +} + +; Function Attrs: inlinehint nounwind +define internal void @advance.230(%"RawPtr[UInt]"* sret %_result, %"RawPtr[UInt]" %this) #4 { + %_result.addr = alloca %"RawPtr[UInt]"* + store %"RawPtr[UInt]"* %_result, %"RawPtr[UInt]"** %_result.addr + %this.addr = alloca %"RawPtr[UInt]" + store %"RawPtr[UInt]" %this, %"RawPtr[UInt]"* %this.addr + br label %code + +code: ; preds = %0 + %1 = load %"RawPtr[UInt]"*, %"RawPtr[UInt]"** %_result.addr + %2 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %this.addr + %3 = call i8* @bytePtr.206(%"RawPtr[UInt]" %2) + %4 = call i8* @ptrAdd(i8* %3, i64 4) + call void @ctor.211(%"RawPtr[UInt]"* %1, i8* %4) ret void } ; Function Attrs: inlinehint nounwind -define internal void @freePtr.237(%"RawPtr[UInt]" %this) #4 { +define internal void @freePtr.231(%"RawPtr[UInt]" %this) #4 { %this.addr = alloca %"RawPtr[UInt]" store %"RawPtr[UInt]" %this, %"RawPtr[UInt]"* %this.addr br label %code @@ -7519,12 +7351,12 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %this.addr - %2 = call i1 @isSet.238(%"RawPtr[UInt]" %1) + %2 = call i1 @isSet.232(%"RawPtr[UInt]" %1) br i1 %2, label %if_then, label %if_end if_then: ; preds = %if_block %3 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %this.addr - %4 = call i8* @bytePtr.214(%"RawPtr[UInt]" %3) + %4 = call i8* @bytePtr.206(%"RawPtr[UInt]" %3) call void @free(i8* %4) br label %if_end @@ -7533,7 +7365,7 @@ if_end: ; preds = %if_then, %if_block } ; Function Attrs: inlinehint nounwind -define internal i1 @isSet.238(%"RawPtr[UInt]" %this) #4 { +define internal i1 @isSet.232(%"RawPtr[UInt]" %this) #4 { %this.addr = alloca %"RawPtr[UInt]" store %"RawPtr[UInt]" %this, %"RawPtr[UInt]"* %this.addr br label %code @@ -7547,7 +7379,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.239(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this) #3 { +define internal void @dtor.233(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this) #3 { %this.addr = alloca %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* store %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr br label %code @@ -7555,15 +7387,15 @@ define internal void @dtor.239(%"RangeWithLookahead[SparrowScanner[_CharSource, code: ; preds = %0 %1 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr %2 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %1, i32 0, i32 1 - call void @dtor.231(%"Vector[Token]"* %2) + call void @dtor.220(%"Vector[Token]"* %2) %3 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr %4 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %3, i32 0, i32 0 - call void @dtor.240(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %4) + call void @dtor.234(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %4) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.240(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this) #3 { +define internal void @dtor.234(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this) #3 { %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr br label %code @@ -7571,15 +7403,15 @@ define internal void @dtor.240(%"SparrowScanner[_CharSource, ExternalErrorReport code: ; preds = %0 %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 2 - call void @dtor.228(%Token* %2) + call void @dtor.217(%Token* %2) %3 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %4 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %3, i32 0, i32 1 - call void @dtor.241(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %4) + call void @dtor.235(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %4) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.241(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this) #3 { +define internal void @dtor.235(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this) #3 { %this.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr br label %code @@ -7587,12 +7419,12 @@ define internal void @dtor.241(%"LocationSyncCharRange[RangeWithLookahead[_CharS code: ; preds = %0 %1 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr %2 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1, i32 0, i32 0 - call void @dtor.242(%"RangeWithLookahead[_CharSource]"* %2) + call void @dtor.236(%"RangeWithLookahead[_CharSource]"* %2) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.242(%"RangeWithLookahead[_CharSource]"* %this) #3 { +define internal void @dtor.236(%"RangeWithLookahead[_CharSource]"* %this) #3 { %this.addr = alloca %"RangeWithLookahead[_CharSource]"* store %"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"** %this.addr br label %code @@ -7600,12 +7432,12 @@ define internal void @dtor.242(%"RangeWithLookahead[_CharSource]"* %this) #3 { code: ; preds = %0 %1 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr %2 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %1, i32 0, i32 1 - call void @dtor.235(%"Vector[Char]"* %2) + call void @dtor.224(%"Vector[Char]"* %2) ret void } ; Function Attrs: inlinehint nounwind -define internal void @dtor.243(%File* %this) #4 { +define internal void @dtor.237(%File* %this) #4 { %this.addr = alloca %File* store %File* %this, %File** %this.addr br label %code @@ -7661,7 +7493,7 @@ code: ; preds = %0 declare void @fclose(i8*) ; Function Attrs: alwaysinline nounwind -define internal void @"=.244"(%ParserContext* %this, %ParserContext* %other) #3 { +define internal void @"=.238"(%ParserContext* %this, %ParserContext* %other) #3 { %this.addr = alloca %ParserContext* store %ParserContext* %this, %ParserContext** %this.addr %other.addr = alloca %ParserContext* @@ -7673,37 +7505,37 @@ code: ; preds = %0 %2 = getelementptr inbounds %ParserContext, %ParserContext* %1, i32 0, i32 0 %3 = load %ParserContext*, %ParserContext** %other.addr %4 = getelementptr inbounds %ParserContext, %ParserContext* %3, i32 0, i32 0 - call void @"=.245"(%File* %2, %File* %4) + call void @"=.239"(%File* %2, %File* %4) %5 = load %ParserContext*, %ParserContext** %this.addr %6 = getelementptr inbounds %ParserContext, %ParserContext* %5, i32 0, i32 1 %7 = load %ParserContext*, %ParserContext** %other.addr %8 = getelementptr inbounds %ParserContext, %ParserContext* %7, i32 0, i32 1 - call void @"=.246"(%FileRange* %6, %FileRange* %8) + call void @"=.240"(%FileRange* %6, %FileRange* %8) %9 = load %ParserContext*, %ParserContext** %this.addr %10 = getelementptr inbounds %ParserContext, %ParserContext* %9, i32 0, i32 2 %11 = load %ParserContext*, %ParserContext** %other.addr %12 = getelementptr inbounds %ParserContext, %ParserContext* %11, i32 0, i32 2 - call void @"=.142"(%_CharSource* %10, %_CharSource* %12) + call void @"=.136"(%_CharSource* %10, %_CharSource* %12) %13 = load %ParserContext*, %ParserContext** %this.addr %14 = getelementptr inbounds %ParserContext, %ParserContext* %13, i32 0, i32 3 %15 = load %ParserContext*, %ParserContext** %other.addr %16 = getelementptr inbounds %ParserContext, %ParserContext* %15, i32 0, i32 3 - call void @"=.247"(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %14, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %16) + call void @"=.241"(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %14, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %16) %17 = load %ParserContext*, %ParserContext** %this.addr %18 = getelementptr inbounds %ParserContext, %ParserContext* %17, i32 0, i32 4 %19 = load %ParserContext*, %ParserContext** %other.addr %20 = getelementptr inbounds %ParserContext, %ParserContext* %19, i32 0, i32 4 - call void @"=.259"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %18, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %20) + call void @"=.253"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %18, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %20) %21 = load %ParserContext*, %ParserContext** %this.addr %22 = getelementptr inbounds %ParserContext, %ParserContext* %21, i32 0, i32 5 %23 = load %ParserContext*, %ParserContext** %other.addr %24 = getelementptr inbounds %ParserContext, %ParserContext* %23, i32 0, i32 5 - call void @"=.265"(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %22, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %24) + call void @"=.259"(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %22, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %24) ret void } ; Function Attrs: inlinehint nounwind -define internal void @"=.245"(%File* %this, %File* %other) #4 { +define internal void @"=.239"(%File* %this, %File* %other) #4 { %this.addr = alloca %File* store %File* %this, %File** %this.addr %other.addr = alloca %File* @@ -7724,7 +7556,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.246"(%FileRange* %this, %FileRange* %other) #3 { +define internal void @"=.240"(%FileRange* %this, %FileRange* %other) #3 { %this.addr = alloca %FileRange* store %FileRange* %this, %FileRange** %this.addr %other.addr = alloca %FileRange* @@ -7754,7 +7586,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.247"(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %other) #3 { +define internal void @"=.241"(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %other) #3 { %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %other.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* @@ -7766,17 +7598,17 @@ code: ; preds = %0 %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 0 %3 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %other.addr %4 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %3, i32 0, i32 0 - call void @"=.248"(%Location* %2, %Location* %4) + call void @"=.242"(%Location* %2, %Location* %4) %5 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %6 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %5, i32 0, i32 1 %7 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %other.addr %8 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %7, i32 0, i32 1 - call void @"=.251"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %6, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %8) + call void @"=.245"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %6, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %8) %9 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %10 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %9, i32 0, i32 2 %11 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %other.addr %12 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %11, i32 0, i32 2 - call void @"=.254"(%Token* %10, %Token* %12) + call void @"=.248"(%Token* %10, %Token* %12) %13 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %other.addr %14 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %13, i32 0, i32 3 %15 = load i1, i1* %14 @@ -7787,7 +7619,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.248"(%Location* %this, %Location* %other) #3 { +define internal void @"=.242"(%Location* %this, %Location* %other) #3 { %this.addr = alloca %Location* store %Location* %this, %Location** %this.addr %other.addr = alloca %Location* @@ -7799,22 +7631,22 @@ code: ; preds = %0 %2 = getelementptr inbounds %Location, %Location* %1, i32 0, i32 0 %3 = load %Location*, %Location** %other.addr %4 = getelementptr inbounds %Location, %Location* %3, i32 0, i32 0 - call void @"=.249"(%SourceCode* %2, %SourceCode* %4) + call void @"=.243"(%SourceCode* %2, %SourceCode* %4) %5 = load %Location*, %Location** %this.addr %6 = getelementptr inbounds %Location, %Location* %5, i32 0, i32 1 %7 = load %Location*, %Location** %other.addr %8 = getelementptr inbounds %Location, %Location* %7, i32 0, i32 1 - call void @"=.250"(%LineCol* %6, %LineCol* %8) + call void @"=.244"(%LineCol* %6, %LineCol* %8) %9 = load %Location*, %Location** %this.addr %10 = getelementptr inbounds %Location, %Location* %9, i32 0, i32 2 %11 = load %Location*, %Location** %other.addr %12 = getelementptr inbounds %Location, %Location* %11, i32 0, i32 2 - call void @"=.250"(%LineCol* %10, %LineCol* %12) + call void @"=.244"(%LineCol* %10, %LineCol* %12) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @"=.249"(%SourceCode* %this, %SourceCode* %other) #3 { +define internal void @"=.243"(%SourceCode* %this, %SourceCode* %other) #3 { %this.addr = alloca %SourceCode* store %SourceCode* %this, %SourceCode** %this.addr %other.addr = alloca %SourceCode* @@ -7832,7 +7664,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.250"(%LineCol* %this, %LineCol* %other) #3 { +define internal void @"=.244"(%LineCol* %this, %LineCol* %other) #3 { %this.addr = alloca %LineCol* store %LineCol* %this, %LineCol** %this.addr %other.addr = alloca %LineCol* @@ -7856,7 +7688,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.251"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %other) #3 { +define internal void @"=.245"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %other) #3 { %this.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr %other.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* @@ -7868,7 +7700,7 @@ code: ; preds = %0 %2 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1, i32 0, i32 0 %3 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %other.addr %4 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %3, i32 0, i32 0 - call void @"=.252"(%"RangeWithLookahead[_CharSource]"* %2, %"RangeWithLookahead[_CharSource]"* %4) + call void @"=.246"(%"RangeWithLookahead[_CharSource]"* %2, %"RangeWithLookahead[_CharSource]"* %4) %5 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %other.addr %6 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5, i32 0, i32 1 %7 = load %Location*, %Location** %6 @@ -7879,7 +7711,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.252"(%"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"* %other) #3 { +define internal void @"=.246"(%"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"* %other) #3 { %this.addr = alloca %"RangeWithLookahead[_CharSource]"* store %"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"** %this.addr %other.addr = alloca %"RangeWithLookahead[_CharSource]"* @@ -7891,17 +7723,17 @@ code: ; preds = %0 %2 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %1, i32 0, i32 0 %3 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %other.addr %4 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %3, i32 0, i32 0 - call void @"=.142"(%_CharSource* %2, %_CharSource* %4) + call void @"=.136"(%_CharSource* %2, %_CharSource* %4) %5 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr %6 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %5, i32 0, i32 1 %7 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %other.addr %8 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %7, i32 0, i32 1 - %9 = call %"Vector[Char]"** @"=.253"(%"Vector[Char]"* %6, %"Vector[Char]"* %8) + %9 = call %"Vector[Char]"** @"=.247"(%"Vector[Char]"* %6, %"Vector[Char]"* %8) ret void } ; Function Attrs: inlinehint nounwind -define internal %"Vector[Char]"** @"=.253"(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #4 { +define internal %"Vector[Char]"** @"=.247"(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #4 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr %other.addr = alloca %"Vector[Char]"* @@ -7911,14 +7743,14 @@ define internal %"Vector[Char]"** @"=.253"(%"Vector[Char]"* %this, %"Vector[Char code: ; preds = %0 %1 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr - call void @ctor.182(%"Vector[Char]"* %tmp, %"Vector[Char]"* %1) + call void @ctor.176(%"Vector[Char]"* %tmp, %"Vector[Char]"* %1) %2 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr call void @swap(%"Vector[Char]"* %tmp, %"Vector[Char]"* %2) - call void @dtor.235(%"Vector[Char]"* %tmp) + call void @dtor.224(%"Vector[Char]"* %tmp) ret %"Vector[Char]"** %this.addr dumy_block: ; No predecessors! - call void @dtor.235(%"Vector[Char]"* %tmp) + call void @dtor.224(%"Vector[Char]"* %tmp) unreachable } @@ -7934,42 +7766,42 @@ define internal void @swap(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #4 { code: ; preds = %0 %1 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %2 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %1, i32 0, i32 0 - call void @ctor.187(%"RawPtr[Char]"* %tmp, %"RawPtr[Char]"* %2) + call void @ctor.181(%"RawPtr[Char]"* %tmp, %"RawPtr[Char]"* %2) %3 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %4 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %3, i32 0, i32 0 %5 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr %6 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %5, i32 0, i32 0 - call void @"=.184"(%"RawPtr[Char]"* %4, %"RawPtr[Char]"* %6) + call void @"=.178"(%"RawPtr[Char]"* %4, %"RawPtr[Char]"* %6) %7 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr %8 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %7, i32 0, i32 0 - call void @"=.184"(%"RawPtr[Char]"* %8, %"RawPtr[Char]"* %tmp) + call void @"=.178"(%"RawPtr[Char]"* %8, %"RawPtr[Char]"* %tmp) %9 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %10 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %9, i32 0, i32 1 - call void @"=.184"(%"RawPtr[Char]"* %tmp, %"RawPtr[Char]"* %10) + call void @"=.178"(%"RawPtr[Char]"* %tmp, %"RawPtr[Char]"* %10) %11 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %12 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %11, i32 0, i32 1 %13 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr %14 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %13, i32 0, i32 1 - call void @"=.184"(%"RawPtr[Char]"* %12, %"RawPtr[Char]"* %14) + call void @"=.178"(%"RawPtr[Char]"* %12, %"RawPtr[Char]"* %14) %15 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr %16 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %15, i32 0, i32 1 - call void @"=.184"(%"RawPtr[Char]"* %16, %"RawPtr[Char]"* %tmp) + call void @"=.178"(%"RawPtr[Char]"* %16, %"RawPtr[Char]"* %tmp) %17 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %18 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %17, i32 0, i32 2 - call void @"=.184"(%"RawPtr[Char]"* %tmp, %"RawPtr[Char]"* %18) + call void @"=.178"(%"RawPtr[Char]"* %tmp, %"RawPtr[Char]"* %18) %19 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %20 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %19, i32 0, i32 2 %21 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr %22 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %21, i32 0, i32 2 - call void @"=.184"(%"RawPtr[Char]"* %20, %"RawPtr[Char]"* %22) + call void @"=.178"(%"RawPtr[Char]"* %20, %"RawPtr[Char]"* %22) %23 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr %24 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %23, i32 0, i32 2 - call void @"=.184"(%"RawPtr[Char]"* %24, %"RawPtr[Char]"* %tmp) + call void @"=.178"(%"RawPtr[Char]"* %24, %"RawPtr[Char]"* %tmp) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @"=.254"(%Token* %this, %Token* %other) #3 { +define internal void @"=.248"(%Token* %this, %Token* %other) #3 { %this.addr = alloca %Token* store %Token* %this, %Token** %this.addr %other.addr = alloca %Token* @@ -7981,17 +7813,17 @@ code: ; preds = %0 %2 = getelementptr inbounds %Token, %Token* %1, i32 0, i32 0 %3 = load %Token*, %Token** %other.addr %4 = getelementptr inbounds %Token, %Token* %3, i32 0, i32 0 - call void @"=.248"(%Location* %2, %Location* %4) + call void @"=.242"(%Location* %2, %Location* %4) %5 = load %Token*, %Token** %this.addr %6 = getelementptr inbounds %Token, %Token* %5, i32 0, i32 1 %7 = load %Token*, %Token** %other.addr %8 = getelementptr inbounds %Token, %Token* %7, i32 0, i32 1 - call void @"=.255"(%TokenType* %6, %TokenType* %8) + call void @"=.249"(%TokenType* %6, %TokenType* %8) %9 = load %Token*, %Token** %this.addr %10 = getelementptr inbounds %Token, %Token* %9, i32 0, i32 2 %11 = load %Token*, %Token** %other.addr %12 = getelementptr inbounds %Token, %Token* %11, i32 0, i32 2 - %13 = call %String* @"=.256"(%String* %10, %String* %12) + %13 = call %String* @"=.250"(%String* %10, %String* %12) %14 = load %Token*, %Token** %other.addr %15 = getelementptr inbounds %Token, %Token* %14, i32 0, i32 3 %16 = load i64, i64* %15 @@ -8008,7 +7840,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.255"(%TokenType* %this, %TokenType* %other) #3 { +define internal void @"=.249"(%TokenType* %this, %TokenType* %other) #3 { %this.addr = alloca %TokenType* store %TokenType* %this, %TokenType** %this.addr %other.addr = alloca %TokenType* @@ -8026,7 +7858,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal %String* @"=.256"(%String* %this, %String* %other) #4 { +define internal %String* @"=.250"(%String* %this, %String* %other) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr %other.addr = alloca %String* @@ -8036,20 +7868,20 @@ define internal %String* @"=.256"(%String* %this, %String* %other) #4 { code: ; preds = %0 %1 = load %String*, %String** %other.addr - call void @ctor.192(%String* %tmp, %String* %1) + call void @ctor.184(%String* %tmp, %String* %1) %2 = load %String*, %String** %this.addr - call void @swap.257(%String* %tmp, %String* %2) + call void @swap.251(%String* %tmp, %String* %2) %3 = load %String*, %String** %this.addr - call void @dtor.229(%String* %tmp) + call void @dtor.218(%String* %tmp) ret %String* %3 dumy_block: ; No predecessors! - call void @dtor.229(%String* %tmp) + call void @dtor.218(%String* %tmp) unreachable } ; Function Attrs: inlinehint nounwind -define internal void @swap.257(%String* %this, %String* %other) #4 { +define internal void @swap.251(%String* %this, %String* %other) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr %other.addr = alloca %String* @@ -8061,22 +7893,22 @@ code: ; preds = %0 %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 0 %3 = load %String*, %String** %other.addr %4 = getelementptr inbounds %String, %String* %3, i32 0, i32 0 - call void @swap.258(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) + call void @swap.252(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) %5 = load %String*, %String** %this.addr %6 = getelementptr inbounds %String, %String* %5, i32 0, i32 1 %7 = load %String*, %String** %other.addr %8 = getelementptr inbounds %String, %String* %7, i32 0, i32 1 - call void @swap.258(%"RawPtr[Char]"* %6, %"RawPtr[Char]"* %8) + call void @swap.252(%"RawPtr[Char]"* %6, %"RawPtr[Char]"* %8) %9 = load %String*, %String** %this.addr %10 = getelementptr inbounds %String, %String* %9, i32 0, i32 2 %11 = load %String*, %String** %other.addr %12 = getelementptr inbounds %String, %String* %11, i32 0, i32 2 - call void @swap.258(%"RawPtr[Char]"* %10, %"RawPtr[Char]"* %12) + call void @swap.252(%"RawPtr[Char]"* %10, %"RawPtr[Char]"* %12) ret void } ; Function Attrs: inlinehint nounwind -define internal void @swap.258(%"RawPtr[Char]"* %this, %"RawPtr[Char]"* %other) #4 { +define internal void @swap.252(%"RawPtr[Char]"* %this, %"RawPtr[Char]"* %other) #4 { %this.addr = alloca %"RawPtr[Char]"* store %"RawPtr[Char]"* %this, %"RawPtr[Char]"** %this.addr %other.addr = alloca %"RawPtr[Char]"* @@ -8103,7 +7935,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.259"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %other) #3 { +define internal void @"=.253"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %other) #3 { %this.addr = alloca %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* store %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %other.addr = alloca %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* @@ -8115,22 +7947,22 @@ code: ; preds = %0 %2 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 0 %3 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr %4 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %3, i32 0, i32 0 - call void @"=.260"(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %2, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %4) + call void @"=.254"(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %2, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %4) %5 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %6 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 2 %7 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr %8 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %7, i32 0, i32 2 - %9 = call %"Vector[UInt]"** @"=.263"(%"Vector[UInt]"* %6, %"Vector[UInt]"* %8) + %9 = call %"Vector[UInt]"** @"=.257"(%"Vector[UInt]"* %6, %"Vector[UInt]"* %8) %10 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %11 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %10, i32 0, i32 3 %12 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr %13 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %12, i32 0, i32 3 - %14 = call %"Vector[Char]"** @"=.253"(%"Vector[Char]"* %11, %"Vector[Char]"* %13) + %14 = call %"Vector[Char]"** @"=.247"(%"Vector[Char]"* %11, %"Vector[Char]"* %13) %15 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %16 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %15, i32 0, i32 4 %17 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr %18 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %17, i32 0, i32 4 - call void @"=.255"(%TokenType* %16, %TokenType* %18) + call void @"=.249"(%TokenType* %16, %TokenType* %18) %19 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr %20 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %19, i32 0, i32 5 %21 = load i32, i32* %20 @@ -8141,7 +7973,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.260"(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %other) #3 { +define internal void @"=.254"(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %other) #3 { %this.addr = alloca %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* store %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr %other.addr = alloca %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* @@ -8153,17 +7985,17 @@ code: ; preds = %0 %2 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %1, i32 0, i32 0 %3 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %other.addr %4 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %3, i32 0, i32 0 - call void @"=.247"(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %2, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %4) + call void @"=.241"(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %2, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %4) %5 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr %6 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %5, i32 0, i32 1 %7 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %other.addr %8 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %7, i32 0, i32 1 - %9 = call %"Vector[Token]"** @"=.261"(%"Vector[Token]"* %6, %"Vector[Token]"* %8) + %9 = call %"Vector[Token]"** @"=.255"(%"Vector[Token]"* %6, %"Vector[Token]"* %8) ret void } ; Function Attrs: inlinehint nounwind -define internal %"Vector[Token]"** @"=.261"(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #4 { +define internal %"Vector[Token]"** @"=.255"(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #4 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr %other.addr = alloca %"Vector[Token]"* @@ -8173,19 +8005,19 @@ define internal %"Vector[Token]"** @"=.261"(%"Vector[Token]"* %this, %"Vector[To code: ; preds = %0 %1 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr - call void @ctor.198(%"Vector[Token]"* %tmp, %"Vector[Token]"* %1) + call void @ctor.190(%"Vector[Token]"* %tmp, %"Vector[Token]"* %1) %2 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr - call void @swap.262(%"Vector[Token]"* %tmp, %"Vector[Token]"* %2) - call void @dtor.231(%"Vector[Token]"* %tmp) + call void @swap.256(%"Vector[Token]"* %tmp, %"Vector[Token]"* %2) + call void @dtor.220(%"Vector[Token]"* %tmp) ret %"Vector[Token]"** %this.addr dumy_block: ; No predecessors! - call void @dtor.231(%"Vector[Token]"* %tmp) + call void @dtor.220(%"Vector[Token]"* %tmp) unreachable } ; Function Attrs: inlinehint nounwind -define internal void @swap.262(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #4 { +define internal void @swap.256(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #4 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr %other.addr = alloca %"Vector[Token]"* @@ -8196,42 +8028,42 @@ define internal void @swap.262(%"Vector[Token]"* %this, %"Vector[Token]"* %other code: ; preds = %0 %1 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %2 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %1, i32 0, i32 0 - call void @ctor.207(%"RawPtr[Token]"* %tmp, %"RawPtr[Token]"* %2) + call void @ctor.199(%"RawPtr[Token]"* %tmp, %"RawPtr[Token]"* %2) %3 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %4 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %3, i32 0, i32 0 %5 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr %6 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %5, i32 0, i32 0 - call void @"=.202"(%"RawPtr[Token]"* %4, %"RawPtr[Token]"* %6) + call void @"=.194"(%"RawPtr[Token]"* %4, %"RawPtr[Token]"* %6) %7 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr %8 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %7, i32 0, i32 0 - call void @"=.202"(%"RawPtr[Token]"* %8, %"RawPtr[Token]"* %tmp) + call void @"=.194"(%"RawPtr[Token]"* %8, %"RawPtr[Token]"* %tmp) %9 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %10 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %9, i32 0, i32 1 - call void @"=.202"(%"RawPtr[Token]"* %tmp, %"RawPtr[Token]"* %10) + call void @"=.194"(%"RawPtr[Token]"* %tmp, %"RawPtr[Token]"* %10) %11 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %12 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %11, i32 0, i32 1 %13 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr %14 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %13, i32 0, i32 1 - call void @"=.202"(%"RawPtr[Token]"* %12, %"RawPtr[Token]"* %14) + call void @"=.194"(%"RawPtr[Token]"* %12, %"RawPtr[Token]"* %14) %15 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr %16 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %15, i32 0, i32 1 - call void @"=.202"(%"RawPtr[Token]"* %16, %"RawPtr[Token]"* %tmp) + call void @"=.194"(%"RawPtr[Token]"* %16, %"RawPtr[Token]"* %tmp) %17 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %18 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %17, i32 0, i32 2 - call void @"=.202"(%"RawPtr[Token]"* %tmp, %"RawPtr[Token]"* %18) + call void @"=.194"(%"RawPtr[Token]"* %tmp, %"RawPtr[Token]"* %18) %19 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %20 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %19, i32 0, i32 2 %21 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr %22 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %21, i32 0, i32 2 - call void @"=.202"(%"RawPtr[Token]"* %20, %"RawPtr[Token]"* %22) + call void @"=.194"(%"RawPtr[Token]"* %20, %"RawPtr[Token]"* %22) %23 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr %24 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %23, i32 0, i32 2 - call void @"=.202"(%"RawPtr[Token]"* %24, %"RawPtr[Token]"* %tmp) + call void @"=.194"(%"RawPtr[Token]"* %24, %"RawPtr[Token]"* %tmp) ret void } ; Function Attrs: inlinehint nounwind -define internal %"Vector[UInt]"** @"=.263"(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #4 { +define internal %"Vector[UInt]"** @"=.257"(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #4 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr %other.addr = alloca %"Vector[UInt]"* @@ -8241,19 +8073,19 @@ define internal %"Vector[UInt]"** @"=.263"(%"Vector[UInt]"* %this, %"Vector[UInt code: ; preds = %0 %1 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr - call void @ctor.211(%"Vector[UInt]"* %tmp, %"Vector[UInt]"* %1) + call void @ctor.203(%"Vector[UInt]"* %tmp, %"Vector[UInt]"* %1) %2 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr - call void @swap.264(%"Vector[UInt]"* %tmp, %"Vector[UInt]"* %2) - call void @dtor.236(%"Vector[UInt]"* %tmp) + call void @swap.258(%"Vector[UInt]"* %tmp, %"Vector[UInt]"* %2) + call void @dtor.227(%"Vector[UInt]"* %tmp) ret %"Vector[UInt]"** %this.addr dumy_block: ; No predecessors! - call void @dtor.236(%"Vector[UInt]"* %tmp) + call void @dtor.227(%"Vector[UInt]"* %tmp) unreachable } ; Function Attrs: inlinehint nounwind -define internal void @swap.264(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #4 { +define internal void @swap.258(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #4 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr %other.addr = alloca %"Vector[UInt]"* @@ -8264,42 +8096,42 @@ define internal void @swap.264(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) code: ; preds = %0 %1 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %2 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %1, i32 0, i32 0 - call void @ctor.220(%"RawPtr[UInt]"* %tmp, %"RawPtr[UInt]"* %2) + call void @ctor.212(%"RawPtr[UInt]"* %tmp, %"RawPtr[UInt]"* %2) %3 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %4 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %3, i32 0, i32 0 %5 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr %6 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %5, i32 0, i32 0 - call void @"=.215"(%"RawPtr[UInt]"* %4, %"RawPtr[UInt]"* %6) + call void @"=.207"(%"RawPtr[UInt]"* %4, %"RawPtr[UInt]"* %6) %7 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr %8 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %7, i32 0, i32 0 - call void @"=.215"(%"RawPtr[UInt]"* %8, %"RawPtr[UInt]"* %tmp) + call void @"=.207"(%"RawPtr[UInt]"* %8, %"RawPtr[UInt]"* %tmp) %9 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %10 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %9, i32 0, i32 1 - call void @"=.215"(%"RawPtr[UInt]"* %tmp, %"RawPtr[UInt]"* %10) + call void @"=.207"(%"RawPtr[UInt]"* %tmp, %"RawPtr[UInt]"* %10) %11 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %12 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %11, i32 0, i32 1 %13 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr %14 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %13, i32 0, i32 1 - call void @"=.215"(%"RawPtr[UInt]"* %12, %"RawPtr[UInt]"* %14) + call void @"=.207"(%"RawPtr[UInt]"* %12, %"RawPtr[UInt]"* %14) %15 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr %16 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %15, i32 0, i32 1 - call void @"=.215"(%"RawPtr[UInt]"* %16, %"RawPtr[UInt]"* %tmp) + call void @"=.207"(%"RawPtr[UInt]"* %16, %"RawPtr[UInt]"* %tmp) %17 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %18 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %17, i32 0, i32 2 - call void @"=.215"(%"RawPtr[UInt]"* %tmp, %"RawPtr[UInt]"* %18) + call void @"=.207"(%"RawPtr[UInt]"* %tmp, %"RawPtr[UInt]"* %18) %19 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %20 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %19, i32 0, i32 2 %21 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr %22 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %21, i32 0, i32 2 - call void @"=.215"(%"RawPtr[UInt]"* %20, %"RawPtr[UInt]"* %22) + call void @"=.207"(%"RawPtr[UInt]"* %20, %"RawPtr[UInt]"* %22) %23 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr %24 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %23, i32 0, i32 2 - call void @"=.215"(%"RawPtr[UInt]"* %24, %"RawPtr[UInt]"* %tmp) + call void @"=.207"(%"RawPtr[UInt]"* %24, %"RawPtr[UInt]"* %tmp) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @"=.265"(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %other) #3 { +define internal void @"=.259"(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %other) #3 { %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %other.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* @@ -8311,12 +8143,12 @@ code: ; preds = %0 %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 0 %3 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %other.addr %4 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %3, i32 0, i32 0 - call void @"=.266"(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %2, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %4) + call void @"=.260"(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %2, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %4) %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 1 %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %other.addr %8 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %7, i32 0, i32 1 - call void @"=.254"(%Token* %6, %Token* %8) + call void @"=.248"(%Token* %6, %Token* %8) %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %other.addr %10 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9, i32 0, i32 2 %11 = load i1, i1* %10 @@ -8327,7 +8159,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.266"(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %other) #3 { +define internal void @"=.260"(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %other) #3 { %this.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr %other.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* @@ -8339,17 +8171,17 @@ code: ; preds = %0 %2 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %1, i32 0, i32 0 %3 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %other.addr %4 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %3, i32 0, i32 0 - call void @"=.259"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %2, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %4) + call void @"=.253"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %2, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %4) %5 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr %6 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %5, i32 0, i32 1 %7 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %other.addr %8 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %7, i32 0, i32 1 - %9 = call %"Vector[Token]"** @"=.261"(%"Vector[Token]"* %6, %"Vector[Token]"* %8) + %9 = call %"Vector[Token]"** @"=.255"(%"Vector[Token]"* %6, %"Vector[Token]"* %8) ret void } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.267"(%ParserContext* %this, %ParserContext* %other) #3 { +define internal i1 @"==.261"(%ParserContext* %this, %ParserContext* %other) #3 { %this.addr = alloca %ParserContext* store %ParserContext* %this, %ParserContext** %this.addr %other.addr = alloca %ParserContext* @@ -8361,7 +8193,7 @@ code: ; preds = %0 %2 = getelementptr inbounds %ParserContext, %ParserContext* %1, i32 0, i32 0 %3 = load %ParserContext*, %ParserContext** %other.addr %4 = getelementptr inbounds %ParserContext, %ParserContext* %3, i32 0, i32 0 - %5 = call i1 @"==.268"(%File* %2, %File* %4) + %5 = call i1 @"==.262"(%File* %2, %File* %4) br i1 %5, label %cond.true10, label %cond.false11 cond.true: ; preds = %cond.end3 @@ -8369,7 +8201,7 @@ cond.true: ; preds = %cond.end3 %7 = getelementptr inbounds %ParserContext, %ParserContext* %6, i32 0, i32 5 %8 = load %ParserContext*, %ParserContext** %other.addr %9 = getelementptr inbounds %ParserContext, %ParserContext* %8, i32 0, i32 5 - %10 = call i1 @"==.289"(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %7, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9) + %10 = call i1 @"==.283"(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %7, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9) br label %cond.end cond.false: ; preds = %cond.end3 @@ -8384,7 +8216,7 @@ cond.true1: ; preds = %cond.end6 %12 = getelementptr inbounds %ParserContext, %ParserContext* %11, i32 0, i32 4 %13 = load %ParserContext*, %ParserContext** %other.addr %14 = getelementptr inbounds %ParserContext, %ParserContext* %13, i32 0, i32 4 - %15 = call i1 @"==.283"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %12, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %14) + %15 = call i1 @"==.277"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %12, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %14) br label %cond.end3 cond.false2: ; preds = %cond.end6 @@ -8399,7 +8231,7 @@ cond.true4: ; preds = %cond.end9 %17 = getelementptr inbounds %ParserContext, %ParserContext* %16, i32 0, i32 3 %18 = load %ParserContext*, %ParserContext** %other.addr %19 = getelementptr inbounds %ParserContext, %ParserContext* %18, i32 0, i32 3 - %20 = call i1 @"==.270"(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %17, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %19) + %20 = call i1 @"==.264"(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %17, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %19) br label %cond.end6 cond.false5: ; preds = %cond.end9 @@ -8414,7 +8246,7 @@ cond.true7: ; preds = %cond.end12 %22 = getelementptr inbounds %ParserContext, %ParserContext* %21, i32 0, i32 2 %23 = load %ParserContext*, %ParserContext** %other.addr %24 = getelementptr inbounds %ParserContext, %ParserContext* %23, i32 0, i32 2 - %25 = call i1 @"==.143"(%_CharSource* %22, %_CharSource* %24) + %25 = call i1 @"==.137"(%_CharSource* %22, %_CharSource* %24) br label %cond.end9 cond.false8: ; preds = %cond.end12 @@ -8429,7 +8261,7 @@ cond.true10: ; preds = %code %27 = getelementptr inbounds %ParserContext, %ParserContext* %26, i32 0, i32 1 %28 = load %ParserContext*, %ParserContext** %other.addr %29 = getelementptr inbounds %ParserContext, %ParserContext* %28, i32 0, i32 1 - %30 = call i1 @"==.269"(%FileRange* %27, %FileRange* %29) + %30 = call i1 @"==.263"(%FileRange* %27, %FileRange* %29) br label %cond.end12 cond.false11: ; preds = %code @@ -8441,7 +8273,7 @@ cond.end12: ; preds = %cond.false11, %cond } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.268"(%File* %this, %File* %other) #3 { +define internal i1 @"==.262"(%File* %this, %File* %other) #3 { %this.addr = alloca %File* store %File* %this, %File** %this.addr %other.addr = alloca %File* @@ -8460,7 +8292,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.269"(%FileRange* %this, %FileRange* %other) #3 { +define internal i1 @"==.263"(%FileRange* %this, %FileRange* %other) #3 { %this.addr = alloca %FileRange* store %FileRange* %this, %FileRange** %this.addr %other.addr = alloca %FileRange* @@ -8515,7 +8347,7 @@ cond.end3: ; preds = %cond.false2, %cond. } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.270"(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %other) #3 { +define internal i1 @"==.264"(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %other) #3 { %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %other.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* @@ -8527,7 +8359,7 @@ code: ; preds = %0 %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 0 %3 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %other.addr %4 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %3, i32 0, i32 0 - %5 = call i1 @"==.271"(%Location* %2, %Location* %4) + %5 = call i1 @"==.265"(%Location* %2, %Location* %4) br i1 %5, label %cond.true7, label %cond.false8 cond.true: ; preds = %cond.end3 @@ -8535,7 +8367,7 @@ cond.true: ; preds = %cond.end3 %7 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %6, i32 0, i32 4 %8 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %other.addr %9 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %8, i32 0, i32 4 - %10 = call i1 @"==.138"(%ExternalErrorReporter* %7, %ExternalErrorReporter* %9) + %10 = call i1 @"==.132"(%ExternalErrorReporter* %7, %ExternalErrorReporter* %9) br label %cond.end cond.false: ; preds = %cond.end3 @@ -8567,7 +8399,7 @@ cond.true4: ; preds = %cond.end9 %19 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %18, i32 0, i32 2 %20 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %other.addr %21 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %20, i32 0, i32 2 - %22 = call i1 @"==.278"(%Token* %19, %Token* %21) + %22 = call i1 @"==.272"(%Token* %19, %Token* %21) br label %cond.end6 cond.false5: ; preds = %cond.end9 @@ -8582,7 +8414,7 @@ cond.true7: ; preds = %code %24 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %23, i32 0, i32 1 %25 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %other.addr %26 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %25, i32 0, i32 1 - %27 = call i1 @"==.274"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %24, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %26) + %27 = call i1 @"==.268"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %24, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %26) br label %cond.end9 cond.false8: ; preds = %code @@ -8594,7 +8426,7 @@ cond.end9: ; preds = %cond.false8, %cond. } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.271"(%Location* %this, %Location* %other) #3 { +define internal i1 @"==.265"(%Location* %this, %Location* %other) #3 { %this.addr = alloca %Location* store %Location* %this, %Location** %this.addr %other.addr = alloca %Location* @@ -8606,7 +8438,7 @@ code: ; preds = %0 %2 = getelementptr inbounds %Location, %Location* %1, i32 0, i32 0 %3 = load %Location*, %Location** %other.addr %4 = getelementptr inbounds %Location, %Location* %3, i32 0, i32 0 - %5 = call i1 @"==.272"(%SourceCode* %2, %SourceCode* %4) + %5 = call i1 @"==.266"(%SourceCode* %2, %SourceCode* %4) br i1 %5, label %cond.true1, label %cond.false2 cond.true: ; preds = %cond.end3 @@ -8614,7 +8446,7 @@ cond.true: ; preds = %cond.end3 %7 = getelementptr inbounds %Location, %Location* %6, i32 0, i32 2 %8 = load %Location*, %Location** %other.addr %9 = getelementptr inbounds %Location, %Location* %8, i32 0, i32 2 - %10 = call i1 @"==.273"(%LineCol* %7, %LineCol* %9) + %10 = call i1 @"==.267"(%LineCol* %7, %LineCol* %9) br label %cond.end cond.false: ; preds = %cond.end3 @@ -8629,7 +8461,7 @@ cond.true1: ; preds = %code %12 = getelementptr inbounds %Location, %Location* %11, i32 0, i32 1 %13 = load %Location*, %Location** %other.addr %14 = getelementptr inbounds %Location, %Location* %13, i32 0, i32 1 - %15 = call i1 @"==.273"(%LineCol* %12, %LineCol* %14) + %15 = call i1 @"==.267"(%LineCol* %12, %LineCol* %14) br label %cond.end3 cond.false2: ; preds = %code @@ -8641,7 +8473,7 @@ cond.end3: ; preds = %cond.false2, %cond. } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.272"(%SourceCode* %this, %SourceCode* %other) #3 { +define internal i1 @"==.266"(%SourceCode* %this, %SourceCode* %other) #3 { %this.addr = alloca %SourceCode* store %SourceCode* %this, %SourceCode** %this.addr %other.addr = alloca %SourceCode* @@ -8660,7 +8492,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.273"(%LineCol* %this, %LineCol* %other) #3 { +define internal i1 @"==.267"(%LineCol* %this, %LineCol* %other) #3 { %this.addr = alloca %LineCol* store %LineCol* %this, %LineCol** %this.addr %other.addr = alloca %LineCol* @@ -8696,7 +8528,7 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.274"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %other) #3 { +define internal i1 @"==.268"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %other) #3 { %this.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr %other.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* @@ -8708,7 +8540,7 @@ code: ; preds = %0 %2 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1, i32 0, i32 0 %3 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %other.addr %4 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %3, i32 0, i32 0 - %5 = call i1 @"==.275"(%"RangeWithLookahead[_CharSource]"* %2, %"RangeWithLookahead[_CharSource]"* %4) + %5 = call i1 @"==.269"(%"RangeWithLookahead[_CharSource]"* %2, %"RangeWithLookahead[_CharSource]"* %4) br i1 %5, label %cond.true, label %cond.false cond.true: ; preds = %code @@ -8732,7 +8564,7 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.275"(%"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"* %other) #3 { +define internal i1 @"==.269"(%"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"* %other) #3 { %this.addr = alloca %"RangeWithLookahead[_CharSource]"* store %"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"** %this.addr %other.addr = alloca %"RangeWithLookahead[_CharSource]"* @@ -8744,7 +8576,7 @@ code: ; preds = %0 %2 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %1, i32 0, i32 0 %3 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %other.addr %4 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %3, i32 0, i32 0 - %5 = call i1 @"==.143"(%_CharSource* %2, %_CharSource* %4) + %5 = call i1 @"==.137"(%_CharSource* %2, %_CharSource* %4) br i1 %5, label %cond.true, label %cond.false cond.true: ; preds = %code @@ -8752,7 +8584,7 @@ cond.true: ; preds = %code %7 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %6, i32 0, i32 1 %8 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %other.addr %9 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %8, i32 0, i32 1 - %10 = call i1 @"==.276"(%"Vector[Char]"* %7, %"Vector[Char]"* %9) + %10 = call i1 @"==.270"(%"Vector[Char]"* %7, %"Vector[Char]"* %9) br label %cond.end cond.false: ; preds = %code @@ -8764,16 +8596,16 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: inlinehint nounwind -define internal i1 @"==.276"(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #4 { +define internal i1 @"==.270"(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #4 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr %other.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %other, %"Vector[Char]"** %other.addr %i = alloca i32 %s = alloca i64 - %tmp.v = alloca i64 - %tmp.v4 = alloca i64 - %tmp.v5 = alloca i64 + %tmp.this = alloca i64 + %tmp.this4 = alloca i64 + %tmp.this5 = alloca i64 br label %code code: ; preds = %0 @@ -8781,9 +8613,9 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %2 = call i64 @size.183(%"Vector[Char]"* %1) + %2 = call i64 @size.177(%"Vector[Char]"* %1) %3 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr - %4 = call i64 @size.183(%"Vector[Char]"* %3) + %4 = call i64 @size.177(%"Vector[Char]"* %3) %5 = icmp ne i64 %2, %4 br i1 %5, label %if_then, label %if_end @@ -8793,7 +8625,7 @@ if_then: ; preds = %if_block if_end: ; preds = %dumy_block, %if_block store i32 0, i32* %i %6 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %7 = call i64 @size.183(%"Vector[Char]"* %6) + %7 = call i64 @size.177(%"Vector[Char]"* %6) store i64 %7, i64* %s br label %while_block @@ -8803,8 +8635,8 @@ dumy_block: ; No predecessors! while_block: ; preds = %while_step, %if_end %8 = load i32, i32* %i %9 = zext i32 %8 to i64 - store i64 %9, i64* %tmp.v - %10 = load i64, i64* %tmp.v + store i64 %9, i64* %tmp.this + %10 = load i64, i64* %tmp.this %11 = load i64, i64* %s %12 = icmp slt i64 %10, %11 br i1 %12, label %while_body, label %while_end @@ -8823,16 +8655,16 @@ if_block1: ; preds = %while_body %14 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %15 = load i32, i32* %i %16 = zext i32 %15 to i64 - store i64 %16, i64* %tmp.v4 - %17 = load i64, i64* %tmp.v4 - %18 = call i8* @at.277(%"Vector[Char]"* %14, i64 %17) + store i64 %16, i64* %tmp.this4 + %17 = load i64, i64* %tmp.this4 + %18 = call i8* @at.271(%"Vector[Char]"* %14, i64 %17) %19 = load i8, i8* %18 %20 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr %21 = load i32, i32* %i %22 = zext i32 %21 to i64 - store i64 %22, i64* %tmp.v5 - %23 = load i64, i64* %tmp.v5 - %24 = call i8* @at.277(%"Vector[Char]"* %20, i64 %23) + store i64 %22, i64* %tmp.this5 + %23 = load i64, i64* %tmp.this5 + %24 = call i8* @at.271(%"Vector[Char]"* %20, i64 %23) %25 = load i8, i8* %24 %26 = icmp eq i8 %19, %25 %27 = xor i1 true, %26 @@ -8849,7 +8681,7 @@ dumy_block6: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal i8* @at.277(%"Vector[Char]"* %this, i64 %index) #4 { +define internal i8* @at.271(%"Vector[Char]"* %this, i64 %index) #4 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr %index.addr = alloca i64 @@ -8869,7 +8701,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.278"(%Token* %this, %Token* %other) #3 { +define internal i1 @"==.272"(%Token* %this, %Token* %other) #3 { %this.addr = alloca %Token* store %Token* %this, %Token** %this.addr %other.addr = alloca %Token* @@ -8881,7 +8713,7 @@ code: ; preds = %0 %2 = getelementptr inbounds %Token, %Token* %1, i32 0, i32 0 %3 = load %Token*, %Token** %other.addr %4 = getelementptr inbounds %Token, %Token* %3, i32 0, i32 0 - %5 = call i1 @"==.271"(%Location* %2, %Location* %4) + %5 = call i1 @"==.265"(%Location* %2, %Location* %4) br i1 %5, label %cond.true7, label %cond.false8 cond.true: ; preds = %cond.end3 @@ -8923,7 +8755,7 @@ cond.true4: ; preds = %cond.end9 %21 = getelementptr inbounds %Token, %Token* %20, i32 0, i32 2 %22 = load %Token*, %Token** %other.addr %23 = getelementptr inbounds %Token, %Token* %22, i32 0, i32 2 - %24 = call i1 @"==.280"(%String* %21, %String* %23) + %24 = call i1 @"==.274"(%String* %21, %String* %23) br label %cond.end6 cond.false5: ; preds = %cond.end9 @@ -8938,7 +8770,7 @@ cond.true7: ; preds = %code %26 = getelementptr inbounds %Token, %Token* %25, i32 0, i32 1 %27 = load %Token*, %Token** %other.addr %28 = getelementptr inbounds %Token, %Token* %27, i32 0, i32 1 - %29 = call i1 @"==.279"(%TokenType* %26, %TokenType* %28) + %29 = call i1 @"==.273"(%TokenType* %26, %TokenType* %28) br label %cond.end9 cond.false8: ; preds = %code @@ -8950,7 +8782,7 @@ cond.end9: ; preds = %cond.false8, %cond. } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.279"(%TokenType* %this, %TokenType* %other) #3 { +define internal i1 @"==.273"(%TokenType* %this, %TokenType* %other) #3 { %this.addr = alloca %TokenType* store %TokenType* %this, %TokenType** %this.addr %other.addr = alloca %TokenType* @@ -8969,7 +8801,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i1 @"==.280"(%String* %this, %String* %other) #4 { +define internal i1 @"==.274"(%String* %this, %String* %other) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr %other.addr = alloca %String* @@ -8983,9 +8815,9 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %String*, %String** %this.addr - %2 = call i64 @size.193(%String* %1) + %2 = call i64 @size.185(%String* %1) %3 = load %String*, %String** %other.addr - %4 = call i64 @size.193(%String* %3) + %4 = call i64 @size.185(%String* %3) %5 = icmp ne i64 %2, %4 br i1 %5, label %if_then, label %if_end @@ -8995,7 +8827,7 @@ if_then: ; preds = %if_block if_end: ; preds = %dumy_block, %if_block store i64 0, i64* %i %6 = load %String*, %String** %this.addr - %7 = call i64 @size.193(%String* %6) + %7 = call i64 @size.185(%String* %6) store i64 %7, i64* %s br label %while_block @@ -9021,11 +8853,11 @@ while_end: ; preds = %while_block if_block1: ; preds = %while_body %12 = load %String*, %String** %this.addr %13 = load i64, i64* %i - %14 = call i8* @"().281"(%String* %12, i64 %13) + %14 = call i8* @"().275"(%String* %12, i64 %13) %15 = load i8, i8* %14 %16 = load %String*, %String** %other.addr %17 = load i64, i64* %i - %18 = call i8* @"().281"(%String* %16, i64 %17) + %18 = call i8* @"().275"(%String* %16, i64 %17) %19 = load i8, i8* %18 %20 = icmp ne i8 %15, %19 br i1 %20, label %if_then2, label %if_end3 @@ -9041,13 +8873,13 @@ dumy_block4: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal i8* @"().281"(%String* %this, i64 %index) #4 { +define internal i8* @"().275"(%String* %this, i64 %index) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr %index.addr = alloca i64 store i64 %index, i64* %index.addr %"$tmpC" = alloca %"RawPtr[Char]" - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -9055,16 +8887,16 @@ code: ; preds = %0 %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 0 %3 = load %"RawPtr[Char]", %"RawPtr[Char]"* %2 %4 = load i64, i64* %index.addr - store i64 %4, i64* %tmp.v - %5 = load i64, i64* %tmp.v - call void @advance.195(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %3, i64 %5) + store i64 %4, i64* %tmp.this + %5 = load i64, i64* %tmp.this + call void @advance.187(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %3, i64 %5) %6 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC" %7 = call i8* @value(%"RawPtr[Char]" %6) ret i8* %7 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.282(%"RawPtr[Char]"* %this) #3 { +define internal void @dtor.276(%"RawPtr[Char]"* %this) #3 { %this.addr = alloca %"RawPtr[Char]"* store %"RawPtr[Char]"* %this, %"RawPtr[Char]"** %this.addr br label %code @@ -9074,7 +8906,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.283"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %other) #3 { +define internal i1 @"==.277"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %other) #3 { %this.addr = alloca %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* store %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %other.addr = alloca %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* @@ -9086,7 +8918,7 @@ code: ; preds = %0 %2 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 0 %3 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr %4 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %3, i32 0, i32 0 - %5 = call i1 @"==.284"(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %2, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %4) + %5 = call i1 @"==.278"(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %2, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %4) br i1 %5, label %cond.true10, label %cond.false11 cond.true: ; preds = %cond.end3 @@ -9111,7 +8943,7 @@ cond.true1: ; preds = %cond.end6 %14 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %13, i32 0, i32 4 %15 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr %16 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %15, i32 0, i32 4 - %17 = call i1 @"==.279"(%TokenType* %14, %TokenType* %16) + %17 = call i1 @"==.273"(%TokenType* %14, %TokenType* %16) br label %cond.end3 cond.false2: ; preds = %cond.end6 @@ -9126,7 +8958,7 @@ cond.true4: ; preds = %cond.end9 %19 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %18, i32 0, i32 3 %20 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr %21 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %20, i32 0, i32 3 - %22 = call i1 @"==.276"(%"Vector[Char]"* %19, %"Vector[Char]"* %21) + %22 = call i1 @"==.270"(%"Vector[Char]"* %19, %"Vector[Char]"* %21) br label %cond.end6 cond.false5: ; preds = %cond.end9 @@ -9141,7 +8973,7 @@ cond.true7: ; preds = %cond.end12 %24 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %23, i32 0, i32 2 %25 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr %26 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %25, i32 0, i32 2 - %27 = call i1 @"==.287"(%"Vector[UInt]"* %24, %"Vector[UInt]"* %26) + %27 = call i1 @"==.281"(%"Vector[UInt]"* %24, %"Vector[UInt]"* %26) br label %cond.end9 cond.false8: ; preds = %cond.end12 @@ -9156,7 +8988,7 @@ cond.true10: ; preds = %code %29 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %28, i32 0, i32 1 %30 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr %31 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %30, i32 0, i32 1 - %32 = call i1 @"==.138"(%ExternalErrorReporter* %29, %ExternalErrorReporter* %31) + %32 = call i1 @"==.132"(%ExternalErrorReporter* %29, %ExternalErrorReporter* %31) br label %cond.end12 cond.false11: ; preds = %code @@ -9168,7 +9000,7 @@ cond.end12: ; preds = %cond.false11, %cond } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.284"(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %other) #3 { +define internal i1 @"==.278"(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %other) #3 { %this.addr = alloca %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* store %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr %other.addr = alloca %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* @@ -9180,7 +9012,7 @@ code: ; preds = %0 %2 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %1, i32 0, i32 0 %3 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %other.addr %4 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %3, i32 0, i32 0 - %5 = call i1 @"==.270"(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %2, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %4) + %5 = call i1 @"==.264"(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %2, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %4) br i1 %5, label %cond.true, label %cond.false cond.true: ; preds = %code @@ -9188,7 +9020,7 @@ cond.true: ; preds = %code %7 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %6, i32 0, i32 1 %8 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %other.addr %9 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %8, i32 0, i32 1 - %10 = call i1 @"==.285"(%"Vector[Token]"* %7, %"Vector[Token]"* %9) + %10 = call i1 @"==.279"(%"Vector[Token]"* %7, %"Vector[Token]"* %9) br label %cond.end cond.false: ; preds = %code @@ -9200,16 +9032,16 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: inlinehint nounwind -define internal i1 @"==.285"(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #4 { +define internal i1 @"==.279"(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #4 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr %other.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %other, %"Vector[Token]"** %other.addr %i = alloca i32 %s = alloca i64 - %tmp.v = alloca i64 - %tmp.v4 = alloca i64 - %tmp.v5 = alloca i64 + %tmp.this = alloca i64 + %tmp.this4 = alloca i64 + %tmp.this5 = alloca i64 br label %code code: ; preds = %0 @@ -9217,9 +9049,9 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr - %2 = call i64 @size.199(%"Vector[Token]"* %1) + %2 = call i64 @size.191(%"Vector[Token]"* %1) %3 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr - %4 = call i64 @size.199(%"Vector[Token]"* %3) + %4 = call i64 @size.191(%"Vector[Token]"* %3) %5 = icmp ne i64 %2, %4 br i1 %5, label %if_then, label %if_end @@ -9229,7 +9061,7 @@ if_then: ; preds = %if_block if_end: ; preds = %dumy_block, %if_block store i32 0, i32* %i %6 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr - %7 = call i64 @size.199(%"Vector[Token]"* %6) + %7 = call i64 @size.191(%"Vector[Token]"* %6) store i64 %7, i64* %s br label %while_block @@ -9239,8 +9071,8 @@ dumy_block: ; No predecessors! while_block: ; preds = %while_step, %if_end %8 = load i32, i32* %i %9 = zext i32 %8 to i64 - store i64 %9, i64* %tmp.v - %10 = load i64, i64* %tmp.v + store i64 %9, i64* %tmp.this + %10 = load i64, i64* %tmp.this %11 = load i64, i64* %s %12 = icmp slt i64 %10, %11 br i1 %12, label %while_body, label %while_end @@ -9259,16 +9091,16 @@ if_block1: ; preds = %while_body %14 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %15 = load i32, i32* %i %16 = zext i32 %15 to i64 - store i64 %16, i64* %tmp.v4 - %17 = load i64, i64* %tmp.v4 - %18 = call %Token* @at.286(%"Vector[Token]"* %14, i64 %17) + store i64 %16, i64* %tmp.this4 + %17 = load i64, i64* %tmp.this4 + %18 = call %Token* @at.280(%"Vector[Token]"* %14, i64 %17) %19 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr %20 = load i32, i32* %i %21 = zext i32 %20 to i64 - store i64 %21, i64* %tmp.v5 - %22 = load i64, i64* %tmp.v5 - %23 = call %Token* @at.286(%"Vector[Token]"* %19, i64 %22) - %24 = call i1 @"==.278"(%Token* %18, %Token* %23) + store i64 %21, i64* %tmp.this5 + %22 = load i64, i64* %tmp.this5 + %23 = call %Token* @at.280(%"Vector[Token]"* %19, i64 %22) + %24 = call i1 @"==.272"(%Token* %18, %Token* %23) %25 = xor i1 true, %24 br i1 %25, label %if_then2, label %if_end3 @@ -9283,7 +9115,7 @@ dumy_block6: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal %Token* @at.286(%"Vector[Token]"* %this, i64 %index) #4 { +define internal %Token* @at.280(%"Vector[Token]"* %this, i64 %index) #4 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr %index.addr = alloca i64 @@ -9296,23 +9128,23 @@ code: ; preds = %0 %2 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %1, i32 0, i32 0 %3 = load %"RawPtr[Token]", %"RawPtr[Token]"* %2 %4 = load i64, i64* %index.addr - call void @advance.205(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %3, i64 %4) + call void @advance.197(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %3, i64 %4) %5 = load %"RawPtr[Token]", %"RawPtr[Token]"* %"$tmpC" - %6 = call %Token* @value.209(%"RawPtr[Token]" %5) + %6 = call %Token* @value.201(%"RawPtr[Token]" %5) ret %Token* %6 } ; Function Attrs: inlinehint nounwind -define internal i1 @"==.287"(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #4 { +define internal i1 @"==.281"(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #4 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr %other.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %other, %"Vector[UInt]"** %other.addr %i = alloca i32 %s = alloca i64 - %tmp.v = alloca i64 - %tmp.v4 = alloca i64 - %tmp.v5 = alloca i64 + %tmp.this = alloca i64 + %tmp.this4 = alloca i64 + %tmp.this5 = alloca i64 br label %code code: ; preds = %0 @@ -9320,9 +9152,9 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr - %2 = call i64 @size.212(%"Vector[UInt]"* %1) + %2 = call i64 @size.204(%"Vector[UInt]"* %1) %3 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr - %4 = call i64 @size.212(%"Vector[UInt]"* %3) + %4 = call i64 @size.204(%"Vector[UInt]"* %3) %5 = icmp ne i64 %2, %4 br i1 %5, label %if_then, label %if_end @@ -9332,7 +9164,7 @@ if_then: ; preds = %if_block if_end: ; preds = %dumy_block, %if_block store i32 0, i32* %i %6 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr - %7 = call i64 @size.212(%"Vector[UInt]"* %6) + %7 = call i64 @size.204(%"Vector[UInt]"* %6) store i64 %7, i64* %s br label %while_block @@ -9342,8 +9174,8 @@ dumy_block: ; No predecessors! while_block: ; preds = %while_step, %if_end %8 = load i32, i32* %i %9 = zext i32 %8 to i64 - store i64 %9, i64* %tmp.v - %10 = load i64, i64* %tmp.v + store i64 %9, i64* %tmp.this + %10 = load i64, i64* %tmp.this %11 = load i64, i64* %s %12 = icmp slt i64 %10, %11 br i1 %12, label %while_body, label %while_end @@ -9362,16 +9194,16 @@ if_block1: ; preds = %while_body %14 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %15 = load i32, i32* %i %16 = zext i32 %15 to i64 - store i64 %16, i64* %tmp.v4 - %17 = load i64, i64* %tmp.v4 - %18 = call i32* @at.288(%"Vector[UInt]"* %14, i64 %17) + store i64 %16, i64* %tmp.this4 + %17 = load i64, i64* %tmp.this4 + %18 = call i32* @at.282(%"Vector[UInt]"* %14, i64 %17) %19 = load i32, i32* %18 %20 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr %21 = load i32, i32* %i %22 = zext i32 %21 to i64 - store i64 %22, i64* %tmp.v5 - %23 = load i64, i64* %tmp.v5 - %24 = call i32* @at.288(%"Vector[UInt]"* %20, i64 %23) + store i64 %22, i64* %tmp.this5 + %23 = load i64, i64* %tmp.this5 + %24 = call i32* @at.282(%"Vector[UInt]"* %20, i64 %23) %25 = load i32, i32* %24 %26 = icmp eq i32 %19, %25 %27 = xor i1 true, %26 @@ -9388,7 +9220,7 @@ dumy_block6: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal i32* @at.288(%"Vector[UInt]"* %this, i64 %index) #4 { +define internal i32* @at.282(%"Vector[UInt]"* %this, i64 %index) #4 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr %index.addr = alloca i64 @@ -9401,14 +9233,14 @@ code: ; preds = %0 %2 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %1, i32 0, i32 0 %3 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %2 %4 = load i64, i64* %index.addr - call void @advance.218(%"RawPtr[UInt]"* %"$tmpC", %"RawPtr[UInt]" %3, i64 %4) + call void @advance.210(%"RawPtr[UInt]"* %"$tmpC", %"RawPtr[UInt]" %3, i64 %4) %5 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %"$tmpC" - %6 = call i32* @value.222(%"RawPtr[UInt]" %5) + %6 = call i32* @value.229(%"RawPtr[UInt]" %5) ret i32* %6 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.289"(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %other) #3 { +define internal i1 @"==.283"(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %other) #3 { %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %other.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* @@ -9420,7 +9252,7 @@ code: ; preds = %0 %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 0 %3 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %other.addr %4 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %3, i32 0, i32 0 - %5 = call i1 @"==.290"(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %2, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %4) + %5 = call i1 @"==.284"(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %2, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %4) br i1 %5, label %cond.true4, label %cond.false5 cond.true: ; preds = %cond.end3 @@ -9428,7 +9260,7 @@ cond.true: ; preds = %cond.end3 %7 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %6, i32 0, i32 3 %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %other.addr %9 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8, i32 0, i32 3 - %10 = call i1 @"==.138"(%ExternalErrorReporter* %7, %ExternalErrorReporter* %9) + %10 = call i1 @"==.132"(%ExternalErrorReporter* %7, %ExternalErrorReporter* %9) br label %cond.end cond.false: ; preds = %cond.end3 @@ -9460,7 +9292,7 @@ cond.true4: ; preds = %code %19 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %18, i32 0, i32 1 %20 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %other.addr %21 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %20, i32 0, i32 1 - %22 = call i1 @"==.278"(%Token* %19, %Token* %21) + %22 = call i1 @"==.272"(%Token* %19, %Token* %21) br label %cond.end6 cond.false5: ; preds = %code @@ -9472,7 +9304,7 @@ cond.end6: ; preds = %cond.false5, %cond. } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.290"(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %other) #3 { +define internal i1 @"==.284"(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %other) #3 { %this.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr %other.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* @@ -9484,7 +9316,7 @@ code: ; preds = %0 %2 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %1, i32 0, i32 0 %3 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %other.addr %4 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %3, i32 0, i32 0 - %5 = call i1 @"==.283"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %2, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %4) + %5 = call i1 @"==.277"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %2, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %4) br i1 %5, label %cond.true, label %cond.false cond.true: ; preds = %code @@ -9492,7 +9324,7 @@ cond.true: ; preds = %code %7 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %6, i32 0, i32 1 %8 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %other.addr %9 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %8, i32 0, i32 1 - %10 = call i1 @"==.285"(%"Vector[Token]"* %7, %"Vector[Token]"* %9) + %10 = call i1 @"==.279"(%"Vector[Token]"* %7, %"Vector[Token]"* %9) br label %cond.end cond.false: ; preds = %code @@ -9504,7 +9336,7 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: inlinehint nounwind -define internal void @ctor.291(%ParserContext* %this, %StringRef %filename, %StringRef %code, %Location %loc, i1 %scannerOnly) #4 { +define internal void @ctor.285(%ParserContext* %this, %StringRef %filename, %StringRef %code, %Location %loc, i1 %scannerOnly) #4 { %this.addr = alloca %ParserContext* store %ParserContext* %this, %ParserContext** %this.addr %filename.addr = alloca %StringRef @@ -9526,19 +9358,19 @@ define internal void @ctor.291(%ParserContext* %this, %StringRef %filename, %Str code1: ; preds = %0 %1 = load %ParserContext*, %ParserContext** %this.addr %2 = getelementptr inbounds %ParserContext, %ParserContext* %1, i32 0, i32 0 - call void @ctor.152(%File* %2) + call void @ctor.146(%File* %2) %3 = load %ParserContext*, %ParserContext** %this.addr %4 = getelementptr inbounds %ParserContext, %ParserContext* %3, i32 0, i32 1 - call void @ctor.153(%FileRange* %4) + call void @ctor.147(%FileRange* %4) %5 = load %ParserContext*, %ParserContext** %this.addr %6 = getelementptr inbounds %ParserContext, %ParserContext* %5, i32 0, i32 2 - call void @ctor.139(%_CharSource* %6) + call void @ctor.133(%_CharSource* %6) %7 = load %ParserContext*, %ParserContext** %this.addr %8 = getelementptr inbounds %ParserContext, %ParserContext* %7, i32 0, i32 4 - call void @ctor.165(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %8) + call void @ctor.159(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %8) %9 = load %ParserContext*, %ParserContext** %this.addr %10 = getelementptr inbounds %ParserContext, %ParserContext* %9, i32 0, i32 5 - call void @ctor.171(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %10) + call void @ctor.165(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %10) br label %if_block if_block: ; preds = %code1 @@ -9554,13 +9386,13 @@ if_then: ; preds = %if_block store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.8, i32 0, i32 0), i8** %15 store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.8, i32 0, i32 1), i8** %16 %17 = load %StringRef, %StringRef* %tmp.StringRef - call void @ctor.292(%File* %13, %StringRef %14, %StringRef %17) + call void @ctor.286(%File* %13, %StringRef %14, %StringRef %17) %18 = load %ParserContext*, %ParserContext** %this.addr %19 = getelementptr inbounds %ParserContext, %ParserContext* %18, i32 0, i32 1 %20 = load %ParserContext*, %ParserContext** %this.addr %21 = getelementptr inbounds %ParserContext, %ParserContext* %20, i32 0, i32 0 call void @all(%FileRange* %"$tmpC", %File* %21) - call void @ctor.175(%FileRange* %19, %FileRange* %"$tmpC") + call void @ctor.169(%FileRange* %19, %FileRange* %"$tmpC") %22 = load %ParserContext*, %ParserContext** %this.addr %23 = getelementptr inbounds %ParserContext, %ParserContext* %22, i32 0, i32 2 %24 = load %ParserContext*, %ParserContext** %this.addr @@ -9570,20 +9402,20 @@ if_then: ; preds = %if_block store i8* getelementptr inbounds ([1 x i8], [1 x i8]* @str.9, i32 0, i32 0), i8** %26 store i8* getelementptr inbounds ([1 x i8], [1 x i8]* @str.9, i32 0, i32 0), i8** %27 %28 = load %StringRef, %StringRef* %tmp.StringRef2 - call void @ctor.144(%_CharSource* %23, %FileRange* %25, %StringRef %28) + call void @ctor.138(%_CharSource* %23, %FileRange* %25, %StringRef %28) br label %if_block3 if_else: ; preds = %if_block %29 = load %ParserContext*, %ParserContext** %this.addr %30 = getelementptr inbounds %ParserContext, %ParserContext* %29, i32 0, i32 0 - call void @ctor.152(%File* %30) + call void @ctor.146(%File* %30) %31 = load %ParserContext*, %ParserContext** %this.addr %32 = getelementptr inbounds %ParserContext, %ParserContext* %31, i32 0, i32 1 - call void @ctor.153(%FileRange* %32) + call void @ctor.147(%FileRange* %32) %33 = load %ParserContext*, %ParserContext** %this.addr %34 = getelementptr inbounds %ParserContext, %ParserContext* %33, i32 0, i32 2 %35 = load %StringRef, %StringRef* %code.addr - call void @ctor.144(%_CharSource* %34, %FileRange* null, %StringRef %35) + call void @ctor.138(%_CharSource* %34, %FileRange* null, %StringRef %35) br label %if_end if_end: ; preds = %if_else, %if_end5 @@ -9593,7 +9425,7 @@ if_end: ; preds = %if_else, %if_end5 %39 = getelementptr inbounds %ParserContext, %ParserContext* %38, i32 0, i32 2 %40 = load %_CharSource, %_CharSource* %39 %41 = load %ExternalErrorReporter, %ExternalErrorReporter* %reporter - call void @ctor.298(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %37, %_CharSource %40, %ExternalErrorReporter %41, %Location* %loc.addr) + call void @ctor.292(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %37, %_CharSource %40, %ExternalErrorReporter %41, %Location* %loc.addr) br label %if_block8 if_block3: ; preds = %if_then @@ -9613,7 +9445,7 @@ if_then4: ; preds = %if_block3 %50 = load %StringRef, %StringRef* %filename.addr call void @toString(%String* %"$tmpC6", %StringRef %49, %StringRef %50) call void @reportError(%ExternalErrorReporter* %reporter, %Location %46, %String* %"$tmpC6") - call void @dtor.229(%String* %"$tmpC6") + call void @dtor.218(%String* %"$tmpC6") br label %if_end5 if_end5: ; preds = %if_then4, %if_block3 @@ -9631,14 +9463,14 @@ if_then9: ; preds = %if_block8 %56 = getelementptr inbounds %ParserContext, %ParserContext* %55, i32 0, i32 3 %57 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %56 %58 = load %ExternalErrorReporter, %ExternalErrorReporter* %reporter - call void @ctor.304(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %54, %"SparrowScanner[_CharSource, ExternalErrorReporter]" %57, %ExternalErrorReporter %58) + call void @ctor.298(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %54, %"SparrowScanner[_CharSource, ExternalErrorReporter]" %57, %ExternalErrorReporter %58) %59 = load %ParserContext*, %ParserContext** %this.addr %60 = getelementptr inbounds %ParserContext, %ParserContext* %59, i32 0, i32 5 %61 = load %ParserContext*, %ParserContext** %this.addr %62 = getelementptr inbounds %ParserContext, %ParserContext* %61, i32 0, i32 4 %63 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %62 %64 = load %ExternalErrorReporter, %ExternalErrorReporter* %reporter - call void @ctor.419(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %60, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]" %63, %ExternalErrorReporter %64) + call void @ctor.413(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %60, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]" %63, %ExternalErrorReporter %64) br label %if_end10 if_end10: ; preds = %if_then9, %if_block8 @@ -9646,7 +9478,7 @@ if_end10: ; preds = %if_then9, %if_block } ; Function Attrs: inlinehint nounwind -define internal void @ctor.292(%File* %this, %StringRef %filename, %StringRef %mode) #4 { +define internal void @ctor.286(%File* %this, %StringRef %filename, %StringRef %mode) #4 { %this.addr = alloca %File* store %File* %this, %File** %this.addr %filename.addr = alloca %StringRef @@ -9681,12 +9513,12 @@ define internal void @all(%FileRange* sret %_result, %File* %this) #4 { code: ; preds = %0 %1 = load %FileRange*, %FileRange** %_result.addr %2 = load %File*, %File** %this.addr - call void @ctor.293(%FileRange* %1, %File* %2) + call void @ctor.287(%FileRange* %1, %File* %2) ret void } ; Function Attrs: inlinehint nounwind -define internal void @ctor.293(%FileRange* %this, %File* %file) #4 { +define internal void @ctor.287(%FileRange* %this, %File* %file) #4 { %this.addr = alloca %FileRange* store %FileRange* %this, %FileRange** %this.addr %file.addr = alloca %File* @@ -9738,7 +9570,7 @@ if_end: ; preds = %if_then, %if_block } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.294(%FileRange* %this) #3 { +define internal void @dtor.288(%FileRange* %this) #3 { %this.addr = alloca %FileRange* store %FileRange* %this, %FileRange** %this.addr br label %code @@ -9759,22 +9591,22 @@ define internal void @toString(%String* sret %_result, %StringRef %a1, %StringRe br label %code code: ; preds = %0 - call void @ctor.295(%StringOutputStream* %s) + call void @ctor.289(%StringOutputStream* %s) %1 = call %StringOutputStream* @"<<"(%StringOutputStream* %s, %StringRef* %a1.addr) %2 = call %StringOutputStream* @"<<"(%StringOutputStream* %1, %StringRef* %a2.addr) %3 = load %String*, %String** %_result.addr %4 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %s, i32 0, i32 0 - call void @ctor.192(%String* %3, %String* %4) - call void @dtor.297(%StringOutputStream* %s) + call void @ctor.184(%String* %3, %String* %4) + call void @dtor.291(%StringOutputStream* %s) ret void dumy_block: ; No predecessors! - call void @dtor.297(%StringOutputStream* %s) + call void @dtor.291(%StringOutputStream* %s) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.295(%StringOutputStream* %this) #3 { +define internal void @ctor.289(%StringOutputStream* %this) #3 { %this.addr = alloca %StringOutputStream* store %StringOutputStream* %this, %StringOutputStream** %this.addr br label %code @@ -9782,7 +9614,7 @@ define internal void @ctor.295(%StringOutputStream* %this) #3 { code: ; preds = %0 %1 = load %StringOutputStream*, %StringOutputStream** %this.addr %2 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %1, i32 0, i32 0 - call void @ctor.164(%String* %2) + call void @ctor.158(%String* %2) ret void } @@ -9798,13 +9630,13 @@ code: ; preds = %0 %1 = load %StringOutputStream*, %StringOutputStream** %s.addr %2 = load %StringRef*, %StringRef** %x.addr %3 = load %StringRef, %StringRef* %2 - call void @"<<<.296"(%StringOutputStream* %1, %StringRef %3) + call void @"<<<.290"(%StringOutputStream* %1, %StringRef %3) %4 = load %StringOutputStream*, %StringOutputStream** %s.addr ret %StringOutputStream* %4 } ; Function Attrs: alwaysinline nounwind -define internal void @"<<<.296"(%StringOutputStream* %this, %StringRef %s) #3 { +define internal void @"<<<.290"(%StringOutputStream* %this, %StringRef %s) #3 { %this.addr = alloca %StringOutputStream* store %StringOutputStream* %this, %StringOutputStream** %this.addr %s.addr = alloca %StringRef @@ -9825,7 +9657,7 @@ define internal void @append(%String* %this, %StringRef %range) #4 { store %String* %this, %String** %this.addr %range.addr = alloca %StringRef store %StringRef %range, %StringRef* %range.addr - %tmp.v = alloca %StringRef + %tmp.this = alloca %StringRef br label %code code: ; preds = %0 @@ -9839,8 +9671,8 @@ code: ; preds = %0 %8 = getelementptr inbounds %String, %String* %7, i32 0, i32 1 %9 = load %"RawPtr[Char]", %"RawPtr[Char]"* %8 %10 = call i8* @bytePtr(%"RawPtr[Char]" %9) - call void @ctor.57(%StringRef* %tmp.v, i8* %6, i8* %10) - %11 = load %StringRef, %StringRef* %tmp.v + call void @ctor.57(%StringRef* %tmp.this, i8* %6, i8* %10) + %11 = load %StringRef, %StringRef* %tmp.this call void @insertBefore(%String* %1, %StringRef %2, %StringRef %11) ret void } @@ -9857,17 +9689,17 @@ define internal void @insertBefore(%String* %this, %StringRef %range, %StringRef %index = alloca i64 %"$tmpC" = alloca %"RawPtr[Char]" %p = alloca %"RawPtr[Char]" - %tmp.v = alloca i64 + %tmp.this = alloca i64 %q = alloca %"RawPtr[Char]" - %tmp.v1 = alloca i64 + %tmp.this1 = alloca i64 %"$tmpC2" = alloca %"RawPtr[Char]" - %tmp.v3 = alloca i64 + %tmp.this3 = alloca i64 %"$tmpC4" = alloca %"RawPtr[Char]" - %tmp.v5 = alloca i64 + %tmp.this5 = alloca i64 %"$tmpC6" = alloca %"RawPtr[Char]" %"$tmpC11" = alloca %"RawPtr[Char]" %"$tmpC12" = alloca %"RawPtr[Char]" - %tmp.v13 = alloca i64 + %tmp.this13 = alloca i64 br label %code code: ; preds = %0 @@ -9883,28 +9715,28 @@ code: ; preds = %0 store i64 %7, i64* %index %8 = load %String*, %String** %this.addr %9 = load %String*, %String** %this.addr - %10 = call i64 @size.193(%String* %9) + %10 = call i64 @size.185(%String* %9) %11 = load i64, i64* %n %12 = add i64 %10, %11 call void @reserve(%String* %8, i64 %12) %13 = load %String*, %String** %this.addr %14 = getelementptr inbounds %String, %String* %13, i32 0, i32 1 %15 = load %"RawPtr[Char]", %"RawPtr[Char]"* %14 - store i64 -1, i64* %tmp.v - %16 = load i64, i64* %tmp.v - call void @advance.195(%"RawPtr[Char]"* %p, %"RawPtr[Char]" %15, i64 %16) + store i64 -1, i64* %tmp.this + %16 = load i64, i64* %tmp.this + call void @advance.187(%"RawPtr[Char]"* %p, %"RawPtr[Char]" %15, i64 %16) %17 = load %String*, %String** %this.addr %18 = getelementptr inbounds %String, %String* %17, i32 0, i32 0 %19 = load %"RawPtr[Char]", %"RawPtr[Char]"* %18 %20 = load i64, i64* %index - store i64 1, i64* %tmp.v1 - %21 = load i64, i64* %tmp.v1 + store i64 1, i64* %tmp.this1 + %21 = load i64, i64* %tmp.this1 %22 = call i64 @_DiffType_opMinus(i64 %20, i64 %21) - call void @advance.195(%"RawPtr[Char]"* %q, %"RawPtr[Char]" %19, i64 %22) + call void @advance.187(%"RawPtr[Char]"* %q, %"RawPtr[Char]" %19, i64 %22) br label %while_block while_block: ; preds = %while_step, %code - %23 = call i1 @"==.188"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %q) + %23 = call i1 @"==.225"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %q) %24 = xor i1 true, %23 br i1 %24, label %while_body, label %while_end @@ -9914,9 +9746,9 @@ while_body: ; preds = %while_block %27 = load i8, i8* %26 %28 = load %"RawPtr[Char]", %"RawPtr[Char]"* %p %29 = load i64, i64* %n - store i64 %29, i64* %tmp.v3 - %30 = load i64, i64* %tmp.v3 - call void @advance.195(%"RawPtr[Char]"* %"$tmpC2", %"RawPtr[Char]" %28, i64 %30) + store i64 %29, i64* %tmp.this3 + %30 = load i64, i64* %tmp.this3 + call void @advance.187(%"RawPtr[Char]"* %"$tmpC2", %"RawPtr[Char]" %28, i64 %30) %31 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC2" %32 = call i8* @value(%"RawPtr[Char]" %31) store i8 %27, i8* %32 @@ -9927,16 +9759,16 @@ while_body: ; preds = %while_block while_step: ; preds = %while_body %36 = load %"RawPtr[Char]", %"RawPtr[Char]"* %p - store i64 -1, i64* %tmp.v5 - %37 = load i64, i64* %tmp.v5 - call void @advance.195(%"RawPtr[Char]"* %"$tmpC4", %"RawPtr[Char]" %36, i64 %37) - call void @"=.184"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %"$tmpC4") + store i64 -1, i64* %tmp.this5 + %37 = load i64, i64* %tmp.this5 + call void @advance.187(%"RawPtr[Char]"* %"$tmpC4", %"RawPtr[Char]" %36, i64 %37) + call void @"=.178"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %"$tmpC4") br label %while_block while_end: ; preds = %while_block %38 = load %"RawPtr[Char]", %"RawPtr[Char]"* %p - call void @advance.189(%"RawPtr[Char]"* %"$tmpC6", %"RawPtr[Char]" %38) - call void @"=.184"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %"$tmpC6") + call void @advance.226(%"RawPtr[Char]"* %"$tmpC6", %"RawPtr[Char]" %38) + call void @"=.178"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %"$tmpC6") br label %while_block7 while_block7: ; preds = %while_step9, %while_end @@ -9951,8 +9783,8 @@ while_body8: ; preds = %while_block7 %44 = call i8* @value(%"RawPtr[Char]" %43) store i8 %42, i8* %44 %45 = load %"RawPtr[Char]", %"RawPtr[Char]"* %p - call void @advance.189(%"RawPtr[Char]"* %"$tmpC11", %"RawPtr[Char]" %45) - call void @"=.184"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %"$tmpC11") + call void @advance.226(%"RawPtr[Char]"* %"$tmpC11", %"RawPtr[Char]" %45) + call void @"=.178"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %"$tmpC11") call void @popFront(%StringRef* %range.addr) br label %while_step9 @@ -9966,10 +9798,10 @@ while_end10: ; preds = %while_block7 %49 = getelementptr inbounds %String, %String* %48, i32 0, i32 1 %50 = load %"RawPtr[Char]", %"RawPtr[Char]"* %49 %51 = load i64, i64* %n - store i64 %51, i64* %tmp.v13 - %52 = load i64, i64* %tmp.v13 - call void @advance.195(%"RawPtr[Char]"* %"$tmpC12", %"RawPtr[Char]" %50, i64 %52) - call void @"=.184"(%"RawPtr[Char]"* %47, %"RawPtr[Char]"* %"$tmpC12") + store i64 %51, i64* %tmp.this13 + %52 = load i64, i64* %tmp.this13 + call void @advance.187(%"RawPtr[Char]"* %"$tmpC12", %"RawPtr[Char]" %50, i64 %52) + call void @"=.178"(%"RawPtr[Char]"* %47, %"RawPtr[Char]"* %"$tmpC12") ret void } @@ -9985,7 +9817,7 @@ code: ; preds = %0 %1 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %_result.addr %2 = getelementptr inbounds %StringRef, %StringRef* %s.addr, i32 0, i32 0 %3 = load i8*, i8** %2 - call void @ctor.186(%"RawPtr[Char]"* %1, i8* %3) + call void @ctor.180(%"RawPtr[Char]"* %1, i8* %3) ret void } @@ -9996,17 +9828,17 @@ define internal void @reserve(%String* %this, i64 %n) #4 { %n.addr = alloca i64 store i64 %n, i64* %n.addr %curCapacity = alloca i64 - %tmp.v = alloca i64 - %tmp.v4 = alloca i64 - %tmp.v8 = alloca double - %tmp.v9 = alloca double - %tmp.v10 = alloca i64 - %tmp.v11 = alloca double + %tmp.this = alloca i64 + %tmp.this4 = alloca i64 + %tmp.this8 = alloca double + %tmp.this9 = alloca double + %tmp.this10 = alloca i64 + %tmp.this11 = alloca double %curSize = alloca i64 %"$tmpC" = alloca %"RawPtr[Char]" - %tmp.v12 = alloca i64 + %tmp.this12 = alloca i64 %"$tmpC13" = alloca %"RawPtr[Char]" - %tmp.v14 = alloca i64 + %tmp.this14 = alloca i64 br label %code code: ; preds = %0 @@ -10032,14 +9864,14 @@ dumy_block: ; No predecessors! if_block1: ; preds = %if_end %6 = load i64, i64* %n.addr - store i64 16, i64* %tmp.v - %7 = load i64, i64* %tmp.v + store i64 16, i64* %tmp.this + %7 = load i64, i64* %tmp.this %8 = icmp slt i64 %6, %7 br i1 %8, label %if_then2, label %if_end3 if_then2: ; preds = %if_block1 - store i64 16, i64* %tmp.v4 - %9 = load i64, i64* %tmp.v4 + store i64 16, i64* %tmp.this4 + %9 = load i64, i64* %tmp.this4 store i64 %9, i64* %n.addr br label %if_end3 @@ -10049,12 +9881,12 @@ if_end3: ; preds = %if_then2, %if_block if_block5: ; preds = %if_end3 %10 = load i64, i64* %n.addr %11 = sitofp i64 %10 to double - store double %11, double* %tmp.v8 - %12 = load double, double* %tmp.v8 + store double %11, double* %tmp.this8 + %12 = load double, double* %tmp.this8 %13 = load i64, i64* %curCapacity %14 = sitofp i64 %13 to double - store double %14, double* %tmp.v9 - %15 = load double, double* %tmp.v9 + store double %14, double* %tmp.this9 + %15 = load double, double* %tmp.this9 %16 = call double @_Double_opMul(double 1.500000e+00, double %15) %17 = call i1 @_Double_opLT(double %12, double %16) br i1 %17, label %if_then6, label %if_end7 @@ -10062,18 +9894,18 @@ if_block5: ; preds = %if_end3 if_then6: ; preds = %if_block5 %18 = load i64, i64* %curCapacity %19 = sitofp i64 %18 to double - store double %19, double* %tmp.v11 - %20 = load double, double* %tmp.v11 + store double %19, double* %tmp.this11 + %20 = load double, double* %tmp.this11 %21 = call double @_Double_opMul(double 1.500000e+00, double %20) %22 = fptoui double %21 to i64 - store i64 %22, i64* %tmp.v10 - %23 = load i64, i64* %tmp.v10 + store i64 %22, i64* %tmp.this10 + %23 = load i64, i64* %tmp.this10 store i64 %23, i64* %n.addr br label %if_end7 if_end7: ; preds = %if_then6, %if_block5 %24 = load %String*, %String** %this.addr - %25 = call i64 @size.193(%String* %24) + %25 = call i64 @size.185(%String* %24) store i64 %25, i64* %curSize %26 = load %String*, %String** %this.addr %27 = getelementptr inbounds %String, %String* %26, i32 0, i32 0 @@ -10085,20 +9917,20 @@ if_end7: ; preds = %if_then6, %if_block %32 = getelementptr inbounds %String, %String* %31, i32 0, i32 0 %33 = load %"RawPtr[Char]", %"RawPtr[Char]"* %32 %34 = load i64, i64* %curSize - store i64 %34, i64* %tmp.v12 - %35 = load i64, i64* %tmp.v12 - call void @advance.195(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %33, i64 %35) - call void @"=.184"(%"RawPtr[Char]"* %30, %"RawPtr[Char]"* %"$tmpC") + store i64 %34, i64* %tmp.this12 + %35 = load i64, i64* %tmp.this12 + call void @advance.187(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %33, i64 %35) + call void @"=.178"(%"RawPtr[Char]"* %30, %"RawPtr[Char]"* %"$tmpC") %36 = load %String*, %String** %this.addr %37 = getelementptr inbounds %String, %String* %36, i32 0, i32 2 %38 = load %String*, %String** %this.addr %39 = getelementptr inbounds %String, %String* %38, i32 0, i32 0 %40 = load %"RawPtr[Char]", %"RawPtr[Char]"* %39 %41 = load i64, i64* %n.addr - store i64 %41, i64* %tmp.v14 - %42 = load i64, i64* %tmp.v14 - call void @advance.195(%"RawPtr[Char]"* %"$tmpC13", %"RawPtr[Char]" %40, i64 %42) - call void @"=.184"(%"RawPtr[Char]"* %37, %"RawPtr[Char]"* %"$tmpC13") + store i64 %41, i64* %tmp.this14 + %42 = load i64, i64* %tmp.this14 + call void @advance.187(%"RawPtr[Char]"* %"$tmpC13", %"RawPtr[Char]" %40, i64 %42) + call void @"=.178"(%"RawPtr[Char]"* %37, %"RawPtr[Char]"* %"$tmpC13") ret void } @@ -10106,7 +9938,7 @@ if_end7: ; preds = %if_then6, %if_block define internal i64 @capacity(%String* %this) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -10117,8 +9949,8 @@ code: ; preds = %0 %5 = getelementptr inbounds %String, %String* %4, i32 0, i32 0 %6 = load %"RawPtr[Char]", %"RawPtr[Char]"* %5 %7 = call i64 @diff(%"RawPtr[Char]" %3, %"RawPtr[Char]" %6) - store i64 %7, i64* %tmp.v - %8 = load i64, i64* %tmp.v + store i64 %7, i64* %tmp.this + %8 = load i64, i64* %tmp.this ret i64 %8 } @@ -10144,7 +9976,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.297(%StringOutputStream* %this) #3 { +define internal void @dtor.291(%StringOutputStream* %this) #3 { %this.addr = alloca %StringOutputStream* store %StringOutputStream* %this, %StringOutputStream** %this.addr br label %code @@ -10152,12 +9984,12 @@ define internal void @dtor.297(%StringOutputStream* %this) #3 { code: ; preds = %0 %1 = load %StringOutputStream*, %StringOutputStream** %this.addr %2 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %1, i32 0, i32 0 - call void @dtor.229(%String* %2) + call void @dtor.218(%String* %2) ret void } ; Function Attrs: inlinehint nounwind -define internal void @ctor.298(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %_CharSource %source, %ExternalErrorReporter %errorReporter, %Location* %iniLocation) #4 { +define internal void @ctor.292(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %_CharSource %source, %ExternalErrorReporter %errorReporter, %Location* %iniLocation) #4 { %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %source.addr = alloca %_CharSource @@ -10166,26 +9998,26 @@ define internal void @ctor.298(%"SparrowScanner[_CharSource, ExternalErrorReport store %ExternalErrorReporter %errorReporter, %ExternalErrorReporter* %errorReporter.addr %iniLocation.addr = alloca %Location* store %Location* %iniLocation, %Location** %iniLocation.addr - %tmp.v = alloca %"RangeWithLookahead[_CharSource]" + %tmp.this = alloca %"RangeWithLookahead[_CharSource]" br label %code code: ; preds = %0 %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 0 %3 = load %Location*, %Location** %iniLocation.addr - call void @ctor.177(%Location* %2, %Location* %3) + call void @ctor.171(%Location* %2, %Location* %3) %4 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %5 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %4, i32 0, i32 1 %6 = load %_CharSource, %_CharSource* %source.addr - call void @ctor.300(%"RangeWithLookahead[_CharSource]"* %tmp.v, %_CharSource %6) - %7 = load %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %tmp.v + call void @ctor.294(%"RangeWithLookahead[_CharSource]"* %tmp.this, %_CharSource %6) + %7 = load %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %tmp.this %8 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %9 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %8, i32 0, i32 0 - call void @ctor.299(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5, %"RangeWithLookahead[_CharSource]" %7, %Location* %9) - call void @dtor.242(%"RangeWithLookahead[_CharSource]"* %tmp.v) + call void @ctor.293(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5, %"RangeWithLookahead[_CharSource]" %7, %Location* %9) + call void @dtor.236(%"RangeWithLookahead[_CharSource]"* %tmp.this) %10 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %11 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %10, i32 0, i32 2 - call void @ctor.162(%Token* %11) + call void @ctor.156(%Token* %11) %12 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %13 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %12, i32 0, i32 3 store i1 false, i1* %13 @@ -10193,7 +10025,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.299(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this, %"RangeWithLookahead[_CharSource]" %fsource, %Location* %flocation) #3 { +define internal void @ctor.293(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this, %"RangeWithLookahead[_CharSource]" %fsource, %Location* %flocation) #3 { %this.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr %fsource.addr = alloca %"RangeWithLookahead[_CharSource]" @@ -10205,7 +10037,7 @@ define internal void @ctor.299(%"LocationSyncCharRange[RangeWithLookahead[_CharS code: ; preds = %0 %1 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr %2 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1, i32 0, i32 0 - call void @ctor.181(%"RangeWithLookahead[_CharSource]"* %2, %"RangeWithLookahead[_CharSource]"* %fsource.addr) + call void @ctor.175(%"RangeWithLookahead[_CharSource]"* %2, %"RangeWithLookahead[_CharSource]"* %fsource.addr) %3 = load %Location*, %Location** %flocation.addr %4 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr %5 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %4, i32 0, i32 1 @@ -10214,30 +10046,30 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @ctor.300(%"RangeWithLookahead[_CharSource]"* %this, %_CharSource %src) #4 { +define internal void @ctor.294(%"RangeWithLookahead[_CharSource]"* %this, %_CharSource %src) #4 { %this.addr = alloca %"RangeWithLookahead[_CharSource]"* store %"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"** %this.addr %src.addr = alloca %_CharSource store %_CharSource %src, %_CharSource* %src.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 %"$tmpForRef" = alloca i8 br label %code code: ; preds = %0 %1 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr %2 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %1, i32 0, i32 0 - call void @ctor.139(%_CharSource* %2) + call void @ctor.133(%_CharSource* %2) %3 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr %4 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %3, i32 0, i32 0 - call void @"=.142"(%_CharSource* %4, %_CharSource* %src.addr) + call void @"=.136"(%_CharSource* %4, %_CharSource* %src.addr) %5 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr %6 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %5, i32 0, i32 1 - call void @ctor.160(%"Vector[Char]"* %6) + call void @ctor.154(%"Vector[Char]"* %6) %7 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr %8 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %7, i32 0, i32 1 - store i64 10, i64* %tmp.v - %9 = load i64, i64* %tmp.v - call void @reserve.301(%"Vector[Char]"* %8, i64 %9) + store i64 10, i64* %tmp.this + %9 = load i64, i64* %tmp.this + call void @reserve.295(%"Vector[Char]"* %8, i64 %9) br label %if_block if_block: ; preds = %code @@ -10251,7 +10083,7 @@ if_then: ; preds = %if_block %14 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %13, i32 0, i32 1 %15 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr %16 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %15, i32 0, i32 0 - %17 = call i8 @"post_++.303"(%_CharSource* %16) + %17 = call i8 @"post_++.297"(%_CharSource* %16) store i8 %17, i8* %"$tmpForRef" call void @"+="(%"Vector[Char]"* %14, i8* %"$tmpForRef") br label %if_end @@ -10261,18 +10093,18 @@ if_end: ; preds = %if_then, %if_block } ; Function Attrs: inlinehint nounwind -define internal void @reserve.301(%"Vector[Char]"* %this, i64 %n) #4 { +define internal void @reserve.295(%"Vector[Char]"* %this, i64 %n) #4 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr %n.addr = alloca i64 store i64 %n, i64* %n.addr %curCapacity = alloca i64 - %tmp.v = alloca i64 - %tmp.v4 = alloca i64 - %tmp.v8 = alloca double - %tmp.v9 = alloca double - %tmp.v10 = alloca i64 - %tmp.v11 = alloca double + %tmp.this = alloca i64 + %tmp.this4 = alloca i64 + %tmp.this8 = alloca double + %tmp.this9 = alloca double + %tmp.this10 = alloca i64 + %tmp.this11 = alloca double %curSize = alloca i64 %"$tmpC" = alloca %"RawPtr[Char]" %"$tmpC12" = alloca %"RawPtr[Char]" @@ -10280,7 +10112,7 @@ define internal void @reserve.301(%"Vector[Char]"* %this, i64 %n) #4 { code: ; preds = %0 %1 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %2 = call i64 @capacity.302(%"Vector[Char]"* %1) + %2 = call i64 @capacity.296(%"Vector[Char]"* %1) store i64 %2, i64* %curCapacity br label %if_block @@ -10301,14 +10133,14 @@ dumy_block: ; No predecessors! if_block1: ; preds = %if_end %6 = load i64, i64* %n.addr - store i64 8, i64* %tmp.v - %7 = load i64, i64* %tmp.v + store i64 8, i64* %tmp.this + %7 = load i64, i64* %tmp.this %8 = icmp slt i64 %6, %7 br i1 %8, label %if_then2, label %if_end3 if_then2: ; preds = %if_block1 - store i64 8, i64* %tmp.v4 - %9 = load i64, i64* %tmp.v4 + store i64 8, i64* %tmp.this4 + %9 = load i64, i64* %tmp.this4 store i64 %9, i64* %n.addr br label %if_end3 @@ -10318,12 +10150,12 @@ if_end3: ; preds = %if_then2, %if_block if_block5: ; preds = %if_end3 %10 = load i64, i64* %n.addr %11 = sitofp i64 %10 to double - store double %11, double* %tmp.v8 - %12 = load double, double* %tmp.v8 + store double %11, double* %tmp.this8 + %12 = load double, double* %tmp.this8 %13 = load i64, i64* %curCapacity %14 = sitofp i64 %13 to double - store double %14, double* %tmp.v9 - %15 = load double, double* %tmp.v9 + store double %14, double* %tmp.this9 + %15 = load double, double* %tmp.this9 %16 = call double @_Double_opMul(double 2.000000e+00, double %15) %17 = call i1 @_Double_opLT(double %12, double %16) br i1 %17, label %if_then6, label %if_end7 @@ -10331,18 +10163,18 @@ if_block5: ; preds = %if_end3 if_then6: ; preds = %if_block5 %18 = load i64, i64* %curCapacity %19 = sitofp i64 %18 to double - store double %19, double* %tmp.v11 - %20 = load double, double* %tmp.v11 + store double %19, double* %tmp.this11 + %20 = load double, double* %tmp.this11 %21 = call double @_Double_opMul(double 2.000000e+00, double %20) %22 = fptoui double %21 to i64 - store i64 %22, i64* %tmp.v10 - %23 = load i64, i64* %tmp.v10 + store i64 %22, i64* %tmp.this10 + %23 = load i64, i64* %tmp.this10 store i64 %23, i64* %n.addr br label %if_end7 if_end7: ; preds = %if_then6, %if_block5 %24 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %25 = call i64 @size.183(%"Vector[Char]"* %24) + %25 = call i64 @size.177(%"Vector[Char]"* %24) store i64 %25, i64* %curSize %26 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %27 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %26, i32 0, i32 0 @@ -10355,7 +10187,7 @@ if_end7: ; preds = %if_then6, %if_block %33 = load %"RawPtr[Char]", %"RawPtr[Char]"* %32 %34 = load i64, i64* %curSize call void @advance(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %33, i64 %34) - call void @"=.184"(%"RawPtr[Char]"* %30, %"RawPtr[Char]"* %"$tmpC") + call void @"=.178"(%"RawPtr[Char]"* %30, %"RawPtr[Char]"* %"$tmpC") %35 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %36 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %35, i32 0, i32 2 %37 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr @@ -10363,15 +10195,15 @@ if_end7: ; preds = %if_then6, %if_block %39 = load %"RawPtr[Char]", %"RawPtr[Char]"* %38 %40 = load i64, i64* %n.addr call void @advance(%"RawPtr[Char]"* %"$tmpC12", %"RawPtr[Char]" %39, i64 %40) - call void @"=.184"(%"RawPtr[Char]"* %36, %"RawPtr[Char]"* %"$tmpC12") + call void @"=.178"(%"RawPtr[Char]"* %36, %"RawPtr[Char]"* %"$tmpC12") ret void } ; Function Attrs: inlinehint nounwind -define internal i64 @capacity.302(%"Vector[Char]"* %this) #4 { +define internal i64 @capacity.296(%"Vector[Char]"* %this) #4 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -10382,8 +10214,8 @@ code: ; preds = %0 %5 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %4, i32 0, i32 0 %6 = load %"RawPtr[Char]", %"RawPtr[Char]"* %5 %7 = call i64 @diff(%"RawPtr[Char]" %3, %"RawPtr[Char]" %6) - store i64 %7, i64* %tmp.v - %8 = load i64, i64* %tmp.v + store i64 %7, i64* %tmp.this + %8 = load i64, i64* %tmp.this ret i64 %8 } @@ -10395,7 +10227,7 @@ define internal i1 @"pre_!!"(%_CharSource* %r) #4 { code: ; preds = %0 %1 = load %_CharSource*, %_CharSource** %r.addr - %2 = call i1 @isEmpty.145(%_CharSource* %1) + %2 = call i1 @isEmpty.139(%_CharSource* %1) %3 = xor i1 true, %2 ret i1 %3 } @@ -10422,9 +10254,9 @@ define internal void @pushBack(%"Vector[Char]"* %this, i8* %value) #4 { %value.addr = alloca i8* store i8* %value, i8** %value.addr %t = alloca i64 - %tmp.v = alloca i64 - %tmp.v4 = alloca i64 - %tmp.v5 = alloca i64 + %tmp.this = alloca i64 + %tmp.this4 = alloca i64 + %tmp.this5 = alloca i64 %"$tmpC" = alloca %"RawPtr[Char]" br label %code @@ -10436,14 +10268,14 @@ if_block: ; preds = %code %2 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %1, i32 0, i32 1 %3 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %4 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %3, i32 0, i32 2 - %5 = call i1 @"==.188"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) + %5 = call i1 @"==.225"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) br i1 %5, label %if_then, label %if_end if_then: ; preds = %if_block - store i64 2, i64* %tmp.v - %6 = load i64, i64* %tmp.v + store i64 2, i64* %tmp.this + %6 = load i64, i64* %tmp.this %7 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %8 = call i64 @capacity.302(%"Vector[Char]"* %7) + %8 = call i64 @capacity.296(%"Vector[Char]"* %7) %9 = mul i64 %6, %8 store i64 %9, i64* %t br label %if_block1 @@ -10461,32 +10293,32 @@ if_end: ; preds = %if_end3, %if_block %18 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %19 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %18, i32 0, i32 1 %20 = load %"RawPtr[Char]", %"RawPtr[Char]"* %19 - call void @advance.189(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %20) - call void @"=.184"(%"RawPtr[Char]"* %17, %"RawPtr[Char]"* %"$tmpC") + call void @advance.226(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %20) + call void @"=.178"(%"RawPtr[Char]"* %17, %"RawPtr[Char]"* %"$tmpC") ret void if_block1: ; preds = %if_then %21 = load i64, i64* %t - store i64 2, i64* %tmp.v4 - %22 = load i64, i64* %tmp.v4 + store i64 2, i64* %tmp.this4 + %22 = load i64, i64* %tmp.this4 %23 = icmp slt i64 %21, %22 br i1 %23, label %if_then2, label %if_end3 if_then2: ; preds = %if_block1 - store i64 2, i64* %tmp.v5 - %24 = load i64, i64* %tmp.v5 + store i64 2, i64* %tmp.this5 + %24 = load i64, i64* %tmp.this5 store i64 %24, i64* %t br label %if_end3 if_end3: ; preds = %if_then2, %if_block1 %25 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %26 = load i64, i64* %t - call void @reserve.301(%"Vector[Char]"* %25, i64 %26) + call void @reserve.295(%"Vector[Char]"* %25, i64 %26) br label %if_end } ; Function Attrs: inlinehint nounwind -define internal i8 @"post_++.303"(%_CharSource* %r) #4 { +define internal i8 @"post_++.297"(%_CharSource* %r) #4 { %r.addr = alloca %_CharSource* store %_CharSource* %r, %_CharSource** %r.addr %res = alloca i8 @@ -10494,53 +10326,53 @@ define internal i8 @"post_++.303"(%_CharSource* %r) #4 { code: ; preds = %0 %1 = load %_CharSource*, %_CharSource** %r.addr - %2 = call i8 @front.147(%_CharSource* %1) + %2 = call i8 @front.141(%_CharSource* %1) store i8 %2, i8* %res %3 = load %_CharSource*, %_CharSource** %r.addr - call void @popFront.149(%_CharSource* %3) + call void @popFront.143(%_CharSource* %3) %4 = load i8, i8* %res ret i8 %4 } ; Function Attrs: inlinehint nounwind -define internal void @ctor.304(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]" %tokens, %ExternalErrorReporter %errorReporter) #4 { +define internal void @ctor.298(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]" %tokens, %ExternalErrorReporter %errorReporter) #4 { %this.addr = alloca %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* store %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %tokens.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]" store %"SparrowScanner[_CharSource, ExternalErrorReporter]" %tokens, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %tokens.addr %errorReporter.addr = alloca %ExternalErrorReporter store %ExternalErrorReporter %errorReporter, %ExternalErrorReporter* %errorReporter.addr - %tmp.v = alloca i32 - %tmp.v1 = alloca %TokenType + %tmp.this = alloca i32 + %tmp.this1 = alloca %TokenType %"$tmpC" = alloca %Token - %tmp.v2 = alloca %TokenType + %tmp.this2 = alloca %TokenType br label %code code: ; preds = %0 %1 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %2 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 2 - call void @ctor.169(%"Vector[UInt]"* %2) + call void @ctor.163(%"Vector[UInt]"* %2) %3 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %4 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %3, i32 0, i32 3 - call void @ctor.160(%"Vector[Char]"* %4) + call void @ctor.154(%"Vector[Char]"* %4) %5 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %6 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 4 - call void @ctor.163(%TokenType* %6) + call void @ctor.157(%TokenType* %6) %7 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %8 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %7, i32 0, i32 5 store i32 0, i32* %8 %9 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %10 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %9, i32 0, i32 0 %11 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %tokens.addr - call void @ctor.305(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %10, %"SparrowScanner[_CharSource, ExternalErrorReporter]" %11) + call void @ctor.299(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %10, %"SparrowScanner[_CharSource, ExternalErrorReporter]" %11) %12 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %13 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %12, i32 0, i32 2 - store i32 1, i32* %tmp.v - call void @"+=.386"(%"Vector[UInt]"* %13, i32* %tmp.v) + store i32 1, i32* %tmp.this + call void @"+=.380"(%"Vector[UInt]"* %13, i32* %tmp.this) %14 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %15 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %14, i32 0, i32 4 - call void @ctor.319(%TokenType* %tmp.v1, i32 31) - call void @"=.255"(%TokenType* %15, %TokenType* %tmp.v1) + call void @ctor.313(%TokenType* %tmp.this1, i32 31) + call void @"=.249"(%TokenType* %15, %TokenType* %tmp.this1) %16 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %17 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %16, i32 0, i32 5 store i32 0, i32* %17 @@ -10549,13 +10381,13 @@ code: ; preds = %0 if_block: ; preds = %code %18 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %19 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %18, i32 0, i32 0 - %20 = call i1 @isEmpty.391(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %19) + %20 = call i1 @isEmpty.385(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %19) %21 = xor i1 true, %20 br i1 %21, label %cond.true, label %cond.false if_then: ; preds = %cond.end %22 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @popFront.395(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %22) + call void @popFront.389(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %22) br label %if_end if_end: ; preds = %if_then, %cond.end @@ -10564,10 +10396,10 @@ if_end: ; preds = %if_then, %cond.end cond.true: ; preds = %if_block %23 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %24 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %23, i32 0, i32 0 - call void @front.393(%Token* %"$tmpC", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %24) + call void @front.387(%Token* %"$tmpC", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %24) %25 = getelementptr inbounds %Token, %Token* %"$tmpC", i32 0, i32 1 - call void @ctor.319(%TokenType* %tmp.v2, i32 1) - %26 = call i1 @"==.279"(%TokenType* %25, %TokenType* %tmp.v2) + call void @ctor.313(%TokenType* %tmp.this2, i32 1) + %26 = call i1 @"==.273"(%TokenType* %25, %TokenType* %tmp.this2) br label %cond.end cond.false: ; preds = %if_block @@ -10578,7 +10410,7 @@ cond.end: ; preds = %cond.false, %cond.t br i1 %cond.res, label %if_then, label %if_end cond_destruct_alt1: ; preds = %if_end - call void @dtor.228(%Token* %"$tmpC") + call void @dtor.217(%Token* %"$tmpC") br label %cond_destruct_end cond_destruct_alt2: ; preds = %if_end @@ -10589,36 +10421,36 @@ cond_destruct_end: ; preds = %cond_destruct_alt2, } ; Function Attrs: inlinehint nounwind -define internal void @ctor.305(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]" %src) #4 { +define internal void @ctor.299(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]" %src) #4 { %this.addr = alloca %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* store %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr %src.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]" store %"SparrowScanner[_CharSource, ExternalErrorReporter]" %src, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %src.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 %"$tmpC" = alloca %Token br label %code code: ; preds = %0 %1 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr %2 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %1, i32 0, i32 0 - call void @ctor.154(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %2) + call void @ctor.148(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %2) %3 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr %4 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %3, i32 0, i32 0 - call void @"=.247"(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %4, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %src.addr) + call void @"=.241"(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %4, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %src.addr) %5 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr %6 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %5, i32 0, i32 1 - call void @ctor.167(%"Vector[Token]"* %6) + call void @ctor.161(%"Vector[Token]"* %6) %7 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr %8 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %7, i32 0, i32 1 - store i64 10, i64* %tmp.v - %9 = load i64, i64* %tmp.v - call void @reserve.306(%"Vector[Token]"* %8, i64 %9) + store i64 10, i64* %tmp.this + %9 = load i64, i64* %tmp.this + call void @reserve.300(%"Vector[Token]"* %8, i64 %9) br label %if_block if_block: ; preds = %code %10 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr %11 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %10, i32 0, i32 0 - %12 = call i1 @"pre_!!.309"(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %11) + %12 = call i1 @"pre_!!.303"(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %11) br i1 %12, label %if_then, label %if_end if_then: ; preds = %if_block @@ -10626,9 +10458,9 @@ if_then: ; preds = %if_block %14 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %13, i32 0, i32 1 %15 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr %16 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %15, i32 0, i32 0 - call void @"post_++.313"(%Token* %"$tmpC", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %16) - call void @"+=.311"(%"Vector[Token]"* %14, %Token* %"$tmpC") - call void @dtor.228(%Token* %"$tmpC") + call void @"post_++.307"(%Token* %"$tmpC", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %16) + call void @"+=.305"(%"Vector[Token]"* %14, %Token* %"$tmpC") + call void @dtor.217(%Token* %"$tmpC") br label %if_end if_end: ; preds = %if_then, %if_block @@ -10636,18 +10468,18 @@ if_end: ; preds = %if_then, %if_block } ; Function Attrs: inlinehint nounwind -define internal void @reserve.306(%"Vector[Token]"* %this, i64 %n) #4 { +define internal void @reserve.300(%"Vector[Token]"* %this, i64 %n) #4 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr %n.addr = alloca i64 store i64 %n, i64* %n.addr %curCapacity = alloca i64 - %tmp.v = alloca i64 - %tmp.v4 = alloca i64 - %tmp.v8 = alloca double - %tmp.v9 = alloca double - %tmp.v10 = alloca i64 - %tmp.v11 = alloca double + %tmp.this = alloca i64 + %tmp.this4 = alloca i64 + %tmp.this8 = alloca double + %tmp.this9 = alloca double + %tmp.this10 = alloca i64 + %tmp.this11 = alloca double %curSize = alloca i64 %"$tmpC" = alloca %"RawPtr[Token]" %"$tmpC12" = alloca %"RawPtr[Token]" @@ -10655,7 +10487,7 @@ define internal void @reserve.306(%"Vector[Token]"* %this, i64 %n) #4 { code: ; preds = %0 %1 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr - %2 = call i64 @capacity.307(%"Vector[Token]"* %1) + %2 = call i64 @capacity.301(%"Vector[Token]"* %1) store i64 %2, i64* %curCapacity br label %if_block @@ -10676,14 +10508,14 @@ dumy_block: ; No predecessors! if_block1: ; preds = %if_end %6 = load i64, i64* %n.addr - store i64 8, i64* %tmp.v - %7 = load i64, i64* %tmp.v + store i64 8, i64* %tmp.this + %7 = load i64, i64* %tmp.this %8 = icmp slt i64 %6, %7 br i1 %8, label %if_then2, label %if_end3 if_then2: ; preds = %if_block1 - store i64 8, i64* %tmp.v4 - %9 = load i64, i64* %tmp.v4 + store i64 8, i64* %tmp.this4 + %9 = load i64, i64* %tmp.this4 store i64 %9, i64* %n.addr br label %if_end3 @@ -10693,12 +10525,12 @@ if_end3: ; preds = %if_then2, %if_block if_block5: ; preds = %if_end3 %10 = load i64, i64* %n.addr %11 = sitofp i64 %10 to double - store double %11, double* %tmp.v8 - %12 = load double, double* %tmp.v8 + store double %11, double* %tmp.this8 + %12 = load double, double* %tmp.this8 %13 = load i64, i64* %curCapacity %14 = sitofp i64 %13 to double - store double %14, double* %tmp.v9 - %15 = load double, double* %tmp.v9 + store double %14, double* %tmp.this9 + %15 = load double, double* %tmp.this9 %16 = call double @_Double_opMul(double 2.000000e+00, double %15) %17 = call i1 @_Double_opLT(double %12, double %16) br i1 %17, label %if_then6, label %if_end7 @@ -10706,47 +10538,47 @@ if_block5: ; preds = %if_end3 if_then6: ; preds = %if_block5 %18 = load i64, i64* %curCapacity %19 = sitofp i64 %18 to double - store double %19, double* %tmp.v11 - %20 = load double, double* %tmp.v11 + store double %19, double* %tmp.this11 + %20 = load double, double* %tmp.this11 %21 = call double @_Double_opMul(double 2.000000e+00, double %20) %22 = fptoui double %21 to i64 - store i64 %22, i64* %tmp.v10 - %23 = load i64, i64* %tmp.v10 + store i64 %22, i64* %tmp.this10 + %23 = load i64, i64* %tmp.this10 store i64 %23, i64* %n.addr br label %if_end7 if_end7: ; preds = %if_then6, %if_block5 %24 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr - %25 = call i64 @size.199(%"Vector[Token]"* %24) + %25 = call i64 @size.191(%"Vector[Token]"* %24) store i64 %25, i64* %curSize %26 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %27 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %26, i32 0, i32 0 %28 = load i64, i64* %n.addr - call void @reallocPtr.308(%"RawPtr[Token]"* %27, i64 %28) + call void @reallocPtr.302(%"RawPtr[Token]"* %27, i64 %28) %29 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %30 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %29, i32 0, i32 1 %31 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %32 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %31, i32 0, i32 0 %33 = load %"RawPtr[Token]", %"RawPtr[Token]"* %32 %34 = load i64, i64* %curSize - call void @advance.205(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %33, i64 %34) - call void @"=.202"(%"RawPtr[Token]"* %30, %"RawPtr[Token]"* %"$tmpC") + call void @advance.197(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %33, i64 %34) + call void @"=.194"(%"RawPtr[Token]"* %30, %"RawPtr[Token]"* %"$tmpC") %35 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %36 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %35, i32 0, i32 2 %37 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %38 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %37, i32 0, i32 0 %39 = load %"RawPtr[Token]", %"RawPtr[Token]"* %38 %40 = load i64, i64* %n.addr - call void @advance.205(%"RawPtr[Token]"* %"$tmpC12", %"RawPtr[Token]" %39, i64 %40) - call void @"=.202"(%"RawPtr[Token]"* %36, %"RawPtr[Token]"* %"$tmpC12") + call void @advance.197(%"RawPtr[Token]"* %"$tmpC12", %"RawPtr[Token]" %39, i64 %40) + call void @"=.194"(%"RawPtr[Token]"* %36, %"RawPtr[Token]"* %"$tmpC12") ret void } ; Function Attrs: inlinehint nounwind -define internal i64 @capacity.307(%"Vector[Token]"* %this) #4 { +define internal i64 @capacity.301(%"Vector[Token]"* %this) #4 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -10756,14 +10588,14 @@ code: ; preds = %0 %4 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %5 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %4, i32 0, i32 0 %6 = load %"RawPtr[Token]", %"RawPtr[Token]"* %5 - %7 = call i64 @diff.200(%"RawPtr[Token]" %3, %"RawPtr[Token]" %6) - store i64 %7, i64* %tmp.v - %8 = load i64, i64* %tmp.v + %7 = call i64 @diff.192(%"RawPtr[Token]" %3, %"RawPtr[Token]" %6) + store i64 %7, i64* %tmp.this + %8 = load i64, i64* %tmp.this ret i64 %8 } ; Function Attrs: inlinehint nounwind -define internal void @reallocPtr.308(%"RawPtr[Token]"* %this, i64 %n) #4 { +define internal void @reallocPtr.302(%"RawPtr[Token]"* %this, i64 %n) #4 { %this.addr = alloca %"RawPtr[Token]"* store %"RawPtr[Token]"* %this, %"RawPtr[Token]"** %this.addr %n.addr = alloca i64 @@ -10773,7 +10605,7 @@ define internal void @reallocPtr.308(%"RawPtr[Token]"* %this, i64 %n) #4 { code: ; preds = %0 %1 = load %"RawPtr[Token]"*, %"RawPtr[Token]"** %this.addr %2 = load %"RawPtr[Token]", %"RawPtr[Token]"* %1 - %3 = call i8* @bytePtr.201(%"RawPtr[Token]" %2) + %3 = call i8* @bytePtr.193(%"RawPtr[Token]" %2) %4 = load i64, i64* %n.addr %5 = mul i64 %4, 72 %6 = call i8* @realloc(i8* %3, i64 %5) @@ -10785,20 +10617,20 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i1 @"pre_!!.309"(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %r) #4 { +define internal i1 @"pre_!!.303"(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %r) #4 { %r.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %r, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %r.addr br label %code code: ; preds = %0 %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %r.addr - %2 = call i1 @isEmpty.310(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1) + %2 = call i1 @isEmpty.304(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1) %3 = xor i1 true, %2 ret i1 %3 } ; Function Attrs: inlinehint nounwind -define internal i1 @isEmpty.310(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this) #4 { +define internal i1 @isEmpty.304(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this) #4 { %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr br label %code @@ -10808,7 +10640,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @"+=.311"(%"Vector[Token]"* %this, %Token* %value) #4 { +define internal void @"+=.305"(%"Vector[Token]"* %this, %Token* %value) #4 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr %value.addr = alloca %Token* @@ -10818,20 +10650,20 @@ define internal void @"+=.311"(%"Vector[Token]"* %this, %Token* %value) #4 { code: ; preds = %0 %1 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %2 = load %Token*, %Token** %value.addr - call void @pushBack.312(%"Vector[Token]"* %1, %Token* %2) + call void @pushBack.306(%"Vector[Token]"* %1, %Token* %2) ret void } ; Function Attrs: inlinehint nounwind -define internal void @pushBack.312(%"Vector[Token]"* %this, %Token* %value) #4 { +define internal void @pushBack.306(%"Vector[Token]"* %this, %Token* %value) #4 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr %value.addr = alloca %Token* store %Token* %value, %Token** %value.addr %t = alloca i64 - %tmp.v = alloca i64 - %tmp.v4 = alloca i64 - %tmp.v5 = alloca i64 + %tmp.this = alloca i64 + %tmp.this4 = alloca i64 + %tmp.this5 = alloca i64 %"$tmpC" = alloca %"RawPtr[Token]" br label %code @@ -10843,14 +10675,14 @@ if_block: ; preds = %code %2 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %1, i32 0, i32 1 %3 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %4 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %3, i32 0, i32 2 - %5 = call i1 @"==.208"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %4) + %5 = call i1 @"==.200"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %4) br i1 %5, label %if_then, label %if_end if_then: ; preds = %if_block - store i64 2, i64* %tmp.v - %6 = load i64, i64* %tmp.v + store i64 2, i64* %tmp.this + %6 = load i64, i64* %tmp.this %7 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr - %8 = call i64 @capacity.307(%"Vector[Token]"* %7) + %8 = call i64 @capacity.301(%"Vector[Token]"* %7) %9 = mul i64 %6, %8 store i64 %9, i64* %t br label %if_block1 @@ -10859,40 +10691,40 @@ if_end: ; preds = %if_end3, %if_block %10 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %11 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %10, i32 0, i32 1 %12 = load %"RawPtr[Token]", %"RawPtr[Token]"* %11 - %13 = call %Token* @value.209(%"RawPtr[Token]" %12) + %13 = call %Token* @value.201(%"RawPtr[Token]" %12) %14 = load %Token*, %Token** %value.addr - call void @ctor.190(%Token* %13, %Token* %14) + call void @ctor.182(%Token* %13, %Token* %14) %15 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %16 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %15, i32 0, i32 1 %17 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %18 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %17, i32 0, i32 1 %19 = load %"RawPtr[Token]", %"RawPtr[Token]"* %18 - call void @advance.210(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %19) - call void @"=.202"(%"RawPtr[Token]"* %16, %"RawPtr[Token]"* %"$tmpC") + call void @advance.202(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %19) + call void @"=.194"(%"RawPtr[Token]"* %16, %"RawPtr[Token]"* %"$tmpC") ret void if_block1: ; preds = %if_then %20 = load i64, i64* %t - store i64 2, i64* %tmp.v4 - %21 = load i64, i64* %tmp.v4 + store i64 2, i64* %tmp.this4 + %21 = load i64, i64* %tmp.this4 %22 = icmp slt i64 %20, %21 br i1 %22, label %if_then2, label %if_end3 if_then2: ; preds = %if_block1 - store i64 2, i64* %tmp.v5 - %23 = load i64, i64* %tmp.v5 + store i64 2, i64* %tmp.this5 + %23 = load i64, i64* %tmp.this5 store i64 %23, i64* %t br label %if_end3 if_end3: ; preds = %if_then2, %if_block1 %24 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %25 = load i64, i64* %t - call void @reserve.306(%"Vector[Token]"* %24, i64 %25) + call void @reserve.300(%"Vector[Token]"* %24, i64 %25) br label %if_end } ; Function Attrs: inlinehint nounwind -define internal void @"post_++.313"(%Token* sret %_result, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %r) #4 { +define internal void @"post_++.307"(%Token* sret %_result, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %r) #4 { %_result.addr = alloca %Token* store %Token* %_result, %Token** %_result.addr %r.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* @@ -10902,21 +10734,21 @@ define internal void @"post_++.313"(%Token* sret %_result, %"SparrowScanner[_Cha code: ; preds = %0 %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %r.addr - call void @front.314(%Token* %res, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1) + call void @front.308(%Token* %res, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1) %2 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %r.addr - call void @popFront.315(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %2) + call void @popFront.309(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %2) %3 = load %Token*, %Token** %_result.addr - call void @ctor.190(%Token* %3, %Token* %res) - call void @dtor.228(%Token* %res) + call void @ctor.182(%Token* %3, %Token* %res) + call void @dtor.217(%Token* %res) ret void dumy_block: ; No predecessors! - call void @dtor.228(%Token* %res) + call void @dtor.217(%Token* %res) ret void } ; Function Attrs: inlinehint nounwind -define internal void @front.314(%Token* sret %_result, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this) #4 { +define internal void @front.308(%Token* sret %_result, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this) #4 { %_result.addr = alloca %Token* store %Token* %_result, %Token** %_result.addr %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* @@ -10938,22 +10770,22 @@ if_then: ; preds = %if_block %6 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %5, i32 0, i32 3 store i1 true, i1* %6 %7 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - call void @popFront.315(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %7) + call void @popFront.309(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %7) br label %if_end if_end: ; preds = %if_then, %if_block %8 = load %Token*, %Token** %_result.addr %9 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %10 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %9, i32 0, i32 2 - call void @ctor.190(%Token* %8, %Token* %10) + call void @ctor.182(%Token* %8, %Token* %10) ret void } ; Function Attrs: inlinehint nounwind -define internal void @popFront.315(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this) #4 { +define internal void @popFront.309(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this) #4 { %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %"$tmpC" = alloca %TokenType br label %code @@ -10963,7 +10795,7 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 1 - %3 = call i1 @isEmpty.316(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %2) + %3 = call i1 @isEmpty.310(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %2) br i1 %3, label %if_then, label %if_else if_then: ; preds = %if_block @@ -10975,8 +10807,8 @@ if_then: ; preds = %if_block %8 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %9 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %8, i32 0, i32 2 %10 = getelementptr inbounds %Token, %Token* %9, i32 0, i32 1 - call void @ctor.319(%TokenType* %tmp.v, i32 0) - call void @"=.255"(%TokenType* %10, %TokenType* %tmp.v) + call void @ctor.313(%TokenType* %tmp.this, i32 0) + call void @"=.249"(%TokenType* %10, %TokenType* %tmp.this) %11 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %12 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %11, i32 0, i32 2 %13 = getelementptr inbounds %Token, %Token* %12, i32 0, i32 2 @@ -10988,7 +10820,7 @@ if_then: ; preds = %if_block %18 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %17, i32 0, i32 1 %19 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %18, i32 0, i32 1 %20 = load %Location*, %Location** %19 - call void @"=.248"(%Location* %16, %Location* %20) + call void @"=.242"(%Location* %16, %Location* %20) br label %if_end if_else: ; preds = %if_block @@ -10997,7 +10829,7 @@ if_else: ; preds = %if_block %23 = getelementptr inbounds %Token, %Token* %22, i32 0, i32 1 %24 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr call void @nextToken(%TokenType* %"$tmpC", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %24) - call void @"=.255"(%TokenType* %23, %TokenType* %"$tmpC") + call void @"=.249"(%TokenType* %23, %TokenType* %"$tmpC") %25 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %26 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %25, i32 0, i32 2 %27 = getelementptr inbounds %Token, %Token* %26, i32 0, i32 0 @@ -11005,7 +10837,7 @@ if_else: ; preds = %if_block %29 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %28, i32 0, i32 1 %30 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %29, i32 0, i32 1 %31 = load %Location*, %Location** %30 - call void @"=.248"(%Location* %27, %Location* %31) + call void @"=.242"(%Location* %27, %Location* %31) br label %if_end if_end: ; preds = %if_else, %if_then @@ -11013,7 +10845,7 @@ if_end: ; preds = %if_else, %if_then } ; Function Attrs: inlinehint nounwind -define internal i1 @isEmpty.316(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this) #4 { +define internal i1 @isEmpty.310(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this) #4 { %this.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr br label %code @@ -11021,12 +10853,12 @@ define internal i1 @isEmpty.316(%"LocationSyncCharRange[RangeWithLookahead[_Char code: ; preds = %0 %1 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr %2 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1, i32 0, i32 0 - %3 = call i1 @isEmpty.317(%"RangeWithLookahead[_CharSource]"* %2) + %3 = call i1 @isEmpty.311(%"RangeWithLookahead[_CharSource]"* %2) ret i1 %3 } ; Function Attrs: inlinehint nounwind -define internal i1 @isEmpty.317(%"RangeWithLookahead[_CharSource]"* %this) #4 { +define internal i1 @isEmpty.311(%"RangeWithLookahead[_CharSource]"* %this) #4 { %this.addr = alloca %"RangeWithLookahead[_CharSource]"* store %"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"** %this.addr br label %code @@ -11034,12 +10866,12 @@ define internal i1 @isEmpty.317(%"RangeWithLookahead[_CharSource]"* %this) #4 { code: ; preds = %0 %1 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr %2 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %1, i32 0, i32 1 - %3 = call i1 @isEmpty.318(%"Vector[Char]"* %2) + %3 = call i1 @isEmpty.312(%"Vector[Char]"* %2) ret i1 %3 } ; Function Attrs: inlinehint nounwind -define internal i1 @isEmpty.318(%"Vector[Char]"* %this) #4 { +define internal i1 @isEmpty.312(%"Vector[Char]"* %this) #4 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr br label %code @@ -11049,7 +10881,7 @@ code: ; preds = %0 %2 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %1, i32 0, i32 0 %3 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %4 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %3, i32 0, i32 1 - %5 = call i1 @"==.188"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) + %5 = call i1 @"==.225"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) ret i1 %5 } @@ -11064,12 +10896,12 @@ code: ; preds = %0 %2 = getelementptr inbounds %Location, %Location* %1, i32 0, i32 1 %3 = load %Location*, %Location** %l.addr %4 = getelementptr inbounds %Location, %Location* %3, i32 0, i32 2 - call void @"=.250"(%LineCol* %2, %LineCol* %4) + call void @"=.244"(%LineCol* %2, %LineCol* %4) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.319(%TokenType* %this, i32 %fdata) #3 { +define internal void @ctor.313(%TokenType* %this, i32 %fdata) #3 { %this.addr = alloca %TokenType* store %TokenType* %this, %TokenType** %this.addr %fdata.addr = alloca i32 @@ -11085,7 +10917,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.320(%TokenType* %this) #3 { +define internal void @dtor.314(%TokenType* %this) #3 { %this.addr = alloca %TokenType* store %TokenType* %this, %TokenType** %this.addr br label %code @@ -11098,7 +10930,7 @@ code: ; preds = %0 define internal void @clear(%String* %this) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr - %tmp.v = alloca %StringRef + %tmp.this = alloca %StringRef br label %code code: ; preds = %0 @@ -11111,8 +10943,8 @@ code: ; preds = %0 %7 = getelementptr inbounds %String, %String* %6, i32 0, i32 1 %8 = load %"RawPtr[Char]", %"RawPtr[Char]"* %7 %9 = call i8* @bytePtr(%"RawPtr[Char]" %8) - call void @ctor.57(%StringRef* %tmp.v, i8* %5, i8* %9) - %10 = load %StringRef, %StringRef* %tmp.v + call void @ctor.57(%StringRef* %tmp.this, i8* %5, i8* %9) + %10 = load %StringRef, %StringRef* %tmp.this call void @remove(%String* %1, %StringRef %10) ret void } @@ -11126,7 +10958,7 @@ define internal void @remove(%String* %this, %StringRef %range) #4 { %rSize = alloca i64 %rBegin = alloca %"RawPtr[Char]" %rEnd = alloca %"RawPtr[Char]" - %tmp.v = alloca i64 + %tmp.this = alloca i64 %"$tmpC" = alloca %"RawPtr[Char]" %"$tmpC1" = alloca %"RawPtr[Char]" br label %code @@ -11138,15 +10970,15 @@ code: ; preds = %0 call void @_frontPtr(%"RawPtr[Char]"* %rBegin, %StringRef %2) %3 = load %"RawPtr[Char]", %"RawPtr[Char]"* %rBegin %4 = load i64, i64* %rSize - store i64 %4, i64* %tmp.v - %5 = load i64, i64* %tmp.v - call void @advance.195(%"RawPtr[Char]"* %rEnd, %"RawPtr[Char]" %3, i64 %5) + store i64 %4, i64* %tmp.this + %5 = load i64, i64* %tmp.this + call void @advance.187(%"RawPtr[Char]"* %rEnd, %"RawPtr[Char]" %3, i64 %5) br label %while_block while_block: ; preds = %while_step, %code %6 = load %String*, %String** %this.addr %7 = getelementptr inbounds %String, %String* %6, i32 0, i32 1 - %8 = call i1 @"==.188"(%"RawPtr[Char]"* %rEnd, %"RawPtr[Char]"* %7) + %8 = call i1 @"==.225"(%"RawPtr[Char]"* %rEnd, %"RawPtr[Char]"* %7) %9 = xor i1 true, %8 br i1 %9, label %while_body, label %while_end @@ -11161,11 +10993,11 @@ while_body: ; preds = %while_block %17 = call i8* @value(%"RawPtr[Char]" %16) store i8 %15, i8* %17 %18 = load %"RawPtr[Char]", %"RawPtr[Char]"* %rBegin - call void @advance.189(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %18) - call void @"=.184"(%"RawPtr[Char]"* %rBegin, %"RawPtr[Char]"* %"$tmpC") + call void @advance.226(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %18) + call void @"=.178"(%"RawPtr[Char]"* %rBegin, %"RawPtr[Char]"* %"$tmpC") %19 = load %"RawPtr[Char]", %"RawPtr[Char]"* %rEnd - call void @advance.189(%"RawPtr[Char]"* %"$tmpC1", %"RawPtr[Char]" %19) - call void @"=.184"(%"RawPtr[Char]"* %rEnd, %"RawPtr[Char]"* %"$tmpC1") + call void @advance.226(%"RawPtr[Char]"* %"$tmpC1", %"RawPtr[Char]" %19) + call void @"=.178"(%"RawPtr[Char]"* %rEnd, %"RawPtr[Char]"* %"$tmpC1") br label %while_step while_step: ; preds = %while_body @@ -11174,7 +11006,7 @@ while_step: ; preds = %while_body while_end: ; preds = %while_block %20 = load %String*, %String** %this.addr %21 = getelementptr inbounds %String, %String* %20, i32 0, i32 1 - call void @"=.184"(%"RawPtr[Char]"* %21, %"RawPtr[Char]"* %rBegin) + call void @"=.178"(%"RawPtr[Char]"* %21, %"RawPtr[Char]"* %rBegin) ret void } @@ -11185,29 +11017,29 @@ define void @nextToken(%TokenType* sret %_result, %"SparrowScanner[_CharSource, %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %loc = alloca %Location* - %tmp.v = alloca i32 - %tmp.v1 = alloca i32 + %tmp.this = alloca i32 + %tmp.this1 = alloca i32 %ch = alloca i8 %ch2 = alloca i8 - %tmp.v9 = alloca %"$lambdaEnclosureData" + %tmp.this9 = alloca %"$lambdaEnclosureData" %ch16 = alloca i8 %ch217 = alloca i8 - %tmp.v21 = alloca %"$lambdaEnclosureData.0" + %tmp.this21 = alloca %"$lambdaEnclosureData.0" %"$tmpC" = alloca %String %tmp.StringRef = alloca %StringRef - %tmp.v26 = alloca %"$lambdaEnclosureData.1" - %tmp.v39 = alloca %"$lambdaEnclosureData.2" - %tmp.v48 = alloca i64 + %tmp.this26 = alloca %"$lambdaEnclosureData.1" + %tmp.this39 = alloca %"$lambdaEnclosureData.2" + %tmp.this48 = alloca i64 %c1 = alloca i8 %c2 = alloca i8 - %tmp.v64 = alloca %String + %tmp.this64 = alloca %String %"$tmpForRef" = alloca %StringRef %tmp.StringRef65 = alloca %StringRef - %tmp.v75 = alloca i64 + %tmp.this75 = alloca i64 %"$tmpC180" = alloca %String %tmp.StringRef181 = alloca %StringRef %tmp.StringRef182 = alloca %StringRef - %tmp.v183 = alloca i32 + %tmp.this183 = alloca i32 br label %code code: ; preds = %0 @@ -11223,8 +11055,8 @@ if_block: ; preds = %code %6 = getelementptr inbounds %Location, %Location* %5, i32 0, i32 1 %7 = getelementptr inbounds %LineCol, %LineCol* %6, i32 0, i32 0 %8 = load i32, i32* %7 - store i32 1, i32* %tmp.v - %9 = load i32, i32* %tmp.v + store i32 1, i32* %tmp.this + %9 = load i32, i32* %tmp.this %10 = icmp eq i32 %8, %9 br i1 %10, label %cond.true, label %cond.false @@ -11246,8 +11078,8 @@ cond.true: ; preds = %if_block %17 = getelementptr inbounds %Location, %Location* %16, i32 0, i32 1 %18 = getelementptr inbounds %LineCol, %LineCol* %17, i32 0, i32 1 %19 = load i32, i32* %18 - store i32 1, i32* %tmp.v1 - %20 = load i32, i32* %tmp.v1 + store i32 1, i32* %tmp.this1 + %20 = load i32, i32* %tmp.this1 %21 = icmp eq i32 %19, %20 br label %cond.end @@ -11266,10 +11098,10 @@ if_block2: ; preds = %if_then if_then3: ; preds = %cond.end7 %24 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %25 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %24, i32 0, i32 1 - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %25) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %25) %26 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %27 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %26, i32 0, i32 1 - %28 = load %"$lambdaEnclosureData", %"$lambdaEnclosureData"* %tmp.v9 + %28 = load %"$lambdaEnclosureData", %"$lambdaEnclosureData"* %tmp.this9 call void @advanceIf(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %27, %"$lambdaEnclosureData" %28) br label %if_block10 @@ -11291,13 +11123,13 @@ cond.end7: ; preds = %cond.false6, %cond. if_block10: ; preds = %if_then3 %31 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %32 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %31, i32 0, i32 1 - %33 = call i1 @"pre_!!.344"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %32) + %33 = call i1 @"pre_!!.338"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %32) br i1 %33, label %if_then11, label %if_end12 if_then11: ; preds = %if_block10 %34 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %35 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %34, i32 0, i32 1 - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %35) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %35) br label %if_end12 if_end12: ; preds = %if_then11, %if_block10 @@ -11333,12 +11165,12 @@ while_end: ; preds = %while_block if_block13: ; preds = %while_body %40 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %41 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %40, i32 0, i32 1 - %42 = call i1 @isEmpty.316(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %41) + %42 = call i1 @isEmpty.310(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %41) br i1 %42, label %if_then14, label %if_end15 if_then14: ; preds = %if_block13 %43 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %43, i32 0) + call void @ctor.313(%TokenType* %43, i32 0) ret void if_end15: ; preds = %dumy_block, %if_block13 @@ -11362,8 +11194,8 @@ if_block18: ; preds = %if_end15 if_then19: ; preds = %if_block18 %51 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %52 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %51, i32 0, i32 1 - %53 = load %"$lambdaEnclosureData.0", %"$lambdaEnclosureData.0"* %tmp.v21 - call void @advanceIf.345(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %52, %"$lambdaEnclosureData.0" %53) + %53 = load %"$lambdaEnclosureData.0", %"$lambdaEnclosureData.0"* %tmp.this21 + call void @advanceIf.339(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %52, %"$lambdaEnclosureData.0" %53) br label %while_step if_end20: ; preds = %dumy_block22, %if_block18 @@ -11384,13 +11216,13 @@ if_then24: ; preds = %if_block23 store i8* getelementptr inbounds ([30 x i8], [30 x i8]* @str.11, i32 0, i32 0), i8** %57 store i8* getelementptr inbounds ([30 x i8], [30 x i8]* @str.11, i32 0, i32 29), i8** %58 %59 = load %StringRef, %StringRef* %tmp.StringRef - call void @toString.353(%String* %"$tmpC", %StringRef %59) - call void @reportError.352(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %56, %String* %"$tmpC") - call void @dtor.229(%String* %"$tmpC") + call void @toString.347(%String* %"$tmpC", %StringRef %59) + call void @reportError.346(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %56, %String* %"$tmpC") + call void @dtor.218(%String* %"$tmpC") %60 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %61 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %60, i32 0, i32 1 - %62 = load %"$lambdaEnclosureData.1", %"$lambdaEnclosureData.1"* %tmp.v26 - call void @advanceIf.354(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %61, %"$lambdaEnclosureData.1" %62) + %62 = load %"$lambdaEnclosureData.1", %"$lambdaEnclosureData.1"* %tmp.this26 + call void @advanceIf.348(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %61, %"$lambdaEnclosureData.1" %62) br label %while_step if_end25: ; preds = %dumy_block27, %if_block23 @@ -11407,9 +11239,9 @@ if_block28: ; preds = %if_end25 if_then29: ; preds = %if_block28 %65 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %66 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %65, i32 0, i32 1 - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %66) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %66) %67 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %67, i32 1) + call void @ctor.313(%TokenType* %67, i32 1) ret void if_end30: ; preds = %dumy_block31, %if_block28 @@ -11426,11 +11258,11 @@ if_block32: ; preds = %if_end30 if_then33: ; preds = %cond.end37 %70 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %71 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %70, i32 0, i32 1 - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %71) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %71) %72 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %73 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %72, i32 0, i32 1 - %74 = load %"$lambdaEnclosureData.2", %"$lambdaEnclosureData.2"* %tmp.v39 - call void @advanceIf.361(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %73, %"$lambdaEnclosureData.2" %74) + %74 = load %"$lambdaEnclosureData.2", %"$lambdaEnclosureData.2"* %tmp.this39 + call void @advanceIf.355(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %73, %"$lambdaEnclosureData.2" %74) br label %while_step if_end34: ; preds = %dumy_block40, %cond.end37 @@ -11459,9 +11291,9 @@ if_block41: ; preds = %if_end34 if_then42: ; preds = %cond.end46 %79 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %80 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %79, i32 0, i32 1 - store i64 2, i64* %tmp.v48 - %81 = load i64, i64* %tmp.v48 - call void @advance.368(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %80, i64 %81) + store i64 2, i64* %tmp.this48 + %81 = load i64, i64* %tmp.this48 + call void @advance.362(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %80, i64 %81) store i8 97, i8* %c1 store i8 97, i8* %c2 br label %while_block49 @@ -11484,7 +11316,7 @@ cond.end46: ; preds = %cond.false45, %cond while_block49: ; preds = %while_step51, %if_then42 %84 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %85 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %84, i32 0, i32 1 - %86 = call i1 @"pre_!!.344"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %85) + %86 = call i1 @"pre_!!.338"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %85) br i1 %86, label %cond.true53, label %cond.false54 while_body50: ; preds = %cond.end55 @@ -11492,7 +11324,7 @@ while_body50: ; preds = %cond.end55 store i8 %87, i8* %c1 %88 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %89 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %88, i32 0, i32 1 - %90 = call i8 @"pre_++.369"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %89) + %90 = call i8 @"pre_++.363"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %89) store i8 %90, i8* %c2 br label %while_step51 @@ -11540,17 +11372,17 @@ if_then62: ; preds = %if_block61 store i8* getelementptr inbounds ([33 x i8], [33 x i8]* @str.12, i32 0, i32 32), i8** %100 %101 = load %StringRef, %StringRef* %tmp.StringRef65 store %StringRef %101, %StringRef* %"$tmpForRef" - call void @ctor.370(%String* %tmp.v64, %StringRef* %"$tmpForRef") - call void @reportError.352(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %98, %String* %tmp.v64) - call void @dtor.229(%String* %tmp.v64) + call void @ctor.364(%String* %tmp.this64, %StringRef* %"$tmpForRef") + call void @reportError.346(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %98, %String* %tmp.this64) + call void @dtor.218(%String* %tmp.this64) %102 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %102, i32 0) + call void @ctor.313(%TokenType* %102, i32 0) ret void if_end63: ; preds = %dumy_block66, %if_block61 %103 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %104 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %103, i32 0, i32 1 - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %104) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %104) br label %while_step dumy_block66: ; No predecessors! @@ -11567,9 +11399,9 @@ if_block68: ; preds = %if_end43 if_then69: ; preds = %cond.end73 %107 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %108 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %107, i32 0, i32 1 - store i64 2, i64* %tmp.v75 - %109 = load i64, i64* %tmp.v75 - call void @advance.368(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %108, i64 %109) + store i64 2, i64* %tmp.this75 + %109 = load i64, i64* %tmp.this75 + call void @advance.362(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %108, i64 %109) br label %while_step if_end70: ; preds = %dumy_block76, %cond.end73 @@ -11661,9 +11493,9 @@ if_block93: ; preds = %if_end87 if_then94: ; preds = %if_block93 %128 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %129 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %128, i32 0, i32 1 - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %129) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %129) %130 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %130, i32 24) + call void @ctor.313(%TokenType* %130, i32 24) ret void if_end95: ; preds = %dumy_block96, %if_block93 @@ -11680,9 +11512,9 @@ if_block97: ; preds = %if_end95 if_then98: ; preds = %if_block97 %133 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %134 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %133, i32 0, i32 1 - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %134) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %134) %135 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %135, i32 24) + call void @ctor.313(%TokenType* %135, i32 24) ret void if_end99: ; preds = %dumy_block100, %if_block97 @@ -11699,9 +11531,9 @@ if_block101: ; preds = %if_end99 if_then102: ; preds = %if_block101 %138 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %139 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %138, i32 0, i32 1 - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %139) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %139) %140 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %140, i32 25) + call void @ctor.313(%TokenType* %140, i32 25) ret void if_end103: ; preds = %dumy_block104, %if_block101 @@ -11718,9 +11550,9 @@ if_block105: ; preds = %if_end103 if_then106: ; preds = %if_block105 %143 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %144 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %143, i32 0, i32 1 - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %144) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %144) %145 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %145, i32 26) + call void @ctor.313(%TokenType* %145, i32 26) ret void if_end107: ; preds = %dumy_block108, %if_block105 @@ -11737,9 +11569,9 @@ if_block109: ; preds = %if_end107 if_then110: ; preds = %if_block109 %148 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %149 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %148, i32 0, i32 1 - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %149) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %149) %150 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %150, i32 27) + call void @ctor.313(%TokenType* %150, i32 27) ret void if_end111: ; preds = %dumy_block112, %if_block109 @@ -11756,9 +11588,9 @@ if_block113: ; preds = %if_end111 if_then114: ; preds = %if_block113 %153 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %154 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %153, i32 0, i32 1 - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %154) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %154) %155 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %155, i32 28) + call void @ctor.313(%TokenType* %155, i32 28) ret void if_end115: ; preds = %dumy_block116, %if_block113 @@ -11775,9 +11607,9 @@ if_block117: ; preds = %if_end115 if_then118: ; preds = %if_block117 %158 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %159 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %158, i32 0, i32 1 - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %159) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %159) %160 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %160, i32 29) + call void @ctor.313(%TokenType* %160, i32 29) ret void if_end119: ; preds = %dumy_block120, %if_block117 @@ -11794,9 +11626,9 @@ if_block121: ; preds = %if_end119 if_then122: ; preds = %if_block121 %163 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %164 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %163, i32 0, i32 1 - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %164) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %164) %165 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %165, i32 31) + call void @ctor.313(%TokenType* %165, i32 31) ret void if_end123: ; preds = %dumy_block124, %if_block121 @@ -11813,9 +11645,9 @@ if_block125: ; preds = %if_end123 if_then126: ; preds = %if_block125 %168 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %169 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %168, i32 0, i32 1 - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %169) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %169) %170 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %170, i32 32) + call void @ctor.313(%TokenType* %170, i32 32) ret void if_end127: ; preds = %dumy_block128, %if_block125 @@ -11832,9 +11664,9 @@ if_block129: ; preds = %if_end127 if_then130: ; preds = %if_block129 %173 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %174 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %173, i32 0, i32 1 - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %174) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %174) %175 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %175, i32 34) + call void @ctor.313(%TokenType* %175, i32 34) ret void if_end131: ; preds = %dumy_block132, %if_block129 @@ -11851,9 +11683,9 @@ if_block133: ; preds = %if_end131 if_then134: ; preds = %cond.end138 %178 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %179 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %178, i32 0, i32 1 - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %179) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %179) %180 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %180, i32 30) + call void @ctor.313(%TokenType* %180, i32 30) ret void if_end135: ; preds = %dumy_block140, %cond.end138 @@ -11884,9 +11716,9 @@ if_block141: ; preds = %if_end135 if_then142: ; preds = %cond.end146 %187 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %188 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %187, i32 0, i32 1 - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %188) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %188) %189 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %189, i32 35) + call void @ctor.313(%TokenType* %189, i32 35) ret void if_end143: ; preds = %dumy_block148, %cond.end146 @@ -11927,7 +11759,7 @@ if_block152: ; preds = %if_then150 if_then153: ; preds = %if_block152 %198 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %198, i32 37) + call void @ctor.313(%TokenType* %198, i32 37) ret void if_end154: ; preds = %dumy_block155, %if_block152 @@ -11944,9 +11776,9 @@ if_block156: ; preds = %if_end151 if_then157: ; preds = %cond.end161 %201 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %202 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %201, i32 0, i32 1 - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %202) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %202) %203 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %203, i32 33) + call void @ctor.313(%TokenType* %203, i32 33) ret void if_end158: ; preds = %dumy_block163, %cond.end161 @@ -12022,16 +11854,16 @@ if_end174: ; preds = %dumy_block179, %con store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.41, i32 0, i32 3), i8** %223 %224 = load %StringRef, %StringRef* %tmp.StringRef182 %225 = load i8, i8* %ch16 - call void @_ass_32_8z(i32* %tmp.v183, i8 %225) - %226 = load i32, i32* %tmp.v183 - call void @toString.378(%String* %"$tmpC180", %StringRef %220, i8 %221, %StringRef %224, i32 %226, i8 41) - call void @reportError.352(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %217, %String* %"$tmpC180") - call void @dtor.229(%String* %"$tmpC180") + call void @_ass_32_8z(i32* %tmp.this183, i8 %225) + %226 = load i32, i32* %tmp.this183 + call void @toString.372(%String* %"$tmpC180", %StringRef %220, i8 %221, %StringRef %224, i32 %226, i8 41) + call void @reportError.346(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %217, %String* %"$tmpC180") + call void @dtor.218(%String* %"$tmpC180") %227 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %228 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %227, i32 0, i32 1 - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %228) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %228) %229 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %229, i32 0) + call void @ctor.313(%TokenType* %229, i32 0) ret void cond.true175: ; preds = %if_block172 @@ -12061,12 +11893,12 @@ define internal i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSour code: ; preds = %0 %1 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr - %2 = call i8 @front.321(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1) + %2 = call i8 @front.315(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1) ret i8 %2 } ; Function Attrs: inlinehint nounwind -define internal i8 @front.321(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this) #4 { +define internal i8 @front.315(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this) #4 { %this.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr br label %code @@ -12074,12 +11906,12 @@ define internal i8 @front.321(%"LocationSyncCharRange[RangeWithLookahead[_CharSo code: ; preds = %0 %1 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr %2 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1, i32 0, i32 0 - %3 = call i8 @front.322(%"RangeWithLookahead[_CharSource]"* %2) + %3 = call i8 @front.316(%"RangeWithLookahead[_CharSource]"* %2) ret i8 %3 } ; Function Attrs: inlinehint nounwind -define internal i8 @front.322(%"RangeWithLookahead[_CharSource]"* %this) #4 { +define internal i8 @front.316(%"RangeWithLookahead[_CharSource]"* %this) #4 { %this.addr = alloca %"RangeWithLookahead[_CharSource]"* store %"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"** %this.addr br label %code @@ -12087,13 +11919,13 @@ define internal i8 @front.322(%"RangeWithLookahead[_CharSource]"* %this) #4 { code: ; preds = %0 %1 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr %2 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %1, i32 0, i32 1 - %3 = call i8* @front.323(%"Vector[Char]"* %2) + %3 = call i8* @front.317(%"Vector[Char]"* %2) %4 = load i8, i8* %3 ret i8 %4 } ; Function Attrs: inlinehint nounwind -define internal i8* @front.323(%"Vector[Char]"* %this) #4 { +define internal i8* @front.317(%"Vector[Char]"* %this) #4 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr br label %code @@ -12110,15 +11942,15 @@ code: ; preds = %0 define internal i8 @peekChar(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this) #4 { %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %tmp.v = alloca i32 + %tmp.this = alloca i32 br label %code code: ; preds = %0 %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 1 %3 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %2, i32 0, i32 0 - store i32 1, i32* %tmp.v - %4 = load i32, i32* %tmp.v + store i32 1, i32* %tmp.this + %4 = load i32, i32* %tmp.this %5 = call i8 @peek(%"RangeWithLookahead[_CharSource]"* %3, i32 %4) ret i8 %5 } @@ -12129,11 +11961,11 @@ define internal i8 @peek(%"RangeWithLookahead[_CharSource]"* %this, i32 %n) #4 { store %"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"** %this.addr %n.addr = alloca i32 store i32 %n, i32* %n.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 %"$tmpForRef" = alloca i8 - %tmp.v1 = alloca i64 - %tmp.v2 = alloca i64 - %tmp.v3 = alloca i8 + %tmp.this1 = alloca i64 + %tmp.this2 = alloca i64 + %tmp.this3 = alloca i8 br label %code code: ; preds = %0 @@ -12142,11 +11974,11 @@ code: ; preds = %0 while_block: ; preds = %while_step, %code %1 = load i32, i32* %n.addr %2 = zext i32 %1 to i64 - store i64 %2, i64* %tmp.v - %3 = load i64, i64* %tmp.v + store i64 %2, i64* %tmp.this + %3 = load i64, i64* %tmp.this %4 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr %5 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %4, i32 0, i32 1 - %6 = call i64 @size.183(%"Vector[Char]"* %5) + %6 = call i64 @size.177(%"Vector[Char]"* %5) %7 = icmp sge i64 %3, %6 br i1 %7, label %cond.true, label %cond.false @@ -12155,7 +11987,7 @@ while_body: ; preds = %cond.end %9 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %8, i32 0, i32 1 %10 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr %11 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %10, i32 0, i32 0 - %12 = call i8 @"post_++.303"(%_CharSource* %11) + %12 = call i8 @"post_++.297"(%_CharSource* %11) store i8 %12, i8* %"$tmpForRef" call void @"+="(%"Vector[Char]"* %9, i8* %"$tmpForRef") br label %while_step @@ -12182,11 +12014,11 @@ cond.end: ; preds = %cond.false, %cond.t if_block: ; preds = %while_end %16 = load i32, i32* %n.addr %17 = zext i32 %16 to i64 - store i64 %17, i64* %tmp.v1 - %18 = load i64, i64* %tmp.v1 + store i64 %17, i64* %tmp.this1 + %18 = load i64, i64* %tmp.this1 %19 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr %20 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %19, i32 0, i32 1 - %21 = call i64 @size.183(%"Vector[Char]"* %20) + %21 = call i64 @size.177(%"Vector[Char]"* %20) %22 = icmp slt i64 %18, %21 br i1 %22, label %if_then, label %if_else @@ -12195,15 +12027,15 @@ if_then: ; preds = %if_block %24 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %23, i32 0, i32 1 %25 = load i32, i32* %n.addr %26 = zext i32 %25 to i64 - store i64 %26, i64* %tmp.v2 - %27 = load i64, i64* %tmp.v2 - %28 = call i8* @"().324"(%"Vector[Char]"* %24, i64 %27) + store i64 %26, i64* %tmp.this2 + %27 = load i64, i64* %tmp.this2 + %28 = call i8* @"().318"(%"Vector[Char]"* %24, i64 %27) %29 = load i8, i8* %28 ret i8 %29 if_else: ; preds = %if_block - store i8 0, i8* %tmp.v3 - %30 = load i8, i8* %tmp.v3 + store i8 0, i8* %tmp.this3 + %30 = load i8, i8* %tmp.this3 ret i8 %30 if_end: ; preds = %dumy_block4, %dumy_block @@ -12217,7 +12049,7 @@ dumy_block4: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal i8* @"().324"(%"Vector[Char]"* %this, i64 %index) #4 { +define internal i8* @"().318"(%"Vector[Char]"* %this, i64 %index) #4 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr %index.addr = alloca i64 @@ -12237,11 +12069,11 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this) #4 { +define internal void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this) #4 { %this.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr - %tmp.v = alloca i32 - %tmp.v1 = alloca i32 + %tmp.this = alloca i32 + %tmp.this1 = alloca i32 br label %code code: ; preds = %0 @@ -12250,7 +12082,7 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr %2 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1, i32 0, i32 0 - %3 = call i8 @"pre_*.326"(%"RangeWithLookahead[_CharSource]"* %2) + %3 = call i8 @"pre_*.320"(%"RangeWithLookahead[_CharSource]"* %2) %4 = icmp eq i8 %3, 10 br i1 %4, label %if_then, label %if_else @@ -12258,8 +12090,8 @@ if_then: ; preds = %if_block %5 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr %6 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5, i32 0, i32 1 %7 = load %Location*, %Location** %6 - store i32 1, i32* %tmp.v - %8 = load i32, i32* %tmp.v + store i32 1, i32* %tmp.this + %8 = load i32, i32* %tmp.this call void @addLines(%Location* %7, i32 %8) br label %if_end @@ -12267,27 +12099,27 @@ if_else: ; preds = %if_block %9 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr %10 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %9, i32 0, i32 1 %11 = load %Location*, %Location** %10 - store i32 1, i32* %tmp.v1 - %12 = load i32, i32* %tmp.v1 + store i32 1, i32* %tmp.this1 + %12 = load i32, i32* %tmp.this1 call void @addColumns(%Location* %11, i32 %12) br label %if_end if_end: ; preds = %if_else, %if_then %13 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr %14 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %13, i32 0, i32 0 - call void @popFront.327(%"RangeWithLookahead[_CharSource]"* %14) + call void @popFront.321(%"RangeWithLookahead[_CharSource]"* %14) ret void } ; Function Attrs: inlinehint nounwind -define internal i8 @"pre_*.326"(%"RangeWithLookahead[_CharSource]"* %r) #4 { +define internal i8 @"pre_*.320"(%"RangeWithLookahead[_CharSource]"* %r) #4 { %r.addr = alloca %"RangeWithLookahead[_CharSource]"* store %"RangeWithLookahead[_CharSource]"* %r, %"RangeWithLookahead[_CharSource]"** %r.addr br label %code code: ; preds = %0 %1 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %r.addr - %2 = call i8 @front.322(%"RangeWithLookahead[_CharSource]"* %1) + %2 = call i8 @front.316(%"RangeWithLookahead[_CharSource]"* %1) ret i8 %2 } @@ -12297,7 +12129,7 @@ define internal void @addLines(%Location* %l, i32 %count) #4 { store %Location* %l, %Location** %l.addr %count.addr = alloca i32 store i32 %count, i32* %count.addr - %tmp.v = alloca i32 + %tmp.this = alloca i32 br label %code code: ; preds = %0 @@ -12311,8 +12143,8 @@ code: ; preds = %0 %8 = getelementptr inbounds %Location, %Location* %7, i32 0, i32 2 %9 = getelementptr inbounds %LineCol, %LineCol* %8, i32 0, i32 0 store i32 %6, i32* %9 - store i32 1, i32* %tmp.v - %10 = load i32, i32* %tmp.v + store i32 1, i32* %tmp.this + %10 = load i32, i32* %tmp.this %11 = load %Location*, %Location** %l.addr %12 = getelementptr inbounds %Location, %Location* %11, i32 0, i32 2 %13 = getelementptr inbounds %LineCol, %LineCol* %12, i32 0, i32 1 @@ -12343,25 +12175,25 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @popFront.327(%"RangeWithLookahead[_CharSource]"* %this) #4 { +define internal void @popFront.321(%"RangeWithLookahead[_CharSource]"* %this) #4 { %this.addr = alloca %"RangeWithLookahead[_CharSource]"* store %"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"** %this.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 %"$tmpForRef" = alloca i8 br label %code code: ; preds = %0 %1 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr %2 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %1, i32 0, i32 1 - store i64 0, i64* %tmp.v - %3 = load i64, i64* %tmp.v - call void @remove.328(%"Vector[Char]"* %2, i64 %3) + store i64 0, i64* %tmp.this + %3 = load i64, i64* %tmp.this + call void @remove.322(%"Vector[Char]"* %2, i64 %3) br label %if_block if_block: ; preds = %code %4 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr %5 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %4, i32 0, i32 1 - %6 = call i1 @isEmpty.318(%"Vector[Char]"* %5) + %6 = call i1 @isEmpty.312(%"Vector[Char]"* %5) br i1 %6, label %cond.true, label %cond.false if_then: ; preds = %cond.end @@ -12369,7 +12201,7 @@ if_then: ; preds = %cond.end %8 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %7, i32 0, i32 1 %9 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr %10 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %9, i32 0, i32 0 - %11 = call i8 @"post_++.303"(%_CharSource* %10) + %11 = call i8 @"post_++.297"(%_CharSource* %10) store i8 %11, i8* %"$tmpForRef" call void @"+="(%"Vector[Char]"* %8, i8* %"$tmpForRef") br label %if_end @@ -12392,36 +12224,36 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: inlinehint nounwind -define internal void @remove.328(%"Vector[Char]"* %this, i64 %index) #4 { +define internal void @remove.322(%"Vector[Char]"* %this, i64 %index) #4 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr %index.addr = alloca i64 store i64 %index, i64* %index.addr %r = alloca %"ContiguousMemoryRange[Char]" - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 %1 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - call void @all.329(%"ContiguousMemoryRange[Char]"* %r, %"Vector[Char]"* %1) + call void @all.323(%"ContiguousMemoryRange[Char]"* %r, %"Vector[Char]"* %1) %2 = load i64, i64* %index.addr - call void @popFront.331(%"ContiguousMemoryRange[Char]"* %r, i64 %2) + call void @popFront.325(%"ContiguousMemoryRange[Char]"* %r, i64 %2) %3 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %4 = call i64 @size.183(%"Vector[Char]"* %3) + %4 = call i64 @size.177(%"Vector[Char]"* %3) %5 = load i64, i64* %index.addr %6 = call i64 @_SizeType_opMinus(i64 %4, i64 %5) - store i64 1, i64* %tmp.v - %7 = load i64, i64* %tmp.v + store i64 1, i64* %tmp.this + %7 = load i64, i64* %tmp.this %8 = call i64 @_SizeType_opMinus(i64 %6, i64 %7) - call void @popBack.332(%"ContiguousMemoryRange[Char]"* %r, i64 %8) + call void @popBack.326(%"ContiguousMemoryRange[Char]"* %r, i64 %8) %9 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %10 = load %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %r - call void @remove.333(%"Vector[Char]"* %9, %"ContiguousMemoryRange[Char]" %10) + call void @remove.327(%"Vector[Char]"* %9, %"ContiguousMemoryRange[Char]" %10) ret void } ; Function Attrs: inlinehint nounwind -define internal void @all.329(%"ContiguousMemoryRange[Char]"* sret %_result, %"Vector[Char]"* %this) #4 { +define internal void @all.323(%"ContiguousMemoryRange[Char]"* sret %_result, %"Vector[Char]"* %this) #4 { %_result.addr = alloca %"ContiguousMemoryRange[Char]"* store %"ContiguousMemoryRange[Char]"* %_result, %"ContiguousMemoryRange[Char]"** %_result.addr %this.addr = alloca %"Vector[Char]"* @@ -12436,12 +12268,12 @@ code: ; preds = %0 %5 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %6 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %5, i32 0, i32 1 %7 = load %"RawPtr[Char]", %"RawPtr[Char]"* %6 - call void @ctor.330(%"ContiguousMemoryRange[Char]"* %1, %"RawPtr[Char]" %4, %"RawPtr[Char]" %7) + call void @ctor.324(%"ContiguousMemoryRange[Char]"* %1, %"RawPtr[Char]" %4, %"RawPtr[Char]" %7) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.330(%"ContiguousMemoryRange[Char]"* %this, %"RawPtr[Char]" %f_begin, %"RawPtr[Char]" %f_end) #3 { +define internal void @ctor.324(%"ContiguousMemoryRange[Char]"* %this, %"RawPtr[Char]" %f_begin, %"RawPtr[Char]" %f_end) #3 { %this.addr = alloca %"ContiguousMemoryRange[Char]"* store %"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"** %this.addr %f_begin.addr = alloca %"RawPtr[Char]" @@ -12453,21 +12285,21 @@ define internal void @ctor.330(%"ContiguousMemoryRange[Char]"* %this, %"RawPtr[C code: ; preds = %0 %1 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %this.addr %2 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %1, i32 0, i32 0 - call void @ctor.187(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %f_begin.addr) + call void @ctor.181(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %f_begin.addr) %3 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %this.addr %4 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %3, i32 0, i32 1 - call void @ctor.187(%"RawPtr[Char]"* %4, %"RawPtr[Char]"* %f_end.addr) + call void @ctor.181(%"RawPtr[Char]"* %4, %"RawPtr[Char]"* %f_end.addr) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @popFront.331(%"ContiguousMemoryRange[Char]"* %this, i64 %n) #3 { +define internal void @popFront.325(%"ContiguousMemoryRange[Char]"* %this, i64 %n) #3 { %this.addr = alloca %"ContiguousMemoryRange[Char]"* store %"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"** %this.addr %n.addr = alloca i64 store i64 %n, i64* %n.addr %"$tmpC" = alloca %"RawPtr[Char]" - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -12477,21 +12309,21 @@ code: ; preds = %0 %4 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %3, i32 0, i32 0 %5 = load %"RawPtr[Char]", %"RawPtr[Char]"* %4 %6 = load i64, i64* %n.addr - store i64 %6, i64* %tmp.v - %7 = load i64, i64* %tmp.v - call void @advance.195(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %5, i64 %7) - call void @"=.184"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %"$tmpC") + store i64 %6, i64* %tmp.this + %7 = load i64, i64* %tmp.this + call void @advance.187(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %5, i64 %7) + call void @"=.178"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %"$tmpC") ret void } ; Function Attrs: alwaysinline nounwind -define internal void @popBack.332(%"ContiguousMemoryRange[Char]"* %this, i64 %n) #3 { +define internal void @popBack.326(%"ContiguousMemoryRange[Char]"* %this, i64 %n) #3 { %this.addr = alloca %"ContiguousMemoryRange[Char]"* store %"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"** %this.addr %n.addr = alloca i64 store i64 %n, i64* %n.addr %"$tmpC" = alloca %"RawPtr[Char]" - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -12501,16 +12333,16 @@ code: ; preds = %0 %4 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %3, i32 0, i32 1 %5 = load %"RawPtr[Char]", %"RawPtr[Char]"* %4 %6 = load i64, i64* %n.addr - store i64 %6, i64* %tmp.v - %7 = load i64, i64* %tmp.v + store i64 %6, i64* %tmp.this + %7 = load i64, i64* %tmp.this %8 = sub i64 0, %7 - call void @advance.195(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %5, i64 %8) - call void @"=.184"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %"$tmpC") + call void @advance.187(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %5, i64 %8) + call void @"=.178"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %"$tmpC") ret void } ; Function Attrs: inlinehint nounwind -define internal void @remove.333(%"Vector[Char]"* %this, %"ContiguousMemoryRange[Char]" %range) #4 { +define internal void @remove.327(%"Vector[Char]"* %this, %"ContiguousMemoryRange[Char]" %range) #4 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr %range.addr = alloca %"ContiguousMemoryRange[Char]" @@ -12528,23 +12360,23 @@ code: ; preds = %0 call void @frontPtr(%"RawPtr[Char]"* %rBegin, %"ContiguousMemoryRange[Char]" %1) %2 = load %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %range.addr call void @backPtr(%"RawPtr[Char]"* %rEnd, %"ContiguousMemoryRange[Char]" %2) - call void @ctor.334(%"ContiguousMemoryRange[Char]"* %"$rangeVar", %"ContiguousMemoryRange[Char]"* %range.addr) + call void @ctor.328(%"ContiguousMemoryRange[Char]"* %"$rangeVar", %"ContiguousMemoryRange[Char]"* %range.addr) br label %while_block while_block: ; preds = %while_step, %code %3 = load %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %"$rangeVar" - %4 = call i1 @isEmpty.335(%"ContiguousMemoryRange[Char]" %3) + %4 = call i1 @isEmpty.329(%"ContiguousMemoryRange[Char]" %3) %5 = xor i1 true, %4 br i1 %5, label %while_body, label %while_end while_body: ; preds = %while_block %6 = load %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %"$rangeVar" - %7 = call i8* @front.336(%"ContiguousMemoryRange[Char]" %6) + %7 = call i8* @front.330(%"ContiguousMemoryRange[Char]" %6) store i8* %7, i8** %el br label %while_step while_step: ; preds = %while_body - call void @popFront.337(%"ContiguousMemoryRange[Char]"* %"$rangeVar") + call void @popFront.331(%"ContiguousMemoryRange[Char]"* %"$rangeVar") br label %while_block while_end: ; preds = %while_block @@ -12553,7 +12385,7 @@ while_end: ; preds = %while_block while_block1: ; preds = %while_step3, %while_end %8 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %9 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %8, i32 0, i32 1 - %10 = call i1 @"==.188"(%"RawPtr[Char]"* %rEnd, %"RawPtr[Char]"* %9) + %10 = call i1 @"==.225"(%"RawPtr[Char]"* %rEnd, %"RawPtr[Char]"* %9) %11 = xor i1 true, %10 br i1 %11, label %while_body2, label %while_end4 @@ -12568,11 +12400,11 @@ while_body2: ; preds = %while_block1 %18 = call i8* @value(%"RawPtr[Char]" %17) %19 = load i8, i8* %18 %20 = load %"RawPtr[Char]", %"RawPtr[Char]"* %rBegin - call void @advance.189(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %20) - call void @"=.184"(%"RawPtr[Char]"* %rBegin, %"RawPtr[Char]"* %"$tmpC") + call void @advance.226(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %20) + call void @"=.178"(%"RawPtr[Char]"* %rBegin, %"RawPtr[Char]"* %"$tmpC") %21 = load %"RawPtr[Char]", %"RawPtr[Char]"* %rEnd - call void @advance.189(%"RawPtr[Char]"* %"$tmpC5", %"RawPtr[Char]" %21) - call void @"=.184"(%"RawPtr[Char]"* %rEnd, %"RawPtr[Char]"* %"$tmpC5") + call void @advance.226(%"RawPtr[Char]"* %"$tmpC5", %"RawPtr[Char]" %21) + call void @"=.178"(%"RawPtr[Char]"* %rEnd, %"RawPtr[Char]"* %"$tmpC5") br label %while_step3 while_step3: ; preds = %while_body2 @@ -12581,7 +12413,7 @@ while_step3: ; preds = %while_body2 while_end4: ; preds = %while_block1 %22 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %23 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %22, i32 0, i32 1 - call void @"=.184"(%"RawPtr[Char]"* %23, %"RawPtr[Char]"* %rBegin) + call void @"=.178"(%"RawPtr[Char]"* %23, %"RawPtr[Char]"* %rBegin) ret void } @@ -12596,7 +12428,7 @@ define internal void @frontPtr(%"RawPtr[Char]"* sret %_result, %"ContiguousMemor code: ; preds = %0 %1 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %_result.addr %2 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %this.addr, i32 0, i32 0 - call void @ctor.187(%"RawPtr[Char]"* %1, %"RawPtr[Char]"* %2) + call void @ctor.181(%"RawPtr[Char]"* %1, %"RawPtr[Char]"* %2) ret void } @@ -12611,12 +12443,12 @@ define internal void @backPtr(%"RawPtr[Char]"* sret %_result, %"ContiguousMemory code: ; preds = %0 %1 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %_result.addr %2 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %this.addr, i32 0, i32 1 - call void @ctor.187(%"RawPtr[Char]"* %1, %"RawPtr[Char]"* %2) + call void @ctor.181(%"RawPtr[Char]"* %1, %"RawPtr[Char]"* %2) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.334(%"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"* %other) #3 { +define internal void @ctor.328(%"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"* %other) #3 { %this.addr = alloca %"ContiguousMemoryRange[Char]"* store %"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"** %this.addr %other.addr = alloca %"ContiguousMemoryRange[Char]"* @@ -12628,20 +12460,20 @@ code: ; preds = %0 %2 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %1, i32 0, i32 0 %3 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %other.addr %4 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %3, i32 0, i32 0 - call void @ctor.187(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) + call void @ctor.181(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) %5 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %this.addr %6 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %5, i32 0, i32 1 %7 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %other.addr %8 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %7, i32 0, i32 1 - call void @ctor.187(%"RawPtr[Char]"* %6, %"RawPtr[Char]"* %8) + call void @ctor.181(%"RawPtr[Char]"* %6, %"RawPtr[Char]"* %8) ret void } ; Function Attrs: inlinehint nounwind -define internal i1 @isEmpty.335(%"ContiguousMemoryRange[Char]" %this) #4 { +define internal i1 @isEmpty.329(%"ContiguousMemoryRange[Char]" %this) #4 { %this.addr = alloca %"ContiguousMemoryRange[Char]" store %"ContiguousMemoryRange[Char]" %this, %"ContiguousMemoryRange[Char]"* %this.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -12650,14 +12482,14 @@ code: ; preds = %0 %3 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %this.addr, i32 0, i32 0 %4 = load %"RawPtr[Char]", %"RawPtr[Char]"* %3 %5 = call i64 @diff(%"RawPtr[Char]" %2, %"RawPtr[Char]" %4) - store i64 0, i64* %tmp.v - %6 = load i64, i64* %tmp.v + store i64 0, i64* %tmp.this + %6 = load i64, i64* %tmp.this %7 = icmp sle i64 %5, %6 ret i1 %7 } ; Function Attrs: inlinehint nounwind -define internal i8* @front.336(%"ContiguousMemoryRange[Char]" %this) #4 { +define internal i8* @front.330(%"ContiguousMemoryRange[Char]" %this) #4 { %this.addr = alloca %"ContiguousMemoryRange[Char]" store %"ContiguousMemoryRange[Char]" %this, %"ContiguousMemoryRange[Char]"* %this.addr br label %code @@ -12670,7 +12502,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @popFront.337(%"ContiguousMemoryRange[Char]"* %this) #3 { +define internal void @popFront.331(%"ContiguousMemoryRange[Char]"* %this) #3 { %this.addr = alloca %"ContiguousMemoryRange[Char]"* store %"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"** %this.addr %"$tmpC" = alloca %"RawPtr[Char]" @@ -12682,8 +12514,8 @@ code: ; preds = %0 %3 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %this.addr %4 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %3, i32 0, i32 0 %5 = load %"RawPtr[Char]", %"RawPtr[Char]"* %4 - call void @advance.189(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %5) - call void @"=.184"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %"$tmpC") + call void @advance.226(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %5) + call void @"=.178"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %"$tmpC") ret void } @@ -12700,13 +12532,13 @@ code: ; preds = %0 while_block: ; preds = %while_step, %code %1 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr - %2 = call i1 @isEmpty.316(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1) + %2 = call i1 @isEmpty.310(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1) %3 = xor i1 true, %2 br i1 %3, label %cond.true, label %cond.false while_body: ; preds = %cond.end %4 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %4) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %4) br label %while_step while_step: ; preds = %while_body @@ -12717,8 +12549,8 @@ while_end: ; preds = %cond.end cond.true: ; preds = %while_block %5 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr - %6 = call i8 @front.321(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5) - %7 = call i1 @"().338"(%"$lambdaEnclosureData"* %pred.addr, i8 %6) + %6 = call i8 @front.315(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5) + %7 = call i1 @"().332"(%"$lambdaEnclosureData"* %pred.addr, i8 %6) br label %cond.end cond.false: ; preds = %while_block @@ -12730,7 +12562,7 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: alwaysinline nounwind -define internal i1 @"().338"(%"$lambdaEnclosureData"* %this, i8 %c) #3 { +define internal i1 @"().332"(%"$lambdaEnclosureData"* %this, i8 %c) #3 { %this.addr = alloca %"$lambdaEnclosureData"* store %"$lambdaEnclosureData"* %this, %"$lambdaEnclosureData"** %this.addr %c.addr = alloca i8 @@ -12744,7 +12576,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.339(%"$lambdaEnclosureData"* %this) #3 { +define internal void @ctor.333(%"$lambdaEnclosureData"* %this) #3 { %this.addr = alloca %"$lambdaEnclosureData"* store %"$lambdaEnclosureData"* %this, %"$lambdaEnclosureData"** %this.addr br label %code @@ -12754,7 +12586,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.340(%"$lambdaEnclosureData"* %this, %"$lambdaEnclosureData"* %other) #3 { +define internal void @ctor.334(%"$lambdaEnclosureData"* %this, %"$lambdaEnclosureData"* %other) #3 { %this.addr = alloca %"$lambdaEnclosureData"* store %"$lambdaEnclosureData"* %this, %"$lambdaEnclosureData"** %this.addr %other.addr = alloca %"$lambdaEnclosureData"* @@ -12766,7 +12598,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.341(%"$lambdaEnclosureData"* %this) #3 { +define internal void @dtor.335(%"$lambdaEnclosureData"* %this) #3 { %this.addr = alloca %"$lambdaEnclosureData"* store %"$lambdaEnclosureData"* %this, %"$lambdaEnclosureData"** %this.addr br label %code @@ -12776,7 +12608,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.342"(%"$lambdaEnclosureData"* %this, %"$lambdaEnclosureData"* %other) #3 { +define internal void @"=.336"(%"$lambdaEnclosureData"* %this, %"$lambdaEnclosureData"* %other) #3 { %this.addr = alloca %"$lambdaEnclosureData"* store %"$lambdaEnclosureData"* %this, %"$lambdaEnclosureData"** %this.addr %other.addr = alloca %"$lambdaEnclosureData"* @@ -12788,7 +12620,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.343"(%"$lambdaEnclosureData"* %this, %"$lambdaEnclosureData"* %other) #3 { +define internal i1 @"==.337"(%"$lambdaEnclosureData"* %this, %"$lambdaEnclosureData"* %other) #3 { %this.addr = alloca %"$lambdaEnclosureData"* store %"$lambdaEnclosureData"* %this, %"$lambdaEnclosureData"** %this.addr %other.addr = alloca %"$lambdaEnclosureData"* @@ -12800,20 +12632,20 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i1 @"pre_!!.344"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %r) #4 { +define internal i1 @"pre_!!.338"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %r) #4 { %r.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %r, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr br label %code code: ; preds = %0 %1 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr - %2 = call i1 @isEmpty.316(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1) + %2 = call i1 @isEmpty.310(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1) %3 = xor i1 true, %2 ret i1 %3 } ; Function Attrs: inlinehint nounwind -define internal void @advanceIf.345(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %range, %"$lambdaEnclosureData.0" %pred) #4 { +define internal void @advanceIf.339(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %range, %"$lambdaEnclosureData.0" %pred) #4 { %range.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %range, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr %pred.addr = alloca %"$lambdaEnclosureData.0" @@ -12825,13 +12657,13 @@ code: ; preds = %0 while_block: ; preds = %while_step, %code %1 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr - %2 = call i1 @isEmpty.316(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1) + %2 = call i1 @isEmpty.310(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1) %3 = xor i1 true, %2 br i1 %3, label %cond.true, label %cond.false while_body: ; preds = %cond.end %4 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %4) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %4) br label %while_step while_step: ; preds = %while_body @@ -12842,8 +12674,8 @@ while_end: ; preds = %cond.end cond.true: ; preds = %while_block %5 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr - %6 = call i8 @front.321(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5) - %7 = call i1 @"().346"(%"$lambdaEnclosureData.0"* %pred.addr, i8 %6) + %6 = call i8 @front.315(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5) + %7 = call i1 @"().340"(%"$lambdaEnclosureData.0"* %pred.addr, i8 %6) br label %cond.end cond.false: ; preds = %while_block @@ -12855,7 +12687,7 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: alwaysinline nounwind -define internal i1 @"().346"(%"$lambdaEnclosureData.0"* %this, i8 %c) #3 { +define internal i1 @"().340"(%"$lambdaEnclosureData.0"* %this, i8 %c) #3 { %this.addr = alloca %"$lambdaEnclosureData.0"* store %"$lambdaEnclosureData.0"* %this, %"$lambdaEnclosureData.0"** %this.addr %c.addr = alloca i8 @@ -12869,7 +12701,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.347(%"$lambdaEnclosureData.0"* %this) #3 { +define internal void @ctor.341(%"$lambdaEnclosureData.0"* %this) #3 { %this.addr = alloca %"$lambdaEnclosureData.0"* store %"$lambdaEnclosureData.0"* %this, %"$lambdaEnclosureData.0"** %this.addr br label %code @@ -12879,7 +12711,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.348(%"$lambdaEnclosureData.0"* %this, %"$lambdaEnclosureData.0"* %other) #3 { +define internal void @ctor.342(%"$lambdaEnclosureData.0"* %this, %"$lambdaEnclosureData.0"* %other) #3 { %this.addr = alloca %"$lambdaEnclosureData.0"* store %"$lambdaEnclosureData.0"* %this, %"$lambdaEnclosureData.0"** %this.addr %other.addr = alloca %"$lambdaEnclosureData.0"* @@ -12891,7 +12723,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.349(%"$lambdaEnclosureData.0"* %this) #3 { +define internal void @dtor.343(%"$lambdaEnclosureData.0"* %this) #3 { %this.addr = alloca %"$lambdaEnclosureData.0"* store %"$lambdaEnclosureData.0"* %this, %"$lambdaEnclosureData.0"** %this.addr br label %code @@ -12901,7 +12733,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.350"(%"$lambdaEnclosureData.0"* %this, %"$lambdaEnclosureData.0"* %other) #3 { +define internal void @"=.344"(%"$lambdaEnclosureData.0"* %this, %"$lambdaEnclosureData.0"* %other) #3 { %this.addr = alloca %"$lambdaEnclosureData.0"* store %"$lambdaEnclosureData.0"* %this, %"$lambdaEnclosureData.0"** %this.addr %other.addr = alloca %"$lambdaEnclosureData.0"* @@ -12913,7 +12745,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.351"(%"$lambdaEnclosureData.0"* %this, %"$lambdaEnclosureData.0"* %other) #3 { +define internal i1 @"==.345"(%"$lambdaEnclosureData.0"* %this, %"$lambdaEnclosureData.0"* %other) #3 { %this.addr = alloca %"$lambdaEnclosureData.0"* store %"$lambdaEnclosureData.0"* %this, %"$lambdaEnclosureData.0"** %this.addr %other.addr = alloca %"$lambdaEnclosureData.0"* @@ -12925,7 +12757,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @reportError.352(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %String* %msg) #4 { +define internal void @reportError.346(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %String* %msg) #4 { %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %msg.addr = alloca %String* @@ -12946,7 +12778,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @toString.353(%String* sret %_result, %StringRef %a1) #4 { +define internal void @toString.347(%String* sret %_result, %StringRef %a1) #4 { %_result.addr = alloca %String* store %String* %_result, %String** %_result.addr %a1.addr = alloca %StringRef @@ -12955,21 +12787,21 @@ define internal void @toString.353(%String* sret %_result, %StringRef %a1) #4 { br label %code code: ; preds = %0 - call void @ctor.295(%StringOutputStream* %s) + call void @ctor.289(%StringOutputStream* %s) %1 = call %StringOutputStream* @"<<"(%StringOutputStream* %s, %StringRef* %a1.addr) %2 = load %String*, %String** %_result.addr %3 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %s, i32 0, i32 0 - call void @ctor.192(%String* %2, %String* %3) - call void @dtor.297(%StringOutputStream* %s) + call void @ctor.184(%String* %2, %String* %3) + call void @dtor.291(%StringOutputStream* %s) ret void dumy_block: ; No predecessors! - call void @dtor.297(%StringOutputStream* %s) + call void @dtor.291(%StringOutputStream* %s) ret void } ; Function Attrs: inlinehint nounwind -define internal void @advanceIf.354(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %range, %"$lambdaEnclosureData.1" %pred) #4 { +define internal void @advanceIf.348(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %range, %"$lambdaEnclosureData.1" %pred) #4 { %range.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %range, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr %pred.addr = alloca %"$lambdaEnclosureData.1" @@ -12981,13 +12813,13 @@ code: ; preds = %0 while_block: ; preds = %while_step, %code %1 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr - %2 = call i1 @isEmpty.316(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1) + %2 = call i1 @isEmpty.310(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1) %3 = xor i1 true, %2 br i1 %3, label %cond.true, label %cond.false while_body: ; preds = %cond.end %4 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %4) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %4) br label %while_step while_step: ; preds = %while_body @@ -12998,8 +12830,8 @@ while_end: ; preds = %cond.end cond.true: ; preds = %while_block %5 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr - %6 = call i8 @front.321(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5) - %7 = call i1 @"().355"(%"$lambdaEnclosureData.1"* %pred.addr, i8 %6) + %6 = call i8 @front.315(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5) + %7 = call i1 @"().349"(%"$lambdaEnclosureData.1"* %pred.addr, i8 %6) br label %cond.end cond.false: ; preds = %while_block @@ -13011,7 +12843,7 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: alwaysinline nounwind -define internal i1 @"().355"(%"$lambdaEnclosureData.1"* %this, i8 %c) #3 { +define internal i1 @"().349"(%"$lambdaEnclosureData.1"* %this, i8 %c) #3 { %this.addr = alloca %"$lambdaEnclosureData.1"* store %"$lambdaEnclosureData.1"* %this, %"$lambdaEnclosureData.1"** %this.addr %c.addr = alloca i8 @@ -13025,7 +12857,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.356(%"$lambdaEnclosureData.1"* %this) #3 { +define internal void @ctor.350(%"$lambdaEnclosureData.1"* %this) #3 { %this.addr = alloca %"$lambdaEnclosureData.1"* store %"$lambdaEnclosureData.1"* %this, %"$lambdaEnclosureData.1"** %this.addr br label %code @@ -13035,7 +12867,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.357(%"$lambdaEnclosureData.1"* %this, %"$lambdaEnclosureData.1"* %other) #3 { +define internal void @ctor.351(%"$lambdaEnclosureData.1"* %this, %"$lambdaEnclosureData.1"* %other) #3 { %this.addr = alloca %"$lambdaEnclosureData.1"* store %"$lambdaEnclosureData.1"* %this, %"$lambdaEnclosureData.1"** %this.addr %other.addr = alloca %"$lambdaEnclosureData.1"* @@ -13047,7 +12879,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.358(%"$lambdaEnclosureData.1"* %this) #3 { +define internal void @dtor.352(%"$lambdaEnclosureData.1"* %this) #3 { %this.addr = alloca %"$lambdaEnclosureData.1"* store %"$lambdaEnclosureData.1"* %this, %"$lambdaEnclosureData.1"** %this.addr br label %code @@ -13057,7 +12889,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.359"(%"$lambdaEnclosureData.1"* %this, %"$lambdaEnclosureData.1"* %other) #3 { +define internal void @"=.353"(%"$lambdaEnclosureData.1"* %this, %"$lambdaEnclosureData.1"* %other) #3 { %this.addr = alloca %"$lambdaEnclosureData.1"* store %"$lambdaEnclosureData.1"* %this, %"$lambdaEnclosureData.1"** %this.addr %other.addr = alloca %"$lambdaEnclosureData.1"* @@ -13069,7 +12901,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.360"(%"$lambdaEnclosureData.1"* %this, %"$lambdaEnclosureData.1"* %other) #3 { +define internal i1 @"==.354"(%"$lambdaEnclosureData.1"* %this, %"$lambdaEnclosureData.1"* %other) #3 { %this.addr = alloca %"$lambdaEnclosureData.1"* store %"$lambdaEnclosureData.1"* %this, %"$lambdaEnclosureData.1"** %this.addr %other.addr = alloca %"$lambdaEnclosureData.1"* @@ -13081,7 +12913,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @advanceIf.361(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %range, %"$lambdaEnclosureData.2" %pred) #4 { +define internal void @advanceIf.355(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %range, %"$lambdaEnclosureData.2" %pred) #4 { %range.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %range, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr %pred.addr = alloca %"$lambdaEnclosureData.2" @@ -13093,13 +12925,13 @@ code: ; preds = %0 while_block: ; preds = %while_step, %code %1 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr - %2 = call i1 @isEmpty.316(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1) + %2 = call i1 @isEmpty.310(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1) %3 = xor i1 true, %2 br i1 %3, label %cond.true, label %cond.false while_body: ; preds = %cond.end %4 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %4) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %4) br label %while_step while_step: ; preds = %while_body @@ -13110,8 +12942,8 @@ while_end: ; preds = %cond.end cond.true: ; preds = %while_block %5 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr - %6 = call i8 @front.321(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5) - %7 = call i1 @"().362"(%"$lambdaEnclosureData.2"* %pred.addr, i8 %6) + %6 = call i8 @front.315(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5) + %7 = call i1 @"().356"(%"$lambdaEnclosureData.2"* %pred.addr, i8 %6) br label %cond.end cond.false: ; preds = %while_block @@ -13123,7 +12955,7 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: alwaysinline nounwind -define internal i1 @"().362"(%"$lambdaEnclosureData.2"* %this, i8 %c) #3 { +define internal i1 @"().356"(%"$lambdaEnclosureData.2"* %this, i8 %c) #3 { %this.addr = alloca %"$lambdaEnclosureData.2"* store %"$lambdaEnclosureData.2"* %this, %"$lambdaEnclosureData.2"** %this.addr %c.addr = alloca i8 @@ -13137,7 +12969,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.363(%"$lambdaEnclosureData.2"* %this) #3 { +define internal void @ctor.357(%"$lambdaEnclosureData.2"* %this) #3 { %this.addr = alloca %"$lambdaEnclosureData.2"* store %"$lambdaEnclosureData.2"* %this, %"$lambdaEnclosureData.2"** %this.addr br label %code @@ -13147,7 +12979,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.364(%"$lambdaEnclosureData.2"* %this, %"$lambdaEnclosureData.2"* %other) #3 { +define internal void @ctor.358(%"$lambdaEnclosureData.2"* %this, %"$lambdaEnclosureData.2"* %other) #3 { %this.addr = alloca %"$lambdaEnclosureData.2"* store %"$lambdaEnclosureData.2"* %this, %"$lambdaEnclosureData.2"** %this.addr %other.addr = alloca %"$lambdaEnclosureData.2"* @@ -13159,7 +12991,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.365(%"$lambdaEnclosureData.2"* %this) #3 { +define internal void @dtor.359(%"$lambdaEnclosureData.2"* %this) #3 { %this.addr = alloca %"$lambdaEnclosureData.2"* store %"$lambdaEnclosureData.2"* %this, %"$lambdaEnclosureData.2"** %this.addr br label %code @@ -13169,7 +13001,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.366"(%"$lambdaEnclosureData.2"* %this, %"$lambdaEnclosureData.2"* %other) #3 { +define internal void @"=.360"(%"$lambdaEnclosureData.2"* %this, %"$lambdaEnclosureData.2"* %other) #3 { %this.addr = alloca %"$lambdaEnclosureData.2"* store %"$lambdaEnclosureData.2"* %this, %"$lambdaEnclosureData.2"** %this.addr %other.addr = alloca %"$lambdaEnclosureData.2"* @@ -13181,7 +13013,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.367"(%"$lambdaEnclosureData.2"* %this, %"$lambdaEnclosureData.2"* %other) #3 { +define internal i1 @"==.361"(%"$lambdaEnclosureData.2"* %this, %"$lambdaEnclosureData.2"* %other) #3 { %this.addr = alloca %"$lambdaEnclosureData.2"* store %"$lambdaEnclosureData.2"* %this, %"$lambdaEnclosureData.2"** %this.addr %other.addr = alloca %"$lambdaEnclosureData.2"* @@ -13193,12 +13025,12 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @advance.368(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %range, i64 %n) #4 { +define internal void @advance.362(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %range, i64 %n) #4 { %range.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %range, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr %n.addr = alloca i64 store i64 %n, i64* %n.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -13206,14 +13038,14 @@ code: ; preds = %0 while_block: ; preds = %while_step, %code %1 = call i64 @post_--.52(i64* %n.addr) - store i64 0, i64* %tmp.v - %2 = load i64, i64* %tmp.v + store i64 0, i64* %tmp.this + %2 = load i64, i64* %tmp.this %3 = icmp sgt i64 %1, %2 br i1 %3, label %while_body, label %while_end while_body: ; preds = %while_block %4 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %4) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %4) br label %while_step while_step: ; preds = %while_body @@ -13224,16 +13056,16 @@ while_end: ; preds = %while_block } ; Function Attrs: inlinehint nounwind -define internal i8 @"pre_++.369"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %r) #4 { +define internal i8 @"pre_++.363"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %r) #4 { %r.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %r, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr br label %code code: ; preds = %0 %1 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1) %2 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr - %3 = call i8 @front.321(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %2) + %3 = call i8 @front.315(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %2) ret i8 %3 } @@ -13245,12 +13077,12 @@ define internal i1 @"pre_!"(%"LocationSyncCharRange[RangeWithLookahead[_CharSour code: ; preds = %0 %1 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr - %2 = call i1 @isEmpty.316(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1) + %2 = call i1 @isEmpty.310(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1) ret i1 %2 } ; Function Attrs: inlinehint nounwind -define internal void @ctor.370(%String* %this, %StringRef* %other) #4 { +define internal void @ctor.364(%String* %this, %StringRef* %other) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr %other.addr = alloca %StringRef* @@ -13264,7 +13096,7 @@ code: ; preds = %0 store i64 %2, i64* %size %3 = load %String*, %String** %this.addr %4 = load i64, i64* %size - call void @ctor.194(%String* %3, i64 %4) + call void @ctor.186(%String* %3, i64 %4) %5 = load %String*, %String** %this.addr %6 = getelementptr inbounds %String, %String* %5, i32 0, i32 0 %7 = load %"RawPtr[Char]", %"RawPtr[Char]"* %6 @@ -13285,11 +13117,11 @@ define internal void @parseString(%TokenType* sret %_result, %"SparrowScanner[_C store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %endChar.addr = alloca i8 store i8 %endChar, i8* %endChar.addr - %tmp.v = alloca i32 - %tmp.v1 = alloca %String + %tmp.this = alloca i32 + %tmp.this1 = alloca %String %"$tmpForRef" = alloca %StringRef %tmp.StringRef = alloca %StringRef - %tmp.v8 = alloca %String + %tmp.this8 = alloca %String %"$tmpForRef9" = alloca %StringRef %tmp.StringRef10 = alloca %StringRef br label %code @@ -13297,13 +13129,13 @@ define internal void @parseString(%TokenType* sret %_result, %"SparrowScanner[_C code: ; preds = %0 %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 1 - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %2) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %2) br label %if_block if_block: ; preds = %code %3 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - store i32 1, i32* %tmp.v - %4 = load i32, i32* %tmp.v + store i32 1, i32* %tmp.this + %4 = load i32, i32* %tmp.this %5 = call i1 @hasLessThan(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %3, i32 %4) br i1 %5, label %if_then, label %if_end @@ -13315,11 +13147,11 @@ if_then: ; preds = %if_block store i8* getelementptr inbounds ([40 x i8], [40 x i8]* @str.13, i32 0, i32 39), i8** %8 %9 = load %StringRef, %StringRef* %tmp.StringRef store %StringRef %9, %StringRef* %"$tmpForRef" - call void @ctor.370(%String* %tmp.v1, %StringRef* %"$tmpForRef") - call void @reportError.352(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %6, %String* %tmp.v1) - call void @dtor.229(%String* %tmp.v1) + call void @ctor.364(%String* %tmp.this1, %StringRef* %"$tmpForRef") + call void @reportError.346(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %6, %String* %tmp.this1) + call void @dtor.218(%String* %tmp.this1) %10 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %10, i32 0) + call void @ctor.313(%TokenType* %10, i32 0) ret void if_end: ; preds = %dumy_block, %if_block @@ -13331,7 +13163,7 @@ dumy_block: ; No predecessors! while_block: ; preds = %while_step, %if_end %11 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %12 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %11, i32 0, i32 1 - %13 = call i1 @"pre_!!.344"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %12) + %13 = call i1 @"pre_!!.338"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %12) br i1 %13, label %cond.true, label %cond.false while_body: ; preds = %cond.end @@ -13386,19 +13218,19 @@ if_then6: ; preds = %if_block5 store i8* getelementptr inbounds ([40 x i8], [40 x i8]* @str.15, i32 0, i32 39), i8** %28 %29 = load %StringRef, %StringRef* %tmp.StringRef10 store %StringRef %29, %StringRef* %"$tmpForRef9" - call void @ctor.370(%String* %tmp.v8, %StringRef* %"$tmpForRef9") - call void @reportError.352(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %26, %String* %tmp.v8) - call void @dtor.229(%String* %tmp.v8) + call void @ctor.364(%String* %tmp.this8, %StringRef* %"$tmpForRef9") + call void @reportError.346(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %26, %String* %tmp.this8) + call void @dtor.218(%String* %tmp.this8) %30 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %30, i32 0) + call void @ctor.313(%TokenType* %30, i32 0) ret void if_end7: ; preds = %dumy_block11, %if_block5 %31 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %32 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %31, i32 0, i32 1 - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %32) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %32) %33 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %33, i32 39) + call void @ctor.313(%TokenType* %33, i32 39) ret void dumy_block11: ; No predecessors! @@ -13418,19 +13250,19 @@ code: ; preds = %0 %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 1 %3 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %2, i32 0, i32 0 %4 = load i32, i32* %n.addr - %5 = call i1 @hasLessThan.371(%"RangeWithLookahead[_CharSource]"* %3, i32 %4) + %5 = call i1 @hasLessThan.365(%"RangeWithLookahead[_CharSource]"* %3, i32 %4) ret i1 %5 } ; Function Attrs: inlinehint nounwind -define internal i1 @hasLessThan.371(%"RangeWithLookahead[_CharSource]"* %this, i32 %n) #4 { +define internal i1 @hasLessThan.365(%"RangeWithLookahead[_CharSource]"* %this, i32 %n) #4 { %this.addr = alloca %"RangeWithLookahead[_CharSource]"* store %"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"** %this.addr %n.addr = alloca i32 store i32 %n, i32* %n.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 %"$tmpForRef" = alloca i8 - %tmp.v1 = alloca i64 + %tmp.this1 = alloca i64 br label %code code: ; preds = %0 @@ -13439,11 +13271,11 @@ code: ; preds = %0 while_block: ; preds = %while_step, %code %1 = load i32, i32* %n.addr %2 = zext i32 %1 to i64 - store i64 %2, i64* %tmp.v - %3 = load i64, i64* %tmp.v + store i64 %2, i64* %tmp.this + %3 = load i64, i64* %tmp.this %4 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr %5 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %4, i32 0, i32 1 - %6 = call i64 @size.183(%"Vector[Char]"* %5) + %6 = call i64 @size.177(%"Vector[Char]"* %5) %7 = icmp sge i64 %3, %6 br i1 %7, label %cond.true, label %cond.false @@ -13452,7 +13284,7 @@ while_body: ; preds = %cond.end %9 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %8, i32 0, i32 1 %10 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr %11 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %10, i32 0, i32 0 - %12 = call i8 @"post_++.303"(%_CharSource* %11) + %12 = call i8 @"post_++.297"(%_CharSource* %11) store i8 %12, i8* %"$tmpForRef" call void @"+="(%"Vector[Char]"* %9, i8* %"$tmpForRef") br label %while_step @@ -13463,11 +13295,11 @@ while_step: ; preds = %while_body while_end: ; preds = %cond.end %13 = load i32, i32* %n.addr %14 = zext i32 %13 to i64 - store i64 %14, i64* %tmp.v1 - %15 = load i64, i64* %tmp.v1 + store i64 %14, i64* %tmp.this1 + %15 = load i64, i64* %tmp.this1 %16 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr %17 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %16, i32 0, i32 1 - %18 = call i64 @size.183(%"Vector[Char]"* %17) + %18 = call i64 @size.177(%"Vector[Char]"* %17) %19 = icmp sge i64 %15, %18 ret i1 %19 @@ -13490,12 +13322,12 @@ define i1 @checkEscapeChar(%"SparrowScanner[_CharSource, ExternalErrorReporter]" %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %ch = alloca i8 - %tmp.v = alloca i32 - %tmp.v39 = alloca %String + %tmp.this = alloca i32 + %tmp.this39 = alloca %String %"$tmpForRef" = alloca %StringRef %tmp.StringRef = alloca %StringRef %charVal = alloca i32 - %tmp.v40 = alloca i8 + %tmp.this40 = alloca i8 br label %code code: ; preds = %0 @@ -13513,7 +13345,7 @@ if_block: ; preds = %code if_then: ; preds = %if_block %6 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %7 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %6, i32 0, i32 1 - %8 = call i8 @"pre_++.369"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %7) + %8 = call i8 @"pre_++.363"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %7) store i8 %8, i8* %ch br label %if_block1 @@ -13529,7 +13361,7 @@ if_then2: ; preds = %if_block1 %11 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %12 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %11, i32 0, i32 2 %13 = getelementptr inbounds %Token, %Token* %12, i32 0, i32 2 - call void @"+=.372"(%String* %13, i8 13) + call void @"+=.366"(%String* %13, i8 13) br label %if_end3 if_else: ; preds = %if_block1 @@ -13538,7 +13370,7 @@ if_else: ; preds = %if_block1 if_end3: ; preds = %if_end7, %if_then2 %14 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %15 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %14, i32 0, i32 1 - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %15) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %15) ret i1 true if_block4: ; preds = %if_else @@ -13550,7 +13382,7 @@ if_then5: ; preds = %if_block4 %18 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %19 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %18, i32 0, i32 2 %20 = getelementptr inbounds %Token, %Token* %19, i32 0, i32 2 - call void @"+=.372"(%String* %20, i8 10) + call void @"+=.366"(%String* %20, i8 10) br label %if_end7 if_else6: ; preds = %if_block4 @@ -13568,7 +13400,7 @@ if_then9: ; preds = %if_block8 %23 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %24 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %23, i32 0, i32 2 %25 = getelementptr inbounds %Token, %Token* %24, i32 0, i32 2 - call void @"+=.372"(%String* %25, i8 8) + call void @"+=.366"(%String* %25, i8 8) br label %if_end11 if_else10: ; preds = %if_block8 @@ -13586,7 +13418,7 @@ if_then13: ; preds = %if_block12 %28 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %29 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %28, i32 0, i32 2 %30 = getelementptr inbounds %Token, %Token* %29, i32 0, i32 2 - call void @"+=.372"(%String* %30, i8 12) + call void @"+=.366"(%String* %30, i8 12) br label %if_end15 if_else14: ; preds = %if_block12 @@ -13604,7 +13436,7 @@ if_then17: ; preds = %if_block16 %33 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %34 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %33, i32 0, i32 2 %35 = getelementptr inbounds %Token, %Token* %34, i32 0, i32 2 - call void @"+=.372"(%String* %35, i8 9) + call void @"+=.366"(%String* %35, i8 9) br label %if_end19 if_else18: ; preds = %if_block16 @@ -13622,7 +13454,7 @@ if_then21: ; preds = %if_block20 %38 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %39 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %38, i32 0, i32 2 %40 = getelementptr inbounds %Token, %Token* %39, i32 0, i32 2 - call void @"+=.372"(%String* %40, i8 92) + call void @"+=.366"(%String* %40, i8 92) br label %if_end23 if_else22: ; preds = %if_block20 @@ -13640,7 +13472,7 @@ if_then25: ; preds = %if_block24 %43 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %44 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %43, i32 0, i32 2 %45 = getelementptr inbounds %Token, %Token* %44, i32 0, i32 2 - call void @"+=.372"(%String* %45, i8 39) + call void @"+=.366"(%String* %45, i8 39) br label %if_end27 if_else26: ; preds = %if_block24 @@ -13658,7 +13490,7 @@ if_then29: ; preds = %if_block28 %48 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %49 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %48, i32 0, i32 2 %50 = getelementptr inbounds %Token, %Token* %49, i32 0, i32 2 - call void @"+=.372"(%String* %50, i8 34) + call void @"+=.366"(%String* %50, i8 34) br label %if_end31 if_else30: ; preds = %if_block28 @@ -13681,8 +13513,8 @@ if_else34: ; preds = %cond.end %55 = getelementptr inbounds %Token, %Token* %54, i32 0, i32 2 %56 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %57 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %56, i32 0, i32 1 - %58 = call i8 @"pre_++.369"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %57) - call void @"+=.372"(%String* %55, i8 %58) + %58 = call i8 @"pre_++.363"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %57) + call void @"+=.366"(%String* %55, i8 %58) br label %if_end35 if_end35: ; preds = %if_else34, %if_end38 @@ -13702,8 +13534,8 @@ cond.end: ; preds = %cond.false, %cond.t if_block36: ; preds = %if_then33 %61 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - store i32 2, i32* %tmp.v - %62 = load i32, i32* %tmp.v + store i32 2, i32* %tmp.this + %62 = load i32, i32* %tmp.this %63 = call i1 @hasLessThan(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %61, i32 %62) br i1 %63, label %if_then37, label %if_end38 @@ -13715,22 +13547,22 @@ if_then37: ; preds = %if_block36 store i8* getelementptr inbounds ([37 x i8], [37 x i8]* @str.14, i32 0, i32 36), i8** %66 %67 = load %StringRef, %StringRef* %tmp.StringRef store %StringRef %67, %StringRef* %"$tmpForRef" - call void @ctor.370(%String* %tmp.v39, %StringRef* %"$tmpForRef") - call void @reportError.352(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %64, %String* %tmp.v39) - call void @dtor.229(%String* %tmp.v39) + call void @ctor.364(%String* %tmp.this39, %StringRef* %"$tmpForRef") + call void @reportError.346(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %64, %String* %tmp.this39) + call void @dtor.218(%String* %tmp.this39) ret i1 true if_end38: ; preds = %dumy_block, %if_block36 %68 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %69 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %68, i32 0, i32 1 - %70 = call i8 @"pre_++.369"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %69) + %70 = call i8 @"pre_++.363"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %69) %71 = call i32 @getXdigitVal(i8 %70) %72 = mul i32 16, %71 store i32 %72, i32* %charVal %73 = load i32, i32* %charVal %74 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %75 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %74, i32 0, i32 1 - %76 = call i8 @"pre_++.369"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %75) + %76 = call i8 @"pre_++.363"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %75) %77 = call i32 @getXdigitVal(i8 %76) %78 = add i32 %73, %77 store i32 %78, i32* %charVal @@ -13739,9 +13571,9 @@ if_end38: ; preds = %dumy_block, %if_blo %81 = getelementptr inbounds %Token, %Token* %80, i32 0, i32 2 %82 = load i32, i32* %charVal %83 = trunc i32 %82 to i8 - store i8 %83, i8* %tmp.v40 - %84 = load i8, i8* %tmp.v40 - call void @"+=.372"(%String* %81, i8 %84) + store i8 %83, i8* %tmp.this40 + %84 = load i8, i8* %tmp.this40 + call void @"+=.366"(%String* %81, i8 %84) br label %if_end35 dumy_block: ; No predecessors! @@ -13752,7 +13584,7 @@ dumy_block41: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal void @"+=.372"(%String* %this, i8 %value) #4 { +define internal void @"+=.366"(%String* %this, i8 %value) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr %value.addr = alloca i8 @@ -13762,20 +13594,20 @@ define internal void @"+=.372"(%String* %this, i8 %value) #4 { code: ; preds = %0 %1 = load %String*, %String** %this.addr %2 = load i8, i8* %value.addr - call void @pushBack.373(%String* %1, i8 %2) + call void @pushBack.367(%String* %1, i8 %2) ret void } ; Function Attrs: inlinehint nounwind -define internal void @pushBack.373(%String* %this, i8 %value) #4 { +define internal void @pushBack.367(%String* %this, i8 %value) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr %value.addr = alloca i8 store i8 %value, i8* %value.addr %t = alloca i64 - %tmp.v = alloca i64 - %tmp.v4 = alloca i64 - %tmp.v5 = alloca i64 + %tmp.this = alloca i64 + %tmp.this4 = alloca i64 + %tmp.this5 = alloca i64 %"$tmpC" = alloca %"RawPtr[Char]" br label %code @@ -13787,12 +13619,12 @@ if_block: ; preds = %code %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 1 %3 = load %String*, %String** %this.addr %4 = getelementptr inbounds %String, %String* %3, i32 0, i32 2 - %5 = call i1 @"==.188"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) + %5 = call i1 @"==.225"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) br i1 %5, label %if_then, label %if_end if_then: ; preds = %if_block - store i64 2, i64* %tmp.v - %6 = load i64, i64* %tmp.v + store i64 2, i64* %tmp.this + %6 = load i64, i64* %tmp.this %7 = load %String*, %String** %this.addr %8 = call i64 @capacity(%String* %7) %9 = mul i64 %6, %8 @@ -13811,20 +13643,20 @@ if_end: ; preds = %if_end3, %if_block %17 = load %String*, %String** %this.addr %18 = getelementptr inbounds %String, %String* %17, i32 0, i32 1 %19 = load %"RawPtr[Char]", %"RawPtr[Char]"* %18 - call void @advance.189(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %19) - call void @"=.184"(%"RawPtr[Char]"* %16, %"RawPtr[Char]"* %"$tmpC") + call void @advance.226(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %19) + call void @"=.178"(%"RawPtr[Char]"* %16, %"RawPtr[Char]"* %"$tmpC") ret void if_block1: ; preds = %if_then %20 = load i64, i64* %t - store i64 2, i64* %tmp.v4 - %21 = load i64, i64* %tmp.v4 + store i64 2, i64* %tmp.this4 + %21 = load i64, i64* %tmp.this4 %22 = icmp slt i64 %20, %21 br i1 %22, label %if_then2, label %if_end3 if_then2: ; preds = %if_block1 - store i64 2, i64* %tmp.v5 - %23 = load i64, i64* %tmp.v5 + store i64 2, i64* %tmp.this5 + %23 = load i64, i64* %tmp.this5 store i64 %23, i64* %t br label %if_end3 @@ -13839,10 +13671,10 @@ if_end3: ; preds = %if_then2, %if_block define internal i32 @getXdigitVal(i8 %c) #4 { %c.addr = alloca i8 store i8 %c, i8* %c.addr - %tmp.v = alloca i32 - %tmp.v1 = alloca i32 - %tmp.v2 = alloca i32 - %tmp.v3 = alloca i32 + %tmp.this = alloca i32 + %tmp.this1 = alloca i32 + %tmp.this2 = alloca i32 + %tmp.this3 = alloca i32 br label %code code: ; preds = %0 @@ -13852,21 +13684,21 @@ code: ; preds = %0 cond_alt1: ; preds = %code %3 = load i8, i8* %c.addr - call void @_ass_32_8z(i32* %tmp.v, i8 %3) - %4 = load i32, i32* %tmp.v - call void @_ass_32_8z(i32* %tmp.v1, i8 48) - %5 = load i32, i32* %tmp.v1 + call void @_ass_32_8z(i32* %tmp.this, i8 %3) + %4 = load i32, i32* %tmp.this + call void @_ass_32_8z(i32* %tmp.this1, i8 48) + %5 = load i32, i32* %tmp.this1 %6 = sub i32 %4, %5 br label %cond_end cond_alt2: ; preds = %code %7 = load i8, i8* %c.addr %8 = call i8 @toLower(i8 %7) - call void @_ass_32_8z(i32* %tmp.v2, i8 %8) - %9 = load i32, i32* %tmp.v2 + call void @_ass_32_8z(i32* %tmp.this2, i8 %8) + %9 = load i32, i32* %tmp.this2 %10 = add i32 10, %9 - call void @_ass_32_8z(i32* %tmp.v3, i8 97) - %11 = load i32, i32* %tmp.v3 + call void @_ass_32_8z(i32* %tmp.this3, i8 97) + %11 = load i32, i32* %tmp.this3 %12 = sub i32 %10, %11 br label %cond_end @@ -13900,13 +13732,13 @@ dumy_block: ; No predecessors! define internal i1 @isDigit(i8 %c) #4 { %c.addr = alloca i8 store i8 %c, i8* %c.addr - %tmp.v = alloca i32 + %tmp.this = alloca i32 br label %code code: ; preds = %0 %1 = load i8, i8* %c.addr - call void @_ass_32_8z(i32* %tmp.v, i8 %1) - %2 = load i32, i32* %tmp.v + call void @_ass_32_8z(i32* %tmp.this, i8 %1) + %2 = load i32, i32* %tmp.this %3 = call i32 @isdigit(i32 %2) %4 = icmp ne i32 0, %3 ret i1 %4 @@ -13918,18 +13750,18 @@ declare i32 @isdigit(i32) define internal i8 @toLower(i8 %c) #4 { %c.addr = alloca i8 store i8 %c, i8* %c.addr - %tmp.v = alloca i8 - %tmp.v1 = alloca i32 + %tmp.this = alloca i8 + %tmp.this1 = alloca i32 br label %code code: ; preds = %0 %1 = load i8, i8* %c.addr - call void @_ass_32_8z(i32* %tmp.v1, i8 %1) - %2 = load i32, i32* %tmp.v1 + call void @_ass_32_8z(i32* %tmp.this1, i8 %1) + %2 = load i32, i32* %tmp.this1 %3 = call i32 @tolower(i32 %2) %4 = trunc i32 %3 to i8 - store i8 %4, i8* %tmp.v - %5 = load i8, i8* %tmp.v + store i8 %4, i8* %tmp.this + %5 = load i8, i8* %tmp.this ret i8 %5 } @@ -13948,10 +13780,10 @@ code: ; preds = %0 %4 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %5 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %4, i32 0, i32 1 %6 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5) - call void @"+=.372"(%String* %3, i8 %6) + call void @"+=.366"(%String* %3, i8 %6) %7 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %8 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %7, i32 0, i32 1 - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %8) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %8) ret void } @@ -13961,25 +13793,25 @@ define internal void @parseStringNE(%TokenType* sret %_result, %"SparrowScanner[ store %TokenType* %_result, %TokenType** %_result.addr %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %tmp.v = alloca i64 - %tmp.v5 = alloca %String + %tmp.this = alloca i64 + %tmp.this5 = alloca %String %"$tmpForRef" = alloca %StringRef %tmp.StringRef = alloca %StringRef - %tmp.v6 = alloca i64 + %tmp.this6 = alloca i64 br label %code code: ; preds = %0 %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 1 - store i64 2, i64* %tmp.v - %3 = load i64, i64* %tmp.v - call void @advance.368(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %2, i64 %3) + store i64 2, i64* %tmp.this + %3 = load i64, i64* %tmp.this + call void @advance.362(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %2, i64 %3) br label %while_block while_block: ; preds = %while_step, %code %4 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %5 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %4, i32 0, i32 1 - %6 = call i1 @"pre_!!.344"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5) + %6 = call i1 @"pre_!!.338"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5) br i1 %6, label %cond.true, label %cond.false while_body: ; preds = %cond.end @@ -14035,21 +13867,21 @@ if_then: ; preds = %if_block store i8* getelementptr inbounds ([40 x i8], [40 x i8]* @str.16, i32 0, i32 39), i8** %21 %22 = load %StringRef, %StringRef* %tmp.StringRef store %StringRef %22, %StringRef* %"$tmpForRef" - call void @ctor.370(%String* %tmp.v5, %StringRef* %"$tmpForRef") - call void @reportError.352(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %19, %String* %tmp.v5) - call void @dtor.229(%String* %tmp.v5) + call void @ctor.364(%String* %tmp.this5, %StringRef* %"$tmpForRef") + call void @reportError.346(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %19, %String* %tmp.this5) + call void @dtor.218(%String* %tmp.this5) %23 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %23, i32 0) + call void @ctor.313(%TokenType* %23, i32 0) ret void if_end: ; preds = %dumy_block, %if_block %24 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %25 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %24, i32 0, i32 1 - store i64 2, i64* %tmp.v6 - %26 = load i64, i64* %tmp.v6 - call void @advance.368(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %25, i64 %26) + store i64 2, i64* %tmp.this6 + %26 = load i64, i64* %tmp.this6 + call void @advance.362(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %25, i64 %26) %27 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %27, i32 39) + call void @ctor.313(%TokenType* %27, i32 39) ret void dumy_block: ; No predecessors! @@ -14316,8 +14148,8 @@ define internal i1 @parseOperator(%"SparrowScanner[_CharSource, ExternalErrorRep %funptr = alloca i1 (i8)* %i = alloca i32 %c = alloca i8 - %tmp.v = alloca i32 - %tmp.v4 = alloca i32 + %tmp.this = alloca i32 + %tmp.this4 = alloca i32 %hasOtherDot = alloca i1 %funptr8 = alloca i1 (i8)* br label %code @@ -14357,9 +14189,9 @@ if_then2: ; preds = %if_block1 store i32 1, i32* %i %11 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %12 = load i32, i32* %i - store i32 %12, i32* %tmp.v - %13 = load i32, i32* %tmp.v - %14 = call i8 @peekChar.375(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %11, i32 %13) + store i32 %12, i32* %tmp.this + %13 = load i32, i32* %tmp.this + %14 = call i8 @peekChar.369(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %11, i32 %13) store i8 %14, i8* %c br label %while_block @@ -14374,9 +14206,9 @@ while_block: ; preds = %while_step, %if_the while_body: ; preds = %while_block %17 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %18 = call i32 @"pre_++.21"(i32* %i) - store i32 %18, i32* %tmp.v4 - %19 = load i32, i32* %tmp.v4 - %20 = call i8 @peekChar.375(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %17, i32 %19) + store i32 %18, i32* %tmp.this4 + %19 = load i32, i32* %tmp.this4 + %20 = call i8 @peekChar.369(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %17, i32 %19) store i8 %20, i8* %c br label %while_step @@ -14422,7 +14254,7 @@ code: ; preds = %0 while_block: ; preds = %while_step, %code %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 1 - %3 = call i1 @"pre_!!.344"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %2) + %3 = call i1 @"pre_!!.338"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %2) br i1 %3, label %cond.true, label %cond.false while_body: ; preds = %cond.end @@ -14432,13 +14264,13 @@ while_body: ; preds = %cond.end %7 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %8 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %7, i32 0, i32 1 %9 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %8) - call void @"+=.372"(%String* %6, i8 %9) + call void @"+=.366"(%String* %6, i8 %9) br label %while_step while_step: ; preds = %while_body %10 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %11 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %10, i32 0, i32 1 - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %11) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %11) br label %while_block while_end: ; preds = %cond.end @@ -14448,7 +14280,7 @@ cond.true: ; preds = %while_block %12 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %13 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %12, i32 0, i32 1 %14 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %13) - %15 = call i1 @"().374"(%"FunctionPtr1[Bool, Char]"* %pred.addr, i8 %14) + %15 = call i1 @"().368"(%"FunctionPtr1[Bool, Char]"* %pred.addr, i8 %14) br label %cond.end cond.false: ; preds = %while_block @@ -14460,7 +14292,7 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: inlinehint nounwind -define internal i1 @"().374"(%"FunctionPtr1[Bool, Char]"* %this, i8 %p1) #4 { +define internal i1 @"().368"(%"FunctionPtr1[Bool, Char]"* %this, i8 %p1) #4 { %this.addr = alloca %"FunctionPtr1[Bool, Char]"* store %"FunctionPtr1[Bool, Char]"* %this, %"FunctionPtr1[Bool, Char]"** %this.addr %p1.addr = alloca i8 @@ -14477,7 +14309,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i8 @peekChar.375(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, i32 %n) #4 { +define internal i8 @peekChar.369(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, i32 %n) #4 { %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %n.addr = alloca i32 @@ -14497,13 +14329,13 @@ code: ; preds = %0 define internal i1 @isAlpha(i8 %c) #4 { %c.addr = alloca i8 store i8 %c, i8* %c.addr - %tmp.v = alloca i32 + %tmp.this = alloca i32 br label %code code: ; preds = %0 %1 = load i8, i8* %c.addr - call void @_ass_32_8z(i32* %tmp.v, i8 %1) - %2 = load i32, i32* %tmp.v + call void @_ass_32_8z(i32* %tmp.this, i8 %1) + %2 = load i32, i32* %tmp.this %3 = call i32 @isalpha(i32 %2) %4 = icmp ne i32 0, %3 ret i1 %4 @@ -14520,8 +14352,7 @@ define void @parseIdentifer(%TokenType* sret %_result, %"SparrowScanner[_CharSou %allowSymbolChars = alloca i1 %firstDot = alloca i1 %ch = alloca i8 - %data = alloca %StringRef* - %"$tmpC" = alloca %StringRef + %data = alloca %StringRef %tmp.StringRef = alloca %StringRef %tmp.StringRef24 = alloca %StringRef %tmp.StringRef30 = alloca %StringRef @@ -14554,17 +14385,17 @@ code: ; preds = %0 %4 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %5 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %4, i32 0, i32 1 %6 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5) - call void @"+=.372"(%String* %3, i8 %6) + call void @"+=.366"(%String* %3, i8 %6) %7 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %8 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %7, i32 0, i32 1 - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %8) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %8) store i1 true, i1* %firstDot br label %while_block while_block: ; preds = %while_step, %code %9 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %10 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %9, i32 0, i32 1 - %11 = call i1 @"pre_!!.344"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %10) + %11 = call i1 @"pre_!!.338"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %10) br i1 %11, label %while_body, label %while_end while_body: ; preds = %while_block @@ -14577,97 +14408,97 @@ while_body: ; preds = %while_block while_step: ; preds = %if_end7 %15 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %16 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %15, i32 0, i32 1 - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %16) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %16) br label %while_block while_end: ; preds = %if_then, %while_block %17 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %18 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %17, i32 0, i32 2 %19 = getelementptr inbounds %Token, %Token* %18, i32 0, i32 2 - call void @asStringRef(%StringRef* %"$tmpC", %String* %19) - store %StringRef* %"$tmpC", %StringRef** %data + %20 = call %StringRef @asStringRef(%String* %19) + call void @ctor.56(%StringRef* %data, %StringRef %20) br label %if_block16 if_block: ; preds = %while_body - %20 = load i8, i8* %ch - %21 = call i1 @isAlpha(i8 %20) - %22 = xor i1 true, %21 - br i1 %22, label %cond.true1, label %cond.false2 + %21 = load i8, i8* %ch + %22 = call i1 @isAlpha(i8 %21) + %23 = xor i1 true, %22 + br i1 %23, label %cond.true1, label %cond.false2 if_then: ; preds = %cond.end br label %while_end if_end: ; preds = %dumy_block, %cond.end - %23 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %24 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %23, i32 0, i32 2 - %25 = getelementptr inbounds %Token, %Token* %24, i32 0, i32 2 - %26 = load i8, i8* %ch - call void @"+=.372"(%String* %25, i8 %26) + %24 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr + %25 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %24, i32 0, i32 2 + %26 = getelementptr inbounds %Token, %Token* %25, i32 0, i32 2 + %27 = load i8, i8* %ch + call void @"+=.366"(%String* %26, i8 %27) br label %if_block5 cond.true: ; preds = %cond.end3 - %27 = load i8, i8* %ch - %28 = call i1 @isDigit(i8 %27) - %29 = xor i1 true, %28 + %28 = load i8, i8* %ch + %29 = call i1 @isDigit(i8 %28) + %30 = xor i1 true, %29 br label %cond.end cond.false: ; preds = %cond.end3 br label %cond.end cond.end: ; preds = %cond.false, %cond.true - %cond.res4 = phi i1 [ %29, %cond.true ], [ false, %cond.false ] + %cond.res4 = phi i1 [ %30, %cond.true ], [ false, %cond.false ] br i1 %cond.res4, label %if_then, label %if_end cond.true1: ; preds = %if_block - %30 = load i8, i8* %ch - %31 = icmp ne i8 %30, 95 + %31 = load i8, i8* %ch + %32 = icmp ne i8 %31, 95 br label %cond.end3 cond.false2: ; preds = %if_block br label %cond.end3 cond.end3: ; preds = %cond.false2, %cond.true1 - %cond.res = phi i1 [ %31, %cond.true1 ], [ false, %cond.false2 ] + %cond.res = phi i1 [ %32, %cond.true1 ], [ false, %cond.false2 ] br i1 %cond.res, label %cond.true, label %cond.false dumy_block: ; No predecessors! br label %if_end if_block5: ; preds = %if_end - %32 = load i8, i8* %ch - %33 = icmp eq i8 %32, 95 - br i1 %33, label %cond.true8, label %cond.false9 + %33 = load i8, i8* %ch + %34 = icmp eq i8 %33, 95 + br i1 %34, label %cond.true8, label %cond.false9 if_then6: ; preds = %cond.end10 - %34 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %35 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %34, i32 0, i32 1 - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %35) + %35 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr + %36 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %35, i32 0, i32 1 + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %36) br label %if_block12 if_end7: ; preds = %if_end14, %cond.end10 br label %while_step cond.true8: ; preds = %if_block5 - %36 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %37 = call i8 @peekChar(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %36) - %38 = call i1 @isOpCharDot(i8 %37) + %37 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr + %38 = call i8 @peekChar(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %37) + %39 = call i1 @isOpCharDot(i8 %38) br label %cond.end10 cond.false9: ; preds = %if_block5 br label %cond.end10 cond.end10: ; preds = %cond.false9, %cond.true8 - %cond.res11 = phi i1 [ %38, %cond.true8 ], [ false, %cond.false9 ] + %cond.res11 = phi i1 [ %39, %cond.true8 ], [ false, %cond.false9 ] br i1 %cond.res11, label %if_then6, label %if_end7 if_block12: ; preds = %if_then6 - %39 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %40 = call i1 @parseOperator(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %39) - br i1 %40, label %if_then13, label %if_end14 + %40 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr + %41 = call i1 @parseOperator(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %40) + br i1 %41, label %if_then13, label %if_end14 if_then13: ; preds = %if_block12 - %41 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %41, i32 36) + %42 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.313(%TokenType* %42, i32 36) ret void if_end14: ; preds = %dumy_block15, %if_block12 @@ -14677,18 +14508,18 @@ dumy_block15: ; No predecessors! br label %if_end14 if_block16: ; preds = %while_end - %42 = load %StringRef*, %StringRef** %data - %43 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 0 - %44 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 1 - store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.17, i32 0, i32 0), i8** %43 - store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.17, i32 0, i32 5), i8** %44 - %45 = load %StringRef, %StringRef* %tmp.StringRef - %46 = call i1 @"=="(%StringRef* %42, %StringRef %45) - br i1 %46, label %if_then17, label %if_else + %43 = load %StringRef, %StringRef* %data + %44 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 0 + %45 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 1 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.17, i32 0, i32 0), i8** %44 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.17, i32 0, i32 5), i8** %45 + %46 = load %StringRef, %StringRef* %tmp.StringRef + %47 = call i1 @"=="(%StringRef %43, %StringRef %46) + br i1 %47, label %if_then17, label %if_else if_then17: ; preds = %if_block16 - %47 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %47, i32 10) + %48 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.313(%TokenType* %48, i32 10) ret void if_else: ; preds = %if_block16 @@ -14701,18 +14532,18 @@ dumy_block19: ; No predecessors! br label %if_end18 if_block20: ; preds = %if_else - %48 = load %StringRef*, %StringRef** %data - %49 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef24, i32 0, i32 0 - %50 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef24, i32 0, i32 1 - store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.18, i32 0, i32 0), i8** %49 - store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.18, i32 0, i32 5), i8** %50 - %51 = load %StringRef, %StringRef* %tmp.StringRef24 - %52 = call i1 @"=="(%StringRef* %48, %StringRef %51) - br i1 %52, label %if_then21, label %if_else22 + %49 = load %StringRef, %StringRef* %data + %50 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef24, i32 0, i32 0 + %51 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef24, i32 0, i32 1 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.18, i32 0, i32 0), i8** %50 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.18, i32 0, i32 5), i8** %51 + %52 = load %StringRef, %StringRef* %tmp.StringRef24 + %53 = call i1 @"=="(%StringRef %49, %StringRef %52) + br i1 %53, label %if_then21, label %if_else22 if_then21: ; preds = %if_block20 - %53 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %53, i32 11) + %54 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.313(%TokenType* %54, i32 11) ret void if_else22: ; preds = %if_block20 @@ -14725,18 +14556,18 @@ dumy_block25: ; No predecessors! br label %if_end23 if_block26: ; preds = %if_else22 - %54 = load %StringRef*, %StringRef** %data - %55 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef30, i32 0, i32 0 - %56 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef30, i32 0, i32 1 - store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.19, i32 0, i32 0), i8** %55 - store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.19, i32 0, i32 7), i8** %56 - %57 = load %StringRef, %StringRef* %tmp.StringRef30 - %58 = call i1 @"=="(%StringRef* %54, %StringRef %57) - br i1 %58, label %if_then27, label %if_else28 + %55 = load %StringRef, %StringRef* %data + %56 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef30, i32 0, i32 0 + %57 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef30, i32 0, i32 1 + store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.19, i32 0, i32 0), i8** %56 + store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.19, i32 0, i32 7), i8** %57 + %58 = load %StringRef, %StringRef* %tmp.StringRef30 + %59 = call i1 @"=="(%StringRef %55, %StringRef %58) + br i1 %59, label %if_then27, label %if_else28 if_then27: ; preds = %if_block26 - %59 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %59, i32 4) + %60 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.313(%TokenType* %60, i32 4) ret void if_else28: ; preds = %if_block26 @@ -14749,18 +14580,18 @@ dumy_block31: ; No predecessors! br label %if_end29 if_block32: ; preds = %if_else28 - %60 = load %StringRef*, %StringRef** %data - %61 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef36, i32 0, i32 0 - %62 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef36, i32 0, i32 1 - store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.20, i32 0, i32 0), i8** %61 - store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.20, i32 0, i32 8), i8** %62 - %63 = load %StringRef, %StringRef* %tmp.StringRef36 - %64 = call i1 @"=="(%StringRef* %60, %StringRef %63) - br i1 %64, label %if_then33, label %if_else34 + %61 = load %StringRef, %StringRef* %data + %62 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef36, i32 0, i32 0 + %63 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef36, i32 0, i32 1 + store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.20, i32 0, i32 0), i8** %62 + store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.20, i32 0, i32 8), i8** %63 + %64 = load %StringRef, %StringRef* %tmp.StringRef36 + %65 = call i1 @"=="(%StringRef %61, %StringRef %64) + br i1 %65, label %if_then33, label %if_else34 if_then33: ; preds = %if_block32 - %65 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %65, i32 12) + %66 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.313(%TokenType* %66, i32 12) ret void if_else34: ; preds = %if_block32 @@ -14773,18 +14604,18 @@ dumy_block37: ; No predecessors! br label %if_end35 if_block38: ; preds = %if_else34 - %66 = load %StringRef*, %StringRef** %data - %67 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef42, i32 0, i32 0 - %68 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef42, i32 0, i32 1 - store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.21, i32 0, i32 0), i8** %67 - store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.21, i32 0, i32 8), i8** %68 - %69 = load %StringRef, %StringRef* %tmp.StringRef42 - %70 = call i1 @"=="(%StringRef* %66, %StringRef %69) - br i1 %70, label %if_then39, label %if_else40 + %67 = load %StringRef, %StringRef* %data + %68 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef42, i32 0, i32 0 + %69 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef42, i32 0, i32 1 + store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.21, i32 0, i32 0), i8** %68 + store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.21, i32 0, i32 8), i8** %69 + %70 = load %StringRef, %StringRef* %tmp.StringRef42 + %71 = call i1 @"=="(%StringRef %67, %StringRef %70) + br i1 %71, label %if_then39, label %if_else40 if_then39: ; preds = %if_block38 - %71 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %71, i32 5) + %72 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.313(%TokenType* %72, i32 5) ret void if_else40: ; preds = %if_block38 @@ -14797,18 +14628,18 @@ dumy_block43: ; No predecessors! br label %if_end41 if_block44: ; preds = %if_else40 - %72 = load %StringRef*, %StringRef** %data - %73 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef48, i32 0, i32 0 - %74 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef48, i32 0, i32 1 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.22, i32 0, i32 0), i8** %73 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.22, i32 0, i32 3), i8** %74 - %75 = load %StringRef, %StringRef* %tmp.StringRef48 - %76 = call i1 @"=="(%StringRef* %72, %StringRef %75) - br i1 %76, label %if_then45, label %if_else46 + %73 = load %StringRef, %StringRef* %data + %74 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef48, i32 0, i32 0 + %75 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef48, i32 0, i32 1 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.22, i32 0, i32 0), i8** %74 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.22, i32 0, i32 3), i8** %75 + %76 = load %StringRef, %StringRef* %tmp.StringRef48 + %77 = call i1 @"=="(%StringRef %73, %StringRef %76) + br i1 %77, label %if_then45, label %if_else46 if_then45: ; preds = %if_block44 - %77 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %77, i32 6) + %78 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.313(%TokenType* %78, i32 6) ret void if_else46: ; preds = %if_block44 @@ -14821,18 +14652,18 @@ dumy_block49: ; No predecessors! br label %if_end47 if_block50: ; preds = %if_else46 - %78 = load %StringRef*, %StringRef** %data - %79 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef54, i32 0, i32 0 - %80 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef54, i32 0, i32 1 - store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @str.23, i32 0, i32 0), i8** %79 - store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @str.23, i32 0, i32 2), i8** %80 - %81 = load %StringRef, %StringRef* %tmp.StringRef54 - %82 = call i1 @"=="(%StringRef* %78, %StringRef %81) - br i1 %82, label %if_then51, label %if_else52 + %79 = load %StringRef, %StringRef* %data + %80 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef54, i32 0, i32 0 + %81 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef54, i32 0, i32 1 + store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @str.23, i32 0, i32 0), i8** %80 + store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @str.23, i32 0, i32 2), i8** %81 + %82 = load %StringRef, %StringRef* %tmp.StringRef54 + %83 = call i1 @"=="(%StringRef %79, %StringRef %82) + br i1 %83, label %if_then51, label %if_else52 if_then51: ; preds = %if_block50 - %83 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %83, i32 15) + %84 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.313(%TokenType* %84, i32 15) ret void if_else52: ; preds = %if_block50 @@ -14845,18 +14676,18 @@ dumy_block55: ; No predecessors! br label %if_end53 if_block56: ; preds = %if_else52 - %84 = load %StringRef*, %StringRef** %data - %85 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef60, i32 0, i32 0 - %86 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef60, i32 0, i32 1 - store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str.24, i32 0, i32 0), i8** %85 - store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str.24, i32 0, i32 4), i8** %86 - %87 = load %StringRef, %StringRef* %tmp.StringRef60 - %88 = call i1 @"=="(%StringRef* %84, %StringRef %87) - br i1 %88, label %if_then57, label %if_else58 + %85 = load %StringRef, %StringRef* %data + %86 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef60, i32 0, i32 0 + %87 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef60, i32 0, i32 1 + store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str.24, i32 0, i32 0), i8** %86 + store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str.24, i32 0, i32 4), i8** %87 + %88 = load %StringRef, %StringRef* %tmp.StringRef60 + %89 = call i1 @"=="(%StringRef %85, %StringRef %88) + br i1 %89, label %if_then57, label %if_else58 if_then57: ; preds = %if_block56 - %89 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %89, i32 23) + %90 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.313(%TokenType* %90, i32 23) ret void if_else58: ; preds = %if_block56 @@ -14869,18 +14700,18 @@ dumy_block61: ; No predecessors! br label %if_end59 if_block62: ; preds = %if_else58 - %90 = load %StringRef*, %StringRef** %data - %91 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef66, i32 0, i32 0 - %92 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef66, i32 0, i32 1 - store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.25, i32 0, i32 0), i8** %91 - store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.25, i32 0, i32 5), i8** %92 - %93 = load %StringRef, %StringRef* %tmp.StringRef66 - %94 = call i1 @"=="(%StringRef* %90, %StringRef %93) - br i1 %94, label %if_then63, label %if_else64 + %91 = load %StringRef, %StringRef* %data + %92 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef66, i32 0, i32 0 + %93 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef66, i32 0, i32 1 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.25, i32 0, i32 0), i8** %92 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.25, i32 0, i32 5), i8** %93 + %94 = load %StringRef, %StringRef* %tmp.StringRef66 + %95 = call i1 @"=="(%StringRef %91, %StringRef %94) + br i1 %95, label %if_then63, label %if_else64 if_then63: ; preds = %if_block62 - %95 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %95, i32 20) + %96 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.313(%TokenType* %96, i32 20) ret void if_else64: ; preds = %if_block62 @@ -14893,18 +14724,18 @@ dumy_block67: ; No predecessors! br label %if_end65 if_block68: ; preds = %if_else64 - %96 = load %StringRef*, %StringRef** %data - %97 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef72, i32 0, i32 0 - %98 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef72, i32 0, i32 1 - store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.26, i32 0, i32 0), i8** %97 - store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.26, i32 0, i32 7), i8** %98 - %99 = load %StringRef, %StringRef* %tmp.StringRef72 - %100 = call i1 @"=="(%StringRef* %96, %StringRef %99) - br i1 %100, label %if_then69, label %if_else70 + %97 = load %StringRef, %StringRef* %data + %98 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef72, i32 0, i32 0 + %99 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef72, i32 0, i32 1 + store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.26, i32 0, i32 0), i8** %98 + store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.26, i32 0, i32 7), i8** %99 + %100 = load %StringRef, %StringRef* %tmp.StringRef72 + %101 = call i1 @"=="(%StringRef %97, %StringRef %100) + br i1 %101, label %if_then69, label %if_else70 if_then69: ; preds = %if_block68 - %101 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %101, i32 13) + %102 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.313(%TokenType* %102, i32 13) ret void if_else70: ; preds = %if_block68 @@ -14917,18 +14748,18 @@ dumy_block73: ; No predecessors! br label %if_end71 if_block74: ; preds = %if_else70 - %102 = load %StringRef*, %StringRef** %data - %103 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef78, i32 0, i32 0 - %104 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef78, i32 0, i32 1 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.27, i32 0, i32 0), i8** %103 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.27, i32 0, i32 3), i8** %104 - %105 = load %StringRef, %StringRef* %tmp.StringRef78 - %106 = call i1 @"=="(%StringRef* %102, %StringRef %105) - br i1 %106, label %if_then75, label %if_else76 + %103 = load %StringRef, %StringRef* %data + %104 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef78, i32 0, i32 0 + %105 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef78, i32 0, i32 1 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.27, i32 0, i32 0), i8** %104 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.27, i32 0, i32 3), i8** %105 + %106 = load %StringRef, %StringRef* %tmp.StringRef78 + %107 = call i1 @"=="(%StringRef %103, %StringRef %106) + br i1 %107, label %if_then75, label %if_else76 if_then75: ; preds = %if_block74 - %107 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %107, i32 14) + %108 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.313(%TokenType* %108, i32 14) ret void if_else76: ; preds = %if_block74 @@ -14941,18 +14772,18 @@ dumy_block79: ; No predecessors! br label %if_end77 if_block80: ; preds = %if_else76 - %108 = load %StringRef*, %StringRef** %data - %109 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef84, i32 0, i32 0 - %110 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef84, i32 0, i32 1 - store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.28, i32 0, i32 0), i8** %109 - store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.28, i32 0, i32 6), i8** %110 - %111 = load %StringRef, %StringRef* %tmp.StringRef84 - %112 = call i1 @"=="(%StringRef* %108, %StringRef %111) - br i1 %112, label %if_then81, label %if_else82 + %109 = load %StringRef, %StringRef* %data + %110 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef84, i32 0, i32 0 + %111 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef84, i32 0, i32 1 + store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.28, i32 0, i32 0), i8** %110 + store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.28, i32 0, i32 6), i8** %111 + %112 = load %StringRef, %StringRef* %tmp.StringRef84 + %113 = call i1 @"=="(%StringRef %109, %StringRef %112) + br i1 %113, label %if_then81, label %if_else82 if_then81: ; preds = %if_block80 - %113 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %113, i32 3) + %114 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.313(%TokenType* %114, i32 3) ret void if_else82: ; preds = %if_block80 @@ -14965,18 +14796,18 @@ dumy_block85: ; No predecessors! br label %if_end83 if_block86: ; preds = %if_else82 - %114 = load %StringRef*, %StringRef** %data - %115 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef90, i32 0, i32 0 - %116 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef90, i32 0, i32 1 - store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.29, i32 0, i32 0), i8** %115 - store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.29, i32 0, i32 6), i8** %116 - %117 = load %StringRef, %StringRef* %tmp.StringRef90 - %118 = call i1 @"=="(%StringRef* %114, %StringRef %117) - br i1 %118, label %if_then87, label %if_else88 + %115 = load %StringRef, %StringRef* %data + %116 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef90, i32 0, i32 0 + %117 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef90, i32 0, i32 1 + store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.29, i32 0, i32 0), i8** %116 + store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.29, i32 0, i32 6), i8** %117 + %118 = load %StringRef, %StringRef* %tmp.StringRef90 + %119 = call i1 @"=="(%StringRef %115, %StringRef %118) + br i1 %119, label %if_then87, label %if_else88 if_then87: ; preds = %if_block86 - %119 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %119, i32 2) + %120 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.313(%TokenType* %120, i32 2) ret void if_else88: ; preds = %if_block86 @@ -14989,18 +14820,18 @@ dumy_block91: ; No predecessors! br label %if_end89 if_block92: ; preds = %if_else88 - %120 = load %StringRef*, %StringRef** %data - %121 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef96, i32 0, i32 0 - %122 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef96, i32 0, i32 1 - store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str.30, i32 0, i32 0), i8** %121 - store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str.30, i32 0, i32 4), i8** %122 - %123 = load %StringRef, %StringRef* %tmp.StringRef96 - %124 = call i1 @"=="(%StringRef* %120, %StringRef %123) - br i1 %124, label %if_then93, label %if_else94 + %121 = load %StringRef, %StringRef* %data + %122 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef96, i32 0, i32 0 + %123 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef96, i32 0, i32 1 + store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str.30, i32 0, i32 0), i8** %122 + store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str.30, i32 0, i32 4), i8** %123 + %124 = load %StringRef, %StringRef* %tmp.StringRef96 + %125 = call i1 @"=="(%StringRef %121, %StringRef %124) + br i1 %125, label %if_then93, label %if_else94 if_then93: ; preds = %if_block92 - %125 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %125, i32 21) + %126 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.313(%TokenType* %126, i32 21) ret void if_else94: ; preds = %if_block92 @@ -15013,18 +14844,18 @@ dumy_block97: ; No predecessors! br label %if_end95 if_block98: ; preds = %if_else94 - %126 = load %StringRef*, %StringRef** %data - %127 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef102, i32 0, i32 0 - %128 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef102, i32 0, i32 1 - store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.31, i32 0, i32 0), i8** %127 - store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.31, i32 0, i32 7), i8** %128 - %129 = load %StringRef, %StringRef* %tmp.StringRef102 - %130 = call i1 @"=="(%StringRef* %126, %StringRef %129) - br i1 %130, label %if_then99, label %if_else100 + %127 = load %StringRef, %StringRef* %data + %128 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef102, i32 0, i32 0 + %129 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef102, i32 0, i32 1 + store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.31, i32 0, i32 0), i8** %128 + store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.31, i32 0, i32 7), i8** %129 + %130 = load %StringRef, %StringRef* %tmp.StringRef102 + %131 = call i1 @"=="(%StringRef %127, %StringRef %130) + br i1 %131, label %if_then99, label %if_else100 if_then99: ; preds = %if_block98 - %131 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %131, i32 7) + %132 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.313(%TokenType* %132, i32 7) ret void if_else100: ; preds = %if_block98 @@ -15037,18 +14868,18 @@ dumy_block103: ; No predecessors! br label %if_end101 if_block104: ; preds = %if_else100 - %132 = load %StringRef*, %StringRef** %data - %133 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef108, i32 0, i32 0 - %134 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef108, i32 0, i32 1 - store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.32, i32 0, i32 0), i8** %133 - store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.32, i32 0, i32 6), i8** %134 - %135 = load %StringRef, %StringRef* %tmp.StringRef108 - %136 = call i1 @"=="(%StringRef* %132, %StringRef %135) - br i1 %136, label %if_then105, label %if_else106 + %133 = load %StringRef, %StringRef* %data + %134 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef108, i32 0, i32 0 + %135 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef108, i32 0, i32 1 + store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.32, i32 0, i32 0), i8** %134 + store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.32, i32 0, i32 6), i8** %135 + %136 = load %StringRef, %StringRef* %tmp.StringRef108 + %137 = call i1 @"=="(%StringRef %133, %StringRef %136) + br i1 %137, label %if_then105, label %if_else106 if_then105: ; preds = %if_block104 - %137 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %137, i32 16) + %138 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.313(%TokenType* %138, i32 16) ret void if_else106: ; preds = %if_block104 @@ -15061,18 +14892,18 @@ dumy_block109: ; No predecessors! br label %if_end107 if_block110: ; preds = %if_else106 - %138 = load %StringRef*, %StringRef** %data - %139 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef114, i32 0, i32 0 - %140 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef114, i32 0, i32 1 - store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.33, i32 0, i32 0), i8** %139 - store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.33, i32 0, i32 5), i8** %140 - %141 = load %StringRef, %StringRef* %tmp.StringRef114 - %142 = call i1 @"=="(%StringRef* %138, %StringRef %141) - br i1 %142, label %if_then111, label %if_else112 + %139 = load %StringRef, %StringRef* %data + %140 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef114, i32 0, i32 0 + %141 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef114, i32 0, i32 1 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.33, i32 0, i32 0), i8** %140 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.33, i32 0, i32 5), i8** %141 + %142 = load %StringRef, %StringRef* %tmp.StringRef114 + %143 = call i1 @"=="(%StringRef %139, %StringRef %142) + br i1 %143, label %if_then111, label %if_else112 if_then111: ; preds = %if_block110 - %143 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %143, i32 17) + %144 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.313(%TokenType* %144, i32 17) ret void if_else112: ; preds = %if_block110 @@ -15085,18 +14916,18 @@ dumy_block115: ; No predecessors! br label %if_end113 if_block116: ; preds = %if_else112 - %144 = load %StringRef*, %StringRef** %data - %145 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef120, i32 0, i32 0 - %146 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef120, i32 0, i32 1 - store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str.34, i32 0, i32 0), i8** %145 - store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str.34, i32 0, i32 4), i8** %146 - %147 = load %StringRef, %StringRef* %tmp.StringRef120 - %148 = call i1 @"=="(%StringRef* %144, %StringRef %147) - br i1 %148, label %if_then117, label %if_else118 + %145 = load %StringRef, %StringRef* %data + %146 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef120, i32 0, i32 0 + %147 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef120, i32 0, i32 1 + store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str.34, i32 0, i32 0), i8** %146 + store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str.34, i32 0, i32 4), i8** %147 + %148 = load %StringRef, %StringRef* %tmp.StringRef120 + %149 = call i1 @"=="(%StringRef %145, %StringRef %148) + br i1 %149, label %if_then117, label %if_else118 if_then117: ; preds = %if_block116 - %149 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %149, i32 22) + %150 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.313(%TokenType* %150, i32 22) ret void if_else118: ; preds = %if_block116 @@ -15109,18 +14940,18 @@ dumy_block121: ; No predecessors! br label %if_end119 if_block122: ; preds = %if_else118 - %150 = load %StringRef*, %StringRef** %data - %151 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef126, i32 0, i32 0 - %152 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef126, i32 0, i32 1 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.35, i32 0, i32 0), i8** %151 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.35, i32 0, i32 3), i8** %152 - %153 = load %StringRef, %StringRef* %tmp.StringRef126 - %154 = call i1 @"=="(%StringRef* %150, %StringRef %153) - br i1 %154, label %if_then123, label %if_else124 + %151 = load %StringRef, %StringRef* %data + %152 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef126, i32 0, i32 0 + %153 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef126, i32 0, i32 1 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.35, i32 0, i32 0), i8** %152 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.35, i32 0, i32 3), i8** %153 + %154 = load %StringRef, %StringRef* %tmp.StringRef126 + %155 = call i1 @"=="(%StringRef %151, %StringRef %154) + br i1 %155, label %if_then123, label %if_else124 if_then123: ; preds = %if_block122 - %155 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %155, i32 18) + %156 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.313(%TokenType* %156, i32 18) ret void if_else124: ; preds = %if_block122 @@ -15133,18 +14964,18 @@ dumy_block127: ; No predecessors! br label %if_end125 if_block128: ; preds = %if_else124 - %156 = load %StringRef*, %StringRef** %data - %157 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef132, i32 0, i32 0 - %158 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef132, i32 0, i32 1 - store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.36, i32 0, i32 0), i8** %157 - store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.36, i32 0, i32 5), i8** %158 - %159 = load %StringRef, %StringRef* %tmp.StringRef132 - %160 = call i1 @"=="(%StringRef* %156, %StringRef %159) - br i1 %160, label %if_then129, label %if_else130 + %157 = load %StringRef, %StringRef* %data + %158 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef132, i32 0, i32 0 + %159 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef132, i32 0, i32 1 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.36, i32 0, i32 0), i8** %158 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.36, i32 0, i32 5), i8** %159 + %160 = load %StringRef, %StringRef* %tmp.StringRef132 + %161 = call i1 @"=="(%StringRef %157, %StringRef %160) + br i1 %161, label %if_then129, label %if_else130 if_then129: ; preds = %if_block128 - %161 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %161, i32 8) + %162 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.313(%TokenType* %162, i32 8) ret void if_else130: ; preds = %if_block128 @@ -15157,18 +14988,18 @@ dumy_block133: ; No predecessors! br label %if_end131 if_block134: ; preds = %if_else130 - %162 = load %StringRef*, %StringRef** %data - %163 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef138, i32 0, i32 0 - %164 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef138, i32 0, i32 1 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.37, i32 0, i32 0), i8** %163 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.37, i32 0, i32 3), i8** %164 - %165 = load %StringRef, %StringRef* %tmp.StringRef138 - %166 = call i1 @"=="(%StringRef* %162, %StringRef %165) - br i1 %166, label %if_then135, label %if_else136 + %163 = load %StringRef, %StringRef* %data + %164 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef138, i32 0, i32 0 + %165 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef138, i32 0, i32 1 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.37, i32 0, i32 0), i8** %164 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.37, i32 0, i32 3), i8** %165 + %166 = load %StringRef, %StringRef* %tmp.StringRef138 + %167 = call i1 @"=="(%StringRef %163, %StringRef %166) + br i1 %167, label %if_then135, label %if_else136 if_then135: ; preds = %if_block134 - %167 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %167, i32 9) + %168 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.313(%TokenType* %168, i32 9) ret void if_else136: ; preds = %if_block134 @@ -15181,23 +15012,23 @@ dumy_block139: ; No predecessors! br label %if_end137 if_block140: ; preds = %if_else136 - %168 = load %StringRef*, %StringRef** %data - %169 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef144, i32 0, i32 0 - %170 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef144, i32 0, i32 1 - store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.38, i32 0, i32 0), i8** %169 - store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.38, i32 0, i32 5), i8** %170 - %171 = load %StringRef, %StringRef* %tmp.StringRef144 - %172 = call i1 @"=="(%StringRef* %168, %StringRef %171) - br i1 %172, label %if_then141, label %if_else142 + %169 = load %StringRef, %StringRef* %data + %170 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef144, i32 0, i32 0 + %171 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef144, i32 0, i32 1 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.38, i32 0, i32 0), i8** %170 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.38, i32 0, i32 5), i8** %171 + %172 = load %StringRef, %StringRef* %tmp.StringRef144 + %173 = call i1 @"=="(%StringRef %169, %StringRef %172) + br i1 %173, label %if_then141, label %if_else142 if_then141: ; preds = %if_block140 - %173 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %173, i32 19) + %174 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.313(%TokenType* %174, i32 19) ret void if_else142: ; preds = %if_block140 - %174 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %174, i32 36) + %175 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.313(%TokenType* %175, i32 36) ret void if_end143: ; preds = %dumy_block146, %dumy_block145 @@ -15223,27 +15054,26 @@ define void @parseNumeric(%TokenType* sret %_result, %"SparrowScanner[_CharSourc %ch = alloca i8 %ch2 = alloca i8 %ch3 = alloca i8 - %tmp.v = alloca i32 - %tmp.v1 = alloca i64 - %tmp.v2 = alloca i64 - %tmp.v11 = alloca i64 - %tmp.v12 = alloca i64 - %tmp.v21 = alloca i64 - %tmp.v22 = alloca i64 - %tmp.v23 = alloca i64 + %tmp.this = alloca i32 + %tmp.this1 = alloca i64 + %tmp.this2 = alloca i64 + %tmp.this11 = alloca i64 + %tmp.this12 = alloca i64 + %tmp.this21 = alloca i64 + %tmp.this22 = alloca i64 + %tmp.this23 = alloca i64 %funptr = alloca i1 (i8)* %funptr55 = alloca i1 (i8)* - %tmp.v69 = alloca %String + %tmp.this69 = alloca %String %"$tmpForRef" = alloca %StringRef %tmp.StringRef = alloca %StringRef - %tmp.v90 = alloca i8 - %"$tmpC" = alloca %StringRef - %tmp.v91 = alloca %TokenType - %tmp.v92 = alloca %TokenType - %tmp.v104 = alloca %TokenType - %tmp.v105 = alloca %TokenType - %tmp.v117 = alloca %TokenType - %tmp.v118 = alloca %TokenType + %tmp.this90 = alloca i8 + %tmp.this91 = alloca %TokenType + %tmp.this92 = alloca %TokenType + %tmp.this104 = alloca %TokenType + %tmp.this105 = alloca %TokenType + %tmp.this117 = alloca %TokenType + %tmp.this118 = alloca %TokenType br label %code code: ; preds = %0 @@ -15260,9 +15090,9 @@ code: ; preds = %0 %6 = call i8 @toLower(i8 %5) store i8 %6, i8* %ch2 %7 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - store i32 2, i32* %tmp.v - %8 = load i32, i32* %tmp.v - %9 = call i8 @peekChar.375(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %7, i32 %8) + store i32 2, i32* %tmp.this + %8 = load i32, i32* %tmp.this + %9 = call i8 @peekChar.369(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %7, i32 %8) %10 = call i8 @toLower(i8 %9) store i8 %10, i8* %ch3 br label %if_block @@ -15275,13 +15105,13 @@ if_block: ; preds = %code if_then: ; preds = %cond.end %13 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %14 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %13, i32 0, i32 1 - store i64 2, i64* %tmp.v1 - %15 = load i64, i64* %tmp.v1 - call void @advance.368(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %14, i64 %15) + store i64 2, i64* %tmp.this1 + %15 = load i64, i64* %tmp.this1 + call void @advance.362(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %14, i64 %15) %16 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %17 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %16, i32 0, i32 1 - store i64 16, i64* %tmp.v2 - %18 = load i64, i64* %tmp.v2 + store i64 16, i64* %tmp.this2 + %18 = load i64, i64* %tmp.this2 %19 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %20 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %19, i32 0, i32 2 %21 = getelementptr inbounds %Token, %Token* %20, i32 0, i32 2 @@ -15318,13 +15148,13 @@ if_block3: ; preds = %if_else if_then4: ; preds = %cond.end9 %30 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %31 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %30, i32 0, i32 1 - store i64 2, i64* %tmp.v11 - %32 = load i64, i64* %tmp.v11 - call void @advance.368(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %31, i64 %32) + store i64 2, i64* %tmp.this11 + %32 = load i64, i64* %tmp.this11 + call void @advance.362(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %31, i64 %32) %33 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %34 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %33, i32 0, i32 1 - store i64 2, i64* %tmp.v12 - %35 = load i64, i64* %tmp.v12 + store i64 2, i64* %tmp.this12 + %35 = load i64, i64* %tmp.this12 %36 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %37 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %36, i32 0, i32 2 %38 = getelementptr inbounds %Token, %Token* %37, i32 0, i32 2 @@ -15361,13 +15191,13 @@ if_block13: ; preds = %if_else5 if_then14: ; preds = %cond.end19 %47 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %48 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %47, i32 0, i32 1 - store i64 1, i64* %tmp.v21 - %49 = load i64, i64* %tmp.v21 - call void @advance.368(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %48, i64 %49) + store i64 1, i64* %tmp.this21 + %49 = load i64, i64* %tmp.this21 + call void @advance.362(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %48, i64 %49) %50 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %51 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %50, i32 0, i32 1 - store i64 8, i64* %tmp.v22 - %52 = load i64, i64* %tmp.v22 + store i64 8, i64* %tmp.this22 + %52 = load i64, i64* %tmp.this22 %53 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %54 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %53, i32 0, i32 2 %55 = getelementptr inbounds %Token, %Token* %54, i32 0, i32 2 @@ -15381,8 +15211,8 @@ if_then14: ; preds = %cond.end19 if_else15: ; preds = %cond.end19 %60 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %61 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %60, i32 0, i32 1 - store i64 10, i64* %tmp.v23 - %62 = load i64, i64* %tmp.v23 + store i64 10, i64* %tmp.this23 + %62 = load i64, i64* %tmp.this23 %63 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %64 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %63, i32 0, i32 2 %65 = getelementptr inbounds %Token, %Token* %64, i32 0, i32 2 @@ -15411,7 +15241,7 @@ cond.end19: ; preds = %cond.false18, %cond if_block24: ; preds = %if_else15 %72 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %73 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %72, i32 0, i32 1 - %74 = call i1 @"pre_!!.344"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %73) + %74 = call i1 @"pre_!!.338"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %73) br i1 %74, label %if_then25, label %if_end26 if_then25: ; preds = %if_block24 @@ -15508,7 +15338,7 @@ if_end48: ; preds = %if_then47, %if_bloc if_block49: ; preds = %if_end48 %97 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %98 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %97, i32 0, i32 1 - %99 = call i1 @"pre_!!.344"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %98) + %99 = call i1 @"pre_!!.338"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %98) br i1 %99, label %if_then50, label %if_end51 if_then50: ; preds = %if_block49 @@ -15543,7 +15373,7 @@ if_end54: ; preds = %if_then53, %if_bloc if_block56: ; preds = %if_end51 %110 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %111 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %110, i32 0, i32 1 - %112 = call i1 @"pre_!!.344"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %111) + %112 = call i1 @"pre_!!.338"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %111) br i1 %112, label %if_then57, label %if_end58 if_then57: ; preds = %if_block56 @@ -15567,7 +15397,7 @@ if_then60: ; preds = %if_block59 store i1 false, i1* %isLong %119 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %120 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %119, i32 0, i32 1 - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %120) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %120) br label %if_end62 if_else61: ; preds = %if_block59 @@ -15584,7 +15414,7 @@ if_block63: ; preds = %if_else61 if_then64: ; preds = %if_block63 %123 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %124 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %123, i32 0, i32 1 - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %124) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %124) br label %if_end65 if_end65: ; preds = %if_then64, %if_block63 @@ -15594,7 +15424,7 @@ if_block66: ; preds = %if_end %125 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %126 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %125, i32 0, i32 2 %127 = getelementptr inbounds %Token, %Token* %126, i32 0, i32 2 - %128 = call i1 @isEmpty.376(%String* %127) + %128 = call i1 @isEmpty.370(%String* %127) br i1 %128, label %if_then67, label %if_end68 if_then67: ; preds = %if_block66 @@ -15605,11 +15435,11 @@ if_then67: ; preds = %if_block66 store i8* getelementptr inbounds ([24 x i8], [24 x i8]* @str.39, i32 0, i32 23), i8** %131 %132 = load %StringRef, %StringRef* %tmp.StringRef store %StringRef %132, %StringRef* %"$tmpForRef" - call void @ctor.370(%String* %tmp.v69, %StringRef* %"$tmpForRef") - call void @reportError.352(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %129, %String* %tmp.v69) - call void @dtor.229(%String* %tmp.v69) + call void @ctor.364(%String* %tmp.this69, %StringRef* %"$tmpForRef") + call void @reportError.346(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %129, %String* %tmp.this69) + call void @dtor.218(%String* %tmp.this69) %133 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %133, i32 0) + call void @ctor.313(%TokenType* %133, i32 0) ret void if_end68: ; preds = %dumy_block, %if_block66 @@ -15632,14 +15462,14 @@ if_end72: ; preds = %if_end82, %if_block if_block73: ; preds = %if_then71 %136 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %137 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %136, i32 0, i32 1 - %138 = call i1 @"pre_!!.344"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %137) + %138 = call i1 @"pre_!!.338"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %137) br i1 %138, label %cond.true76, label %cond.false77 if_then74: ; preds = %cond.end78 store i1 true, i1* %isUnsigned %139 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %140 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %139, i32 0, i32 1 - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %140) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %140) br label %if_end75 if_end75: ; preds = %if_then74, %cond.end78 @@ -15663,14 +15493,14 @@ cond.end78: ; preds = %cond.false77, %cond if_block80: ; preds = %if_end75 %146 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %147 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %146, i32 0, i32 1 - %148 = call i1 @"pre_!!.344"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %147) + %148 = call i1 @"pre_!!.338"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %147) br i1 %148, label %cond.true83, label %cond.false84 if_then81: ; preds = %cond.end85 store i1 true, i1* %isLong %149 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %150 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %149, i32 0, i32 1 - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %150) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %150) br label %if_end82 if_end82: ; preds = %if_then81, %cond.end85 @@ -15699,14 +15529,13 @@ if_then88: ; preds = %if_block87 %157 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %158 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %157, i32 0, i32 2 %159 = getelementptr inbounds %Token, %Token* %158, i32 0, i32 2 - store i8 0, i8* %tmp.v90 - %160 = load i8, i8* %tmp.v90 - call void @"+=.372"(%String* %159, i8 %160) + store i8 0, i8* %tmp.this90 + %160 = load i8, i8* %tmp.this90 + call void @"+=.366"(%String* %159, i8 %160) %161 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %162 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %161, i32 0, i32 2 %163 = getelementptr inbounds %Token, %Token* %162, i32 0, i32 2 - call void @asStringRef(%StringRef* %"$tmpC", %String* %163) - %164 = load %StringRef, %StringRef* %"$tmpC" + %164 = call %StringRef @asStringRef(%String* %163) %165 = call double @asDouble(%StringRef %164) %166 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %167 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %166, i32 0, i32 2 @@ -15715,7 +15544,7 @@ if_then88: ; preds = %if_block87 %169 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %170 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %169, i32 0, i32 2 %171 = getelementptr inbounds %Token, %Token* %170, i32 0, i32 2 - call void @popBack.377(%String* %171) + call void @popBack.371(%String* %171) %172 = load %TokenType*, %TokenType** %_result.addr %173 = load i1, i1* %isLong br i1 %173, label %cond_alt1, label %cond_alt2 @@ -15724,16 +15553,16 @@ if_end89: ; preds = %cond_destruct_end95 br label %if_block97 cond_alt1: ; preds = %if_then88 - call void @ctor.319(%TokenType* %tmp.v91, i32 45) + call void @ctor.313(%TokenType* %tmp.this91, i32 45) br label %cond_end cond_alt2: ; preds = %if_then88 - call void @ctor.319(%TokenType* %tmp.v92, i32 44) + call void @ctor.313(%TokenType* %tmp.this92, i32 44) br label %cond_end cond_end: ; preds = %cond_alt2, %cond_alt1 - %cond = phi %TokenType* [ %tmp.v91, %cond_alt1 ], [ %tmp.v92, %cond_alt2 ] - call void @ctor.191(%TokenType* %172, %TokenType* %cond) + %cond = phi %TokenType* [ %tmp.this91, %cond_alt1 ], [ %tmp.this92, %cond_alt2 ] + call void @ctor.183(%TokenType* %172, %TokenType* %cond) br i1 %173, label %cond_destruct_alt1, label %cond_destruct_alt2 cond_destruct_alt1: ; preds = %cond_end @@ -15775,16 +15604,16 @@ if_end100: ; preds = %cond_destruct_end12 ret void cond_alt1101: ; preds = %if_then98 - call void @ctor.319(%TokenType* %tmp.v104, i32 43) + call void @ctor.313(%TokenType* %tmp.this104, i32 43) br label %cond_end103 cond_alt2102: ; preds = %if_then98 - call void @ctor.319(%TokenType* %tmp.v105, i32 42) + call void @ctor.313(%TokenType* %tmp.this105, i32 42) br label %cond_end103 cond_end103: ; preds = %cond_alt2102, %cond_alt1101 - %cond106 = phi %TokenType* [ %tmp.v104, %cond_alt1101 ], [ %tmp.v105, %cond_alt2102 ] - call void @ctor.191(%TokenType* %175, %TokenType* %cond106) + %cond106 = phi %TokenType* [ %tmp.this104, %cond_alt1101 ], [ %tmp.this105, %cond_alt2102 ] + call void @ctor.183(%TokenType* %175, %TokenType* %cond106) br i1 %176, label %cond_destruct_alt1107, label %cond_destruct_alt2108 cond_destruct_alt1107: ; preds = %cond_end103 @@ -15809,16 +15638,16 @@ dumy_block113: ; No predecessors! br i1 %176, label %cond_destruct_alt1110, label %cond_destruct_alt2111 cond_alt1114: ; preds = %if_else99 - call void @ctor.319(%TokenType* %tmp.v117, i32 41) + call void @ctor.313(%TokenType* %tmp.this117, i32 41) br label %cond_end116 cond_alt2115: ; preds = %if_else99 - call void @ctor.319(%TokenType* %tmp.v118, i32 40) + call void @ctor.313(%TokenType* %tmp.this118, i32 40) br label %cond_end116 cond_end116: ; preds = %cond_alt2115, %cond_alt1114 - %cond119 = phi %TokenType* [ %tmp.v117, %cond_alt1114 ], [ %tmp.v118, %cond_alt2115 ] - call void @ctor.191(%TokenType* %177, %TokenType* %cond119) + %cond119 = phi %TokenType* [ %tmp.this117, %cond_alt1114 ], [ %tmp.this118, %cond_alt2115 ] + call void @ctor.183(%TokenType* %177, %TokenType* %cond119) br i1 %178, label %cond_destruct_alt1120, label %cond_destruct_alt2121 cond_destruct_alt1120: ; preds = %cond_end116 @@ -15852,9 +15681,9 @@ define internal i64 @consumeDigits(%"LocationSyncCharRange[RangeWithLookahead[_C %capture.addr = alloca %String* store %String* %capture, %String** %capture.addr %res = alloca i64 - %tmp.v = alloca i64 - %tmp.v8 = alloca i64 - %tmp.v24 = alloca i64 + %tmp.this = alloca i64 + %tmp.this8 = alloca i64 + %tmp.this24 = alloca i64 br label %code code: ; preds = %0 @@ -15863,8 +15692,8 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load i64, i64* %base.addr - store i64 16, i64* %tmp.v - %2 = load i64, i64* %tmp.v + store i64 16, i64* %tmp.this + %2 = load i64, i64* %tmp.this %3 = icmp eq i64 %1, %2 br i1 %3, label %if_then, label %if_else @@ -15880,7 +15709,7 @@ if_end: ; preds = %while_end12, %while while_block: ; preds = %while_step, %if_then %5 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr - %6 = call i1 @"pre_!!.344"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5) + %6 = call i1 @"pre_!!.338"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5) br i1 %6, label %cond.true, label %cond.false while_body: ; preds = %cond.end @@ -15888,7 +15717,7 @@ while_body: ; preds = %cond.end while_step: ; preds = %if_end7 %7 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %7) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %7) br label %while_block while_end: ; preds = %cond.end @@ -15930,7 +15759,7 @@ if_then6: ; preds = %if_block5 %17 = load %String*, %String** %capture.addr %18 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr %19 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %18) - call void @"+=.372"(%String* %17, i8 %19) + call void @"+=.366"(%String* %17, i8 %19) %20 = load i64, i64* %res %21 = load i64, i64* %base.addr %22 = mul i64 %20, %21 @@ -15940,8 +15769,8 @@ if_then6: ; preds = %if_block5 %25 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %24) %26 = call i32 @getXdigitVal(i8 %25) %27 = zext i32 %26 to i64 - store i64 %27, i64* %tmp.v8 - %28 = load i64, i64* %tmp.v8 + store i64 %27, i64* %tmp.this8 + %28 = load i64, i64* %tmp.this8 %29 = add i64 %23, %28 store i64 %29, i64* %res br label %if_end7 @@ -15951,7 +15780,7 @@ if_end7: ; preds = %if_then6, %if_block while_block9: ; preds = %while_step11, %if_else %30 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr - %31 = call i1 @"pre_!!.344"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %30) + %31 = call i1 @"pre_!!.338"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %30) br i1 %31, label %cond.true13, label %cond.false14 while_body10: ; preds = %cond.end15 @@ -15959,7 +15788,7 @@ while_body10: ; preds = %cond.end15 while_step11: ; preds = %if_end23 %32 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %32) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %32) br label %while_block9 while_end12: ; preds = %cond.end15 @@ -16001,7 +15830,7 @@ if_then22: ; preds = %if_block21 %42 = load %String*, %String** %capture.addr %43 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr %44 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %43) - call void @"+=.372"(%String* %42, i8 %44) + call void @"+=.366"(%String* %42, i8 %44) %45 = load i64, i64* %res %46 = load i64, i64* %base.addr %47 = mul i64 %45, %46 @@ -16011,8 +15840,8 @@ if_then22: ; preds = %if_block21 %50 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %49) %51 = call i32 @getDigitVal(i8 %50) %52 = zext i32 %51 to i64 - store i64 %52, i64* %tmp.v24 - %53 = load i64, i64* %tmp.v24 + store i64 %52, i64* %tmp.this24 + %53 = load i64, i64* %tmp.this24 %54 = add i64 %48, %53 store i64 %54, i64* %res br label %if_end23 @@ -16025,13 +15854,13 @@ if_end23: ; preds = %if_then22, %if_bloc define internal i1 @isXdigit(i8 %c) #4 { %c.addr = alloca i8 store i8 %c, i8* %c.addr - %tmp.v = alloca i32 + %tmp.this = alloca i32 br label %code code: ; preds = %0 %1 = load i8, i8* %c.addr - call void @_ass_32_8z(i32* %tmp.v, i8 %1) - %2 = load i32, i32* %tmp.v + call void @_ass_32_8z(i32* %tmp.this, i8 %1) + %2 = load i32, i32* %tmp.this %3 = call i32 @isxdigit(i32 %2) %4 = icmp ne i32 0, %3 ret i1 %4 @@ -16043,16 +15872,16 @@ declare i32 @isxdigit(i32) define internal i32 @getDigitVal(i8 %c) #4 { %c.addr = alloca i8 store i8 %c, i8* %c.addr - %tmp.v = alloca i32 - %tmp.v1 = alloca i32 + %tmp.this = alloca i32 + %tmp.this1 = alloca i32 br label %code code: ; preds = %0 %1 = load i8, i8* %c.addr - call void @_ass_32_8z(i32* %tmp.v, i8 %1) - %2 = load i32, i32* %tmp.v - call void @_ass_32_8z(i32* %tmp.v1, i8 48) - %3 = load i32, i32* %tmp.v1 + call void @_ass_32_8z(i32* %tmp.this, i8 %1) + %2 = load i32, i32* %tmp.this + call void @_ass_32_8z(i32* %tmp.this1, i8 48) + %3 = load i32, i32* %tmp.this1 %4 = sub i32 %2, %3 ret i32 %4 } @@ -16071,7 +15900,7 @@ code: ; preds = %0 while_block: ; preds = %while_step, %code %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 1 - %3 = call i1 @"pre_!!.344"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %2) + %3 = call i1 @"pre_!!.338"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %2) br i1 %3, label %cond.true, label %cond.false while_body: ; preds = %cond.end @@ -16080,7 +15909,7 @@ while_body: ; preds = %cond.end while_step: ; preds = %if_end %4 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %5 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %4, i32 0, i32 1 - call void @popFront.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5) + call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5) br label %while_block while_end: ; preds = %cond.end @@ -16090,7 +15919,7 @@ cond.true: ; preds = %while_block %6 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %7 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %6, i32 0, i32 1 %8 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %7) - %9 = call i1 @"().374"(%"FunctionPtr1[Bool, Char]"* %pred.addr, i8 %8) + %9 = call i1 @"().368"(%"FunctionPtr1[Bool, Char]"* %pred.addr, i8 %8) br i1 %9, label %cond.true1, label %cond.false2 cond.false: ; preds = %while_block @@ -16128,7 +15957,7 @@ if_then: ; preds = %if_block %21 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr %22 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %21, i32 0, i32 1 %23 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %22) - call void @"+=.372"(%String* %20, i8 %23) + call void @"+=.366"(%String* %20, i8 %23) br label %if_end if_end: ; preds = %if_then, %if_block @@ -16136,7 +15965,7 @@ if_end: ; preds = %if_then, %if_block } ; Function Attrs: inlinehint nounwind -define internal i1 @isEmpty.376(%String* %this) #4 { +define internal i1 @isEmpty.370(%String* %this) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr br label %code @@ -16146,16 +15975,16 @@ code: ; preds = %0 %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 0 %3 = load %String*, %String** %this.addr %4 = getelementptr inbounds %String, %String* %3, i32 0, i32 1 - %5 = call i1 @"==.188"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) + %5 = call i1 @"==.225"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) ret i1 %5 } ; Function Attrs: inlinehint nounwind -define internal void @popBack.377(%String* %this) #4 { +define internal void @popBack.371(%String* %this) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr %"$tmpC" = alloca %"RawPtr[Char]" - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -16164,10 +15993,10 @@ code: ; preds = %0 %3 = load %String*, %String** %this.addr %4 = getelementptr inbounds %String, %String* %3, i32 0, i32 1 %5 = load %"RawPtr[Char]", %"RawPtr[Char]"* %4 - store i64 -1, i64* %tmp.v - %6 = load i64, i64* %tmp.v - call void @advance.195(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %5, i64 %6) - call void @"=.184"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %"$tmpC") + store i64 -1, i64* %tmp.this + %6 = load i64, i64* %tmp.this + call void @advance.187(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %5, i64 %6) + call void @"=.178"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %"$tmpC") %7 = load %String*, %String** %this.addr %8 = getelementptr inbounds %String, %String* %7, i32 0, i32 1 %9 = load %"RawPtr[Char]", %"RawPtr[Char]"* %8 @@ -16177,7 +16006,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @toString.378(%String* sret %_result, %StringRef %a1, i8 %a2, %StringRef %a3, i32 %a4, i8 %a5) #4 { +define internal void @toString.372(%String* sret %_result, %StringRef %a1, i8 %a2, %StringRef %a3, i32 %a4, i8 %a5) #4 { %_result.addr = alloca %String* store %String* %_result, %String** %_result.addr %a1.addr = alloca %StringRef @@ -16194,25 +16023,25 @@ define internal void @toString.378(%String* sret %_result, %StringRef %a1, i8 %a br label %code code: ; preds = %0 - call void @ctor.295(%StringOutputStream* %s) + call void @ctor.289(%StringOutputStream* %s) %1 = call %StringOutputStream* @"<<"(%StringOutputStream* %s, %StringRef* %a1.addr) - %2 = call %StringOutputStream* @"<<.379"(%StringOutputStream* %1, i8* %a2.addr) + %2 = call %StringOutputStream* @"<<.373"(%StringOutputStream* %1, i8* %a2.addr) %3 = call %StringOutputStream* @"<<"(%StringOutputStream* %2, %StringRef* %a3.addr) - %4 = call %StringOutputStream* @"<<.383"(%StringOutputStream* %3, i32* %a4.addr) - %5 = call %StringOutputStream* @"<<.379"(%StringOutputStream* %4, i8* %a5.addr) + %4 = call %StringOutputStream* @"<<.377"(%StringOutputStream* %3, i32* %a4.addr) + %5 = call %StringOutputStream* @"<<.373"(%StringOutputStream* %4, i8* %a5.addr) %6 = load %String*, %String** %_result.addr %7 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %s, i32 0, i32 0 - call void @ctor.192(%String* %6, %String* %7) - call void @dtor.297(%StringOutputStream* %s) + call void @ctor.184(%String* %6, %String* %7) + call void @dtor.291(%StringOutputStream* %s) ret void dumy_block: ; No predecessors! - call void @dtor.297(%StringOutputStream* %s) + call void @dtor.291(%StringOutputStream* %s) ret void } ; Function Attrs: inlinehint nounwind -define internal %StringOutputStream* @"<<.379"(%StringOutputStream* %s, i8* %x) #4 { +define internal %StringOutputStream* @"<<.373"(%StringOutputStream* %s, i8* %x) #4 { %s.addr = alloca %StringOutputStream* store %StringOutputStream* %s, %StringOutputStream** %s.addr %x.addr = alloca i8* @@ -16223,13 +16052,13 @@ code: ; preds = %0 %1 = load %StringOutputStream*, %StringOutputStream** %s.addr %2 = load i8*, i8** %x.addr %3 = load i8, i8* %2 - call void @"<<<.380"(%StringOutputStream* %1, i8 %3) + call void @"<<<.374"(%StringOutputStream* %1, i8 %3) %4 = load %StringOutputStream*, %StringOutputStream** %s.addr ret %StringOutputStream* %4 } ; Function Attrs: alwaysinline nounwind -define internal void @"<<<.380"(%StringOutputStream* %this, i8 %x) #3 { +define internal void @"<<<.374"(%StringOutputStream* %this, i8 %x) #3 { %this.addr = alloca %StringOutputStream* store %StringOutputStream* %this, %StringOutputStream** %this.addr %x.addr = alloca i8 @@ -16240,17 +16069,17 @@ code: ; preds = %0 %1 = load %StringOutputStream*, %StringOutputStream** %this.addr %2 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %1, i32 0, i32 0 %3 = load i8, i8* %x.addr - call void @append.381(%String* %2, i8 %3) + call void @append.375(%String* %2, i8 %3) ret void } ; Function Attrs: inlinehint nounwind -define internal void @append.381(%String* %this, i8 %value) #4 { +define internal void @append.375(%String* %this, i8 %value) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr %value.addr = alloca i8 store i8 %value, i8* %value.addr - %tmp.v = alloca %StringRef + %tmp.this = alloca %StringRef br label %code code: ; preds = %0 @@ -16264,14 +16093,14 @@ code: ; preds = %0 %8 = getelementptr inbounds %String, %String* %7, i32 0, i32 1 %9 = load %"RawPtr[Char]", %"RawPtr[Char]"* %8 %10 = call i8* @bytePtr(%"RawPtr[Char]" %9) - call void @ctor.57(%StringRef* %tmp.v, i8* %6, i8* %10) - %11 = load %StringRef, %StringRef* %tmp.v - call void @insertBefore.382(%String* %1, i8 %2, %StringRef %11) + call void @ctor.57(%StringRef* %tmp.this, i8* %6, i8* %10) + %11 = load %StringRef, %StringRef* %tmp.this + call void @insertBefore.376(%String* %1, i8 %2, %StringRef %11) ret void } ; Function Attrs: inlinehint nounwind -define internal void @insertBefore.382(%String* %this, i8 %value, %StringRef %pos) #4 { +define internal void @insertBefore.376(%String* %this, i8 %value, %StringRef %pos) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr %value.addr = alloca i8 @@ -16280,14 +16109,14 @@ define internal void @insertBefore.382(%String* %this, i8 %value, %StringRef %po store %StringRef %pos, %StringRef* %pos.addr %posCount = alloca i64 %"$tmpC" = alloca %"RawPtr[Char]" - %tmp.v = alloca i64 + %tmp.this = alloca i64 %p = alloca %"RawPtr[Char]" - %tmp.v1 = alloca i64 + %tmp.this1 = alloca i64 %q = alloca %"RawPtr[Char]" - %tmp.v2 = alloca i64 + %tmp.this2 = alloca i64 %"$tmpC3" = alloca %"RawPtr[Char]" %"$tmpC4" = alloca %"RawPtr[Char]" - %tmp.v5 = alloca i64 + %tmp.this5 = alloca i64 %"$tmpC6" = alloca %"RawPtr[Char]" %"$tmpC7" = alloca %"RawPtr[Char]" br label %code @@ -16303,29 +16132,29 @@ code: ; preds = %0 store i64 %6, i64* %posCount %7 = load %String*, %String** %this.addr %8 = load %String*, %String** %this.addr - %9 = call i64 @size.193(%String* %8) - store i64 1, i64* %tmp.v - %10 = load i64, i64* %tmp.v + %9 = call i64 @size.185(%String* %8) + store i64 1, i64* %tmp.this + %10 = load i64, i64* %tmp.this %11 = add i64 %9, %10 call void @reserve(%String* %7, i64 %11) %12 = load %String*, %String** %this.addr %13 = getelementptr inbounds %String, %String* %12, i32 0, i32 1 %14 = load %"RawPtr[Char]", %"RawPtr[Char]"* %13 - store i64 -1, i64* %tmp.v1 - %15 = load i64, i64* %tmp.v1 - call void @advance.195(%"RawPtr[Char]"* %p, %"RawPtr[Char]" %14, i64 %15) + store i64 -1, i64* %tmp.this1 + %15 = load i64, i64* %tmp.this1 + call void @advance.187(%"RawPtr[Char]"* %p, %"RawPtr[Char]" %14, i64 %15) %16 = load %String*, %String** %this.addr %17 = getelementptr inbounds %String, %String* %16, i32 0, i32 0 %18 = load %"RawPtr[Char]", %"RawPtr[Char]"* %17 %19 = load i64, i64* %posCount - store i64 1, i64* %tmp.v2 - %20 = load i64, i64* %tmp.v2 + store i64 1, i64* %tmp.this2 + %20 = load i64, i64* %tmp.this2 %21 = call i64 @_DiffType_opMinus(i64 %19, i64 %20) - call void @advance.195(%"RawPtr[Char]"* %q, %"RawPtr[Char]" %18, i64 %21) + call void @advance.187(%"RawPtr[Char]"* %q, %"RawPtr[Char]" %18, i64 %21) br label %while_block while_block: ; preds = %while_step, %code - %22 = call i1 @"==.188"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %q) + %22 = call i1 @"==.225"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %q) %23 = xor i1 true, %22 br i1 %23, label %while_body, label %while_end @@ -16334,7 +16163,7 @@ while_body: ; preds = %while_block %25 = call i8* @value(%"RawPtr[Char]" %24) %26 = load i8, i8* %25 %27 = load %"RawPtr[Char]", %"RawPtr[Char]"* %p - call void @advance.189(%"RawPtr[Char]"* %"$tmpC3", %"RawPtr[Char]" %27) + call void @advance.226(%"RawPtr[Char]"* %"$tmpC3", %"RawPtr[Char]" %27) %28 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC3" %29 = call i8* @value(%"RawPtr[Char]" %28) store i8 %26, i8* %29 @@ -16345,16 +16174,16 @@ while_body: ; preds = %while_block while_step: ; preds = %while_body %33 = load %"RawPtr[Char]", %"RawPtr[Char]"* %p - store i64 -1, i64* %tmp.v5 - %34 = load i64, i64* %tmp.v5 - call void @advance.195(%"RawPtr[Char]"* %"$tmpC4", %"RawPtr[Char]" %33, i64 %34) - call void @"=.184"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %"$tmpC4") + store i64 -1, i64* %tmp.this5 + %34 = load i64, i64* %tmp.this5 + call void @advance.187(%"RawPtr[Char]"* %"$tmpC4", %"RawPtr[Char]" %33, i64 %34) + call void @"=.178"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %"$tmpC4") br label %while_block while_end: ; preds = %while_block %35 = load i8, i8* %value.addr %36 = load %"RawPtr[Char]", %"RawPtr[Char]"* %p - call void @advance.189(%"RawPtr[Char]"* %"$tmpC6", %"RawPtr[Char]" %36) + call void @advance.226(%"RawPtr[Char]"* %"$tmpC6", %"RawPtr[Char]" %36) %37 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC6" %38 = call i8* @value(%"RawPtr[Char]" %37) store i8 %35, i8* %38 @@ -16363,13 +16192,13 @@ while_end: ; preds = %while_block %41 = load %String*, %String** %this.addr %42 = getelementptr inbounds %String, %String* %41, i32 0, i32 1 %43 = load %"RawPtr[Char]", %"RawPtr[Char]"* %42 - call void @advance.189(%"RawPtr[Char]"* %"$tmpC7", %"RawPtr[Char]" %43) - call void @"=.184"(%"RawPtr[Char]"* %40, %"RawPtr[Char]"* %"$tmpC7") + call void @advance.226(%"RawPtr[Char]"* %"$tmpC7", %"RawPtr[Char]" %43) + call void @"=.178"(%"RawPtr[Char]"* %40, %"RawPtr[Char]"* %"$tmpC7") ret void } ; Function Attrs: inlinehint nounwind -define internal %StringOutputStream* @"<<.383"(%StringOutputStream* %s, i32* %x) #4 { +define internal %StringOutputStream* @"<<.377"(%StringOutputStream* %s, i32* %x) #4 { %s.addr = alloca %StringOutputStream* store %StringOutputStream* %s, %StringOutputStream** %s.addr %x.addr = alloca i32* @@ -16380,53 +16209,50 @@ code: ; preds = %0 %1 = load %StringOutputStream*, %StringOutputStream** %s.addr %2 = load i32*, i32** %x.addr %3 = load i32, i32* %2 - call void @"<<<.384"(%StringOutputStream* %1, i32 %3) + call void @"<<<.378"(%StringOutputStream* %1, i32 %3) %4 = load %StringOutputStream*, %StringOutputStream** %s.addr ret %StringOutputStream* %4 } ; Function Attrs: alwaysinline nounwind -define internal void @"<<<.384"(%StringOutputStream* %this, i32 %x) #3 { +define internal void @"<<<.378"(%StringOutputStream* %this, i32 %x) #3 { %this.addr = alloca %StringOutputStream* store %StringOutputStream* %this, %StringOutputStream** %this.addr %x.addr = alloca i32 store i32 %x, i32* %x.addr - %"$tmpC" = alloca %StringRef - %"$tmpC1" = alloca %String + %"$tmpC" = alloca %String br label %code code: ; preds = %0 %1 = load %StringOutputStream*, %StringOutputStream** %this.addr %2 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %1, i32 0, i32 0 %3 = load i32, i32* %x.addr - call void @intToString(%String* %"$tmpC1", i32 %3) - call void @all.385(%StringRef* %"$tmpC", %String* %"$tmpC1") - %4 = load %StringRef, %StringRef* %"$tmpC" + call void @intToString(%String* %"$tmpC", i32 %3) + %4 = call %StringRef @all.379(%String* %"$tmpC") call void @append(%String* %2, %StringRef %4) - call void @dtor.229(%String* %"$tmpC1") + call void @dtor.218(%String* %"$tmpC") ret void } ; Function Attrs: inlinehint nounwind -define internal void @all.385(%StringRef* sret %_result, %String* %this) #4 { - %_result.addr = alloca %StringRef* - store %StringRef* %_result, %StringRef** %_result.addr +define internal %StringRef @all.379(%String* %this) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr + %tmp.this = alloca %StringRef br label %code code: ; preds = %0 - %1 = load %StringRef*, %StringRef** %_result.addr - %2 = load %String*, %String** %this.addr - %3 = getelementptr inbounds %String, %String* %2, i32 0, i32 0 - %4 = load %"RawPtr[Char]", %"RawPtr[Char]"* %3 - %5 = call i8* @bytePtr(%"RawPtr[Char]" %4) - %6 = load %String*, %String** %this.addr - %7 = getelementptr inbounds %String, %String* %6, i32 0, i32 1 - %8 = load %"RawPtr[Char]", %"RawPtr[Char]"* %7 - %9 = call i8* @bytePtr(%"RawPtr[Char]" %8) - call void @ctor.57(%StringRef* %1, i8* %5, i8* %9) - ret void + %1 = load %String*, %String** %this.addr + %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 0 + %3 = load %"RawPtr[Char]", %"RawPtr[Char]"* %2 + %4 = call i8* @bytePtr(%"RawPtr[Char]" %3) + %5 = load %String*, %String** %this.addr + %6 = getelementptr inbounds %String, %String* %5, i32 0, i32 1 + %7 = load %"RawPtr[Char]", %"RawPtr[Char]"* %6 + %8 = call i8* @bytePtr(%"RawPtr[Char]" %7) + call void @ctor.57(%StringRef* %tmp.this, i8* %4, i8* %8) + %9 = load %StringRef, %StringRef* %tmp.this + ret %StringRef %9 } ; Function Attrs: inlinehint nounwind @@ -16440,21 +16266,19 @@ define internal void @intToString(%String* sret %_result, i32 %x) #4 { br label %code code: ; preds = %0 - %1 = bitcast [12 x i8]* %buf to i8* - store i8 0, i8* %1 - %2 = load i32, i32* %x.addr - %3 = bitcast [12 x i8]* %buf to i8* - call void @_Int_to_CString(i32 %2, i8* %3) - %4 = load %String*, %String** %_result.addr - %5 = bitcast [12 x i8]* %buf to i8* - %6 = call %StringRef @_String_fromCString(i8* %5) - store %StringRef %6, %StringRef* %"$tmpForRef" - call void @ctor.370(%String* %4, %StringRef* %"$tmpForRef") + %1 = load i32, i32* %x.addr + %2 = bitcast [12 x i8]* %buf to i8* + call void @_Int_to_CString(i32 %1, i8* %2) + %3 = load %String*, %String** %_result.addr + %4 = bitcast [12 x i8]* %buf to i8* + %5 = call %StringRef @_String_fromCString(i8* %4) + store %StringRef %5, %StringRef* %"$tmpForRef" + call void @ctor.364(%String* %3, %StringRef* %"$tmpForRef") ret void } ; Function Attrs: inlinehint nounwind -define internal void @"+=.386"(%"Vector[UInt]"* %this, i32* %value) #4 { +define internal void @"+=.380"(%"Vector[UInt]"* %this, i32* %value) #4 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr %value.addr = alloca i32* @@ -16464,20 +16288,20 @@ define internal void @"+=.386"(%"Vector[UInt]"* %this, i32* %value) #4 { code: ; preds = %0 %1 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %2 = load i32*, i32** %value.addr - call void @pushBack.387(%"Vector[UInt]"* %1, i32* %2) + call void @pushBack.381(%"Vector[UInt]"* %1, i32* %2) ret void } ; Function Attrs: inlinehint nounwind -define internal void @pushBack.387(%"Vector[UInt]"* %this, i32* %value) #4 { +define internal void @pushBack.381(%"Vector[UInt]"* %this, i32* %value) #4 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr %value.addr = alloca i32* store i32* %value, i32** %value.addr %t = alloca i64 - %tmp.v = alloca i64 - %tmp.v4 = alloca i64 - %tmp.v5 = alloca i64 + %tmp.this = alloca i64 + %tmp.this4 = alloca i64 + %tmp.this5 = alloca i64 %"$tmpC" = alloca %"RawPtr[UInt]" br label %code @@ -16489,14 +16313,14 @@ if_block: ; preds = %code %2 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %1, i32 0, i32 1 %3 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %4 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %3, i32 0, i32 2 - %5 = call i1 @"==.221"(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %4) + %5 = call i1 @"==.228"(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %4) br i1 %5, label %if_then, label %if_end if_then: ; preds = %if_block - store i64 2, i64* %tmp.v - %6 = load i64, i64* %tmp.v + store i64 2, i64* %tmp.this + %6 = load i64, i64* %tmp.this %7 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr - %8 = call i64 @capacity.388(%"Vector[UInt]"* %7) + %8 = call i64 @capacity.382(%"Vector[UInt]"* %7) %9 = mul i64 %6, %8 store i64 %9, i64* %t br label %if_block1 @@ -16507,42 +16331,42 @@ if_end: ; preds = %if_end3, %if_block %12 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %13 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %12, i32 0, i32 1 %14 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %13 - %15 = call i32* @value.222(%"RawPtr[UInt]" %14) + %15 = call i32* @value.229(%"RawPtr[UInt]" %14) store i32 %11, i32* %15 %16 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %17 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %16, i32 0, i32 1 %18 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %19 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %18, i32 0, i32 1 %20 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %19 - call void @advance.223(%"RawPtr[UInt]"* %"$tmpC", %"RawPtr[UInt]" %20) - call void @"=.215"(%"RawPtr[UInt]"* %17, %"RawPtr[UInt]"* %"$tmpC") + call void @advance.230(%"RawPtr[UInt]"* %"$tmpC", %"RawPtr[UInt]" %20) + call void @"=.207"(%"RawPtr[UInt]"* %17, %"RawPtr[UInt]"* %"$tmpC") ret void if_block1: ; preds = %if_then %21 = load i64, i64* %t - store i64 2, i64* %tmp.v4 - %22 = load i64, i64* %tmp.v4 + store i64 2, i64* %tmp.this4 + %22 = load i64, i64* %tmp.this4 %23 = icmp slt i64 %21, %22 br i1 %23, label %if_then2, label %if_end3 if_then2: ; preds = %if_block1 - store i64 2, i64* %tmp.v5 - %24 = load i64, i64* %tmp.v5 + store i64 2, i64* %tmp.this5 + %24 = load i64, i64* %tmp.this5 store i64 %24, i64* %t br label %if_end3 if_end3: ; preds = %if_then2, %if_block1 %25 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %26 = load i64, i64* %t - call void @reserve.389(%"Vector[UInt]"* %25, i64 %26) + call void @reserve.383(%"Vector[UInt]"* %25, i64 %26) br label %if_end } ; Function Attrs: inlinehint nounwind -define internal i64 @capacity.388(%"Vector[UInt]"* %this) #4 { +define internal i64 @capacity.382(%"Vector[UInt]"* %this) #4 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -16552,25 +16376,25 @@ code: ; preds = %0 %4 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %5 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %4, i32 0, i32 0 %6 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %5 - %7 = call i64 @diff.213(%"RawPtr[UInt]" %3, %"RawPtr[UInt]" %6) - store i64 %7, i64* %tmp.v - %8 = load i64, i64* %tmp.v + %7 = call i64 @diff.205(%"RawPtr[UInt]" %3, %"RawPtr[UInt]" %6) + store i64 %7, i64* %tmp.this + %8 = load i64, i64* %tmp.this ret i64 %8 } ; Function Attrs: inlinehint nounwind -define internal void @reserve.389(%"Vector[UInt]"* %this, i64 %n) #4 { +define internal void @reserve.383(%"Vector[UInt]"* %this, i64 %n) #4 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr %n.addr = alloca i64 store i64 %n, i64* %n.addr %curCapacity = alloca i64 - %tmp.v = alloca i64 - %tmp.v4 = alloca i64 - %tmp.v8 = alloca double - %tmp.v9 = alloca double - %tmp.v10 = alloca i64 - %tmp.v11 = alloca double + %tmp.this = alloca i64 + %tmp.this4 = alloca i64 + %tmp.this8 = alloca double + %tmp.this9 = alloca double + %tmp.this10 = alloca i64 + %tmp.this11 = alloca double %curSize = alloca i64 %"$tmpC" = alloca %"RawPtr[UInt]" %"$tmpC12" = alloca %"RawPtr[UInt]" @@ -16578,7 +16402,7 @@ define internal void @reserve.389(%"Vector[UInt]"* %this, i64 %n) #4 { code: ; preds = %0 %1 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr - %2 = call i64 @capacity.388(%"Vector[UInt]"* %1) + %2 = call i64 @capacity.382(%"Vector[UInt]"* %1) store i64 %2, i64* %curCapacity br label %if_block @@ -16599,14 +16423,14 @@ dumy_block: ; No predecessors! if_block1: ; preds = %if_end %6 = load i64, i64* %n.addr - store i64 8, i64* %tmp.v - %7 = load i64, i64* %tmp.v + store i64 8, i64* %tmp.this + %7 = load i64, i64* %tmp.this %8 = icmp slt i64 %6, %7 br i1 %8, label %if_then2, label %if_end3 if_then2: ; preds = %if_block1 - store i64 8, i64* %tmp.v4 - %9 = load i64, i64* %tmp.v4 + store i64 8, i64* %tmp.this4 + %9 = load i64, i64* %tmp.this4 store i64 %9, i64* %n.addr br label %if_end3 @@ -16616,12 +16440,12 @@ if_end3: ; preds = %if_then2, %if_block if_block5: ; preds = %if_end3 %10 = load i64, i64* %n.addr %11 = sitofp i64 %10 to double - store double %11, double* %tmp.v8 - %12 = load double, double* %tmp.v8 + store double %11, double* %tmp.this8 + %12 = load double, double* %tmp.this8 %13 = load i64, i64* %curCapacity %14 = sitofp i64 %13 to double - store double %14, double* %tmp.v9 - %15 = load double, double* %tmp.v9 + store double %14, double* %tmp.this9 + %15 = load double, double* %tmp.this9 %16 = call double @_Double_opMul(double 2.000000e+00, double %15) %17 = call i1 @_Double_opLT(double %12, double %16) br i1 %17, label %if_then6, label %if_end7 @@ -16629,44 +16453,44 @@ if_block5: ; preds = %if_end3 if_then6: ; preds = %if_block5 %18 = load i64, i64* %curCapacity %19 = sitofp i64 %18 to double - store double %19, double* %tmp.v11 - %20 = load double, double* %tmp.v11 + store double %19, double* %tmp.this11 + %20 = load double, double* %tmp.this11 %21 = call double @_Double_opMul(double 2.000000e+00, double %20) %22 = fptoui double %21 to i64 - store i64 %22, i64* %tmp.v10 - %23 = load i64, i64* %tmp.v10 + store i64 %22, i64* %tmp.this10 + %23 = load i64, i64* %tmp.this10 store i64 %23, i64* %n.addr br label %if_end7 if_end7: ; preds = %if_then6, %if_block5 %24 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr - %25 = call i64 @size.212(%"Vector[UInt]"* %24) + %25 = call i64 @size.204(%"Vector[UInt]"* %24) store i64 %25, i64* %curSize %26 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %27 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %26, i32 0, i32 0 %28 = load i64, i64* %n.addr - call void @reallocPtr.390(%"RawPtr[UInt]"* %27, i64 %28) + call void @reallocPtr.384(%"RawPtr[UInt]"* %27, i64 %28) %29 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %30 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %29, i32 0, i32 1 %31 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %32 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %31, i32 0, i32 0 %33 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %32 %34 = load i64, i64* %curSize - call void @advance.218(%"RawPtr[UInt]"* %"$tmpC", %"RawPtr[UInt]" %33, i64 %34) - call void @"=.215"(%"RawPtr[UInt]"* %30, %"RawPtr[UInt]"* %"$tmpC") + call void @advance.210(%"RawPtr[UInt]"* %"$tmpC", %"RawPtr[UInt]" %33, i64 %34) + call void @"=.207"(%"RawPtr[UInt]"* %30, %"RawPtr[UInt]"* %"$tmpC") %35 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %36 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %35, i32 0, i32 2 %37 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %38 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %37, i32 0, i32 0 %39 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %38 %40 = load i64, i64* %n.addr - call void @advance.218(%"RawPtr[UInt]"* %"$tmpC12", %"RawPtr[UInt]" %39, i64 %40) - call void @"=.215"(%"RawPtr[UInt]"* %36, %"RawPtr[UInt]"* %"$tmpC12") + call void @advance.210(%"RawPtr[UInt]"* %"$tmpC12", %"RawPtr[UInt]" %39, i64 %40) + call void @"=.207"(%"RawPtr[UInt]"* %36, %"RawPtr[UInt]"* %"$tmpC12") ret void } ; Function Attrs: inlinehint nounwind -define internal void @reallocPtr.390(%"RawPtr[UInt]"* %this, i64 %n) #4 { +define internal void @reallocPtr.384(%"RawPtr[UInt]"* %this, i64 %n) #4 { %this.addr = alloca %"RawPtr[UInt]"* store %"RawPtr[UInt]"* %this, %"RawPtr[UInt]"** %this.addr %n.addr = alloca i64 @@ -16676,7 +16500,7 @@ define internal void @reallocPtr.390(%"RawPtr[UInt]"* %this, i64 %n) #4 { code: ; preds = %0 %1 = load %"RawPtr[UInt]"*, %"RawPtr[UInt]"** %this.addr %2 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %1 - %3 = call i8* @bytePtr.214(%"RawPtr[UInt]" %2) + %3 = call i8* @bytePtr.206(%"RawPtr[UInt]" %2) %4 = load i64, i64* %n.addr %5 = mul i64 %4, 4 %6 = call i8* @realloc(i8* %3, i64 %5) @@ -16688,7 +16512,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i1 @isEmpty.391(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this) #4 { +define internal i1 @isEmpty.385(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this) #4 { %this.addr = alloca %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* store %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr br label %code @@ -16696,12 +16520,12 @@ define internal i1 @isEmpty.391(%"RangeWithLookahead[SparrowScanner[_CharSource, code: ; preds = %0 %1 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr %2 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %1, i32 0, i32 1 - %3 = call i1 @isEmpty.392(%"Vector[Token]"* %2) + %3 = call i1 @isEmpty.386(%"Vector[Token]"* %2) ret i1 %3 } ; Function Attrs: inlinehint nounwind -define internal i1 @isEmpty.392(%"Vector[Token]"* %this) #4 { +define internal i1 @isEmpty.386(%"Vector[Token]"* %this) #4 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr br label %code @@ -16711,12 +16535,12 @@ code: ; preds = %0 %2 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %1, i32 0, i32 0 %3 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %4 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %3, i32 0, i32 1 - %5 = call i1 @"==.208"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %4) + %5 = call i1 @"==.200"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %4) ret i1 %5 } ; Function Attrs: inlinehint nounwind -define internal void @front.393(%Token* sret %_result, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this) #4 { +define internal void @front.387(%Token* sret %_result, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this) #4 { %_result.addr = alloca %Token* store %Token* %_result, %Token** %_result.addr %this.addr = alloca %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* @@ -16727,13 +16551,13 @@ code: ; preds = %0 %1 = load %Token*, %Token** %_result.addr %2 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr %3 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %2, i32 0, i32 1 - %4 = call %Token* @front.394(%"Vector[Token]"* %3) - call void @ctor.190(%Token* %1, %Token* %4) + %4 = call %Token* @front.388(%"Vector[Token]"* %3) + call void @ctor.182(%Token* %1, %Token* %4) ret void } ; Function Attrs: inlinehint nounwind -define internal %Token* @front.394(%"Vector[Token]"* %this) #4 { +define internal %Token* @front.388(%"Vector[Token]"* %this) #4 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr br label %code @@ -16742,51 +16566,51 @@ code: ; preds = %0 %1 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %2 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %1, i32 0, i32 0 %3 = load %"RawPtr[Token]", %"RawPtr[Token]"* %2 - %4 = call %Token* @value.209(%"RawPtr[Token]" %3) + %4 = call %Token* @value.201(%"RawPtr[Token]" %3) ret %Token* %4 } ; Function Attrs: noinline nounwind -define void @popFront.395(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this) #5 { +define void @popFront.389(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this) #5 { %this.addr = alloca %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* store %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %oldType = alloca %TokenType %"$tmpC" = alloca %Token %changeLine = alloca i1 %"$tmpC1" = alloca %Token - %tmp.v2 = alloca %TokenType + %tmp.this2 = alloca %TokenType %"$tmpC3" = alloca %Token - %tmp.v4 = alloca %TokenType + %tmp.this4 = alloca %TokenType %"$tmpC5" = alloca %Token - %tmp.v6 = alloca %TokenType + %tmp.this6 = alloca %TokenType %tk = alloca %Token %outsideParens = alloca i1 %newCol = alloca i32 %oldCol = alloca i32 - %tmp.v21 = alloca %TokenType - %tmp.v22 = alloca i32 - %tmp.v35 = alloca %TokenType - %tmp.v37 = alloca %TokenType - %tmp.v39 = alloca %TokenType - %tmp.v41 = alloca %TokenType - %tmp.v57 = alloca %TokenType - %tmp.v59 = alloca %TokenType - %tmp.v69 = alloca i32 + %tmp.this21 = alloca %TokenType + %tmp.this22 = alloca i32 + %tmp.this35 = alloca %TokenType + %tmp.this37 = alloca %TokenType + %tmp.this39 = alloca %TokenType + %tmp.this41 = alloca %TokenType + %tmp.this57 = alloca %TokenType + %tmp.this59 = alloca %TokenType + %tmp.this69 = alloca i32 %numDedents = alloca i32 - %tmp.v75 = alloca %TokenType + %tmp.this75 = alloca %TokenType %"$tmpC79" = alloca %String %tmp.StringRef = alloca %StringRef %tmp.StringRef80 = alloca %StringRef - %tmp.v87 = alloca %TokenType + %tmp.this87 = alloca %TokenType %"$tmpForRef" = alloca i8 - %tmp.v92 = alloca %TokenType + %tmp.this92 = alloca %TokenType %"$tmpForRef93" = alloca i8 - %tmp.v98 = alloca %TokenType + %tmp.this98 = alloca %TokenType %"$tmpForRef99" = alloca i8 - %tmp.v107 = alloca %TokenType - %tmp.v116 = alloca %TokenType - %tmp.v124 = alloca %TokenType + %tmp.this107 = alloca %TokenType + %tmp.this116 = alloca %TokenType + %tmp.this124 = alloca %TokenType br label %code code: ; preds = %0 @@ -16805,25 +16629,25 @@ if_then: ; preds = %if_block %7 = call i32 @post_--.48(i32* %6) %8 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %9 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %8, i32 0, i32 4 - call void @ctor.319(%TokenType* %tmp.v, i32 25) - call void @"=.255"(%TokenType* %9, %TokenType* %tmp.v) + call void @ctor.313(%TokenType* %tmp.this, i32 25) + call void @"=.249"(%TokenType* %9, %TokenType* %tmp.this) ret void if_end: ; preds = %dumy_block, %if_block %10 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @front.396(%Token* %"$tmpC", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %10) + call void @front.390(%Token* %"$tmpC", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %10) %11 = getelementptr inbounds %Token, %Token* %"$tmpC", i32 0, i32 1 - call void @ctor.191(%TokenType* %oldType, %TokenType* %11) - call void @dtor.228(%Token* %"$tmpC") + call void @ctor.183(%TokenType* %oldType, %TokenType* %11) + call void @dtor.217(%Token* %"$tmpC") %12 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %13 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %12, i32 0, i32 0 - call void @popFront.397(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %13) + call void @popFront.391(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %13) %14 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %15 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %14, i32 0, i32 0 - call void @front.393(%Token* %"$tmpC1", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %15) + call void @front.387(%Token* %"$tmpC1", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %15) %16 = getelementptr inbounds %Token, %Token* %"$tmpC1", i32 0, i32 1 - call void @ctor.319(%TokenType* %tmp.v2, i32 1) - %17 = call i1 @"==.279"(%TokenType* %16, %TokenType* %tmp.v2) + call void @ctor.313(%TokenType* %tmp.this2, i32 1) + %17 = call i1 @"==.273"(%TokenType* %16, %TokenType* %tmp.this2) br i1 %17, label %cond.true, label %cond.false dumy_block: ; No predecessors! @@ -16835,10 +16659,10 @@ cond.true: ; preds = %if_end cond.false: ; preds = %if_end %18 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %19 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %18, i32 0, i32 0 - call void @front.393(%Token* %"$tmpC3", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %19) + call void @front.387(%Token* %"$tmpC3", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %19) %20 = getelementptr inbounds %Token, %Token* %"$tmpC3", i32 0, i32 1 - call void @ctor.319(%TokenType* %tmp.v4, i32 0) - %21 = call i1 @"==.279"(%TokenType* %20, %TokenType* %tmp.v4) + call void @ctor.313(%TokenType* %tmp.this4, i32 0) + %21 = call i1 @"==.273"(%TokenType* %20, %TokenType* %tmp.this4) br label %cond.end cond.end: ; preds = %cond.false, %cond.true @@ -16850,39 +16674,39 @@ cond_destruct_alt1: ; preds = %cond.end br label %cond_destruct_end cond_destruct_alt2: ; preds = %cond.end - call void @dtor.228(%Token* %"$tmpC3") + call void @dtor.217(%Token* %"$tmpC3") br label %cond_destruct_end cond_destruct_end: ; preds = %cond_destruct_alt2, %cond_destruct_alt1 - call void @dtor.228(%Token* %"$tmpC1") + call void @dtor.217(%Token* %"$tmpC1") br label %while_block while_block: ; preds = %while_step, %cond_destruct_end %22 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %23 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %22, i32 0, i32 0 - call void @front.393(%Token* %"$tmpC5", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %23) + call void @front.387(%Token* %"$tmpC5", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %23) %24 = getelementptr inbounds %Token, %Token* %"$tmpC5", i32 0, i32 1 - call void @ctor.319(%TokenType* %tmp.v6, i32 1) - %25 = call i1 @"==.279"(%TokenType* %24, %TokenType* %tmp.v6) + call void @ctor.313(%TokenType* %tmp.this6, i32 1) + %25 = call i1 @"==.273"(%TokenType* %24, %TokenType* %tmp.this6) br i1 %25, label %while_body, label %while_end while_body: ; preds = %while_block %26 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %27 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %26, i32 0, i32 0 - call void @popFront.397(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %27) + call void @popFront.391(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %27) br label %while_step while_step: ; preds = %while_body br label %while_block while_end: ; preds = %while_block - call void @dtor.228(%Token* %"$tmpC5") + call void @dtor.217(%Token* %"$tmpC5") %28 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %29 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %28, i32 0, i32 0 - call void @front.393(%Token* %tk, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %29) + call void @front.387(%Token* %tk, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %29) %30 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %31 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %30, i32 0, i32 3 - %32 = call i1 @isEmpty.318(%"Vector[Char]"* %31) + %32 = call i1 @isEmpty.312(%"Vector[Char]"* %31) br i1 %32, label %cond.true7, label %cond.false8 cond.true7: ; preds = %while_end @@ -16891,7 +16715,7 @@ cond.true7: ; preds = %while_end cond.false8: ; preds = %while_end %33 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %34 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %33, i32 0, i32 3 - %35 = call i8* @back.411(%"Vector[Char]"* %34) + %35 = call i8* @back.405(%"Vector[Char]"* %34) %36 = load i8, i8* %35 %37 = icmp eq i8 %36, 123 br label %cond.end9 @@ -16913,7 +16737,7 @@ if_then12: ; preds = %cond.end16 store i32 %42, i32* %newCol %43 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %44 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %43, i32 0, i32 2 - %45 = call i32* @back.412(%"Vector[UInt]"* %44) + %45 = call i32* @back.406(%"Vector[UInt]"* %44) %46 = load i32, i32* %45 store i32 %46, i32* %oldCol br label %if_block18 @@ -16934,13 +16758,13 @@ cond.end16: ; preds = %cond.false15, %cond if_block18: ; preds = %if_then12 %48 = getelementptr inbounds %Token, %Token* %tk, i32 0, i32 1 - call void @ctor.319(%TokenType* %tmp.v21, i32 0) - %49 = call i1 @"==.279"(%TokenType* %48, %TokenType* %tmp.v21) + call void @ctor.313(%TokenType* %tmp.this21, i32 0) + %49 = call i1 @"==.273"(%TokenType* %48, %TokenType* %tmp.this21) br i1 %49, label %if_then19, label %if_end20 if_then19: ; preds = %if_block18 - store i32 1, i32* %tmp.v22 - %50 = load i32, i32* %tmp.v22 + store i32 1, i32* %tmp.this22 + %50 = load i32, i32* %tmp.this22 store i32 %50, i32* %newCol br label %if_end20 @@ -16956,8 +16780,8 @@ if_block23: ; preds = %if_end20 if_then24: ; preds = %cond.end28 %54 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %55 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %54, i32 0, i32 4 - call void @ctor.319(%TokenType* %tmp.v41, i32 31) - call void @"=.255"(%TokenType* %55, %TokenType* %tmp.v41) + call void @ctor.313(%TokenType* %tmp.this41, i32 31) + call void @"=.249"(%TokenType* %55, %TokenType* %tmp.this41) %56 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %57 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %56, i32 0, i32 5 store i32 1, i32* %57 @@ -16967,8 +16791,8 @@ if_end25: ; preds = %if_then24, %cond.en br i1 %cond.res38, label %cond_destruct_alt142, label %cond_destruct_alt243 cond.true26: ; preds = %cond.end31 - call void @ctor.319(%TokenType* %tmp.v39, i32 25) - %58 = call i1 @"==.279"(%TokenType* %oldType, %TokenType* %tmp.v39) + call void @ctor.313(%TokenType* %tmp.this39, i32 25) + %58 = call i1 @"==.273"(%TokenType* %oldType, %TokenType* %tmp.this39) %59 = xor i1 true, %58 br label %cond.end28 @@ -16980,8 +16804,8 @@ cond.end28: ; preds = %cond.false27, %cond br i1 %cond.res40, label %if_then24, label %if_end25 cond.true29: ; preds = %cond.end34 - call void @ctor.319(%TokenType* %tmp.v37, i32 31) - %60 = call i1 @"==.279"(%TokenType* %oldType, %TokenType* %tmp.v37) + call void @ctor.313(%TokenType* %tmp.this37, i32 31) + %60 = call i1 @"==.273"(%TokenType* %oldType, %TokenType* %tmp.this37) %61 = xor i1 true, %60 br label %cond.end31 @@ -16994,8 +16818,8 @@ cond.end31: ; preds = %cond.false30, %cond cond.true32: ; preds = %if_block23 %62 = getelementptr inbounds %Token, %Token* %tk, i32 0, i32 1 - call void @ctor.319(%TokenType* %tmp.v35, i32 24) - %63 = call i1 @"==.279"(%TokenType* %62, %TokenType* %tmp.v35) + call void @ctor.313(%TokenType* %tmp.this35, i32 24) + %63 = call i1 @"==.273"(%TokenType* %62, %TokenType* %tmp.this35) %64 = xor i1 true, %63 br label %cond.end34 @@ -17042,14 +16866,14 @@ if_block51: ; preds = %cond_destruct_end50 if_then52: ; preds = %cond.end56 %68 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %69 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %68, i32 0, i32 4 - call void @ctor.319(%TokenType* %tmp.v59, i32 24) - call void @"=.255"(%TokenType* %69, %TokenType* %tmp.v59) + call void @ctor.313(%TokenType* %tmp.this59, i32 24) + call void @"=.249"(%TokenType* %69, %TokenType* %tmp.this59) %70 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %71 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %70, i32 0, i32 5 store i32 1, i32* %71 %72 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %73 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %72, i32 0, i32 2 - call void @"+=.386"(%"Vector[UInt]"* %73, i32* %newCol) + call void @"+=.380"(%"Vector[UInt]"* %73, i32* %newCol) br label %if_end53 if_end53: ; preds = %if_then52, %cond.end56 @@ -17057,8 +16881,8 @@ if_end53: ; preds = %if_then52, %cond.en cond.true54: ; preds = %if_block51 %74 = getelementptr inbounds %Token, %Token* %tk, i32 0, i32 1 - call void @ctor.319(%TokenType* %tmp.v57, i32 0) - %75 = call i1 @"==.279"(%TokenType* %74, %TokenType* %tmp.v57) + call void @ctor.313(%TokenType* %tmp.this57, i32 0) + %75 = call i1 @"==.273"(%TokenType* %74, %TokenType* %tmp.this57) %76 = xor i1 true, %75 br label %cond.end56 @@ -17093,8 +16917,8 @@ if_end65: ; preds = %if_end78, %cond.end cond.true66: ; preds = %if_block63 %80 = load i32, i32* %newCol - store i32 1, i32* %tmp.v69 - %81 = load i32, i32* %tmp.v69 + store i32 1, i32* %tmp.this69 + %81 = load i32, i32* %tmp.this69 %82 = icmp sge i32 %80, %81 br label %cond.end68 @@ -17109,7 +16933,7 @@ while_block71: ; preds = %while_step73, %if_t %83 = load i32, i32* %newCol %84 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %85 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %84, i32 0, i32 2 - %86 = call i32* @back.412(%"Vector[UInt]"* %85) + %86 = call i32* @back.406(%"Vector[UInt]"* %85) %87 = load i32, i32* %86 %88 = icmp slt i32 %83, %87 br i1 %88, label %while_body72, label %while_end74 @@ -17118,7 +16942,7 @@ while_body72: ; preds = %while_block71 %89 = call i32 @"post_++.39"(i32* %numDedents) %90 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %91 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %90, i32 0, i32 2 - call void @popBack.414(%"Vector[UInt]"* %91) + call void @popBack.408(%"Vector[UInt]"* %91) br label %while_step73 while_step73: ; preds = %while_body72 @@ -17127,8 +16951,8 @@ while_step73: ; preds = %while_body72 while_end74: ; preds = %while_block71 %92 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %93 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %92, i32 0, i32 4 - call void @ctor.319(%TokenType* %tmp.v75, i32 31) - call void @"=.255"(%TokenType* %93, %TokenType* %tmp.v75) + call void @ctor.313(%TokenType* %tmp.this75, i32 31) + call void @"=.249"(%TokenType* %93, %TokenType* %tmp.this75) %94 = load i32, i32* %numDedents %95 = add i32 1, %94 %96 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr @@ -17140,7 +16964,7 @@ if_block76: ; preds = %while_end74 %98 = load i32, i32* %newCol %99 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %100 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %99, i32 0, i32 2 - %101 = call i32* @back.412(%"Vector[UInt]"* %100) + %101 = call i32* @back.406(%"Vector[UInt]"* %100) %102 = load i32, i32* %101 %103 = icmp ne i32 %98, %102 br i1 %103, label %if_then77, label %if_end78 @@ -17157,7 +16981,7 @@ if_then77: ; preds = %if_block76 %110 = load %StringRef, %StringRef* %tmp.StringRef %111 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %112 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %111, i32 0, i32 2 - %113 = call i32* @back.412(%"Vector[UInt]"* %112) + %113 = call i32* @back.406(%"Vector[UInt]"* %112) %114 = load i32, i32* %113 %115 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef80, i32 0, i32 0 %116 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef80, i32 0, i32 1 @@ -17165,9 +16989,9 @@ if_then77: ; preds = %if_block76 store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.43, i32 0, i32 6), i8** %116 %117 = load %StringRef, %StringRef* %tmp.StringRef80 %118 = load i32, i32* %newCol - call void @toString.415(%String* %"$tmpC79", %StringRef %110, i32 %114, %StringRef %117, i32 %118) + call void @toString.409(%String* %"$tmpC79", %StringRef %110, i32 %114, %StringRef %117, i32 %118) call void @reportError(%ExternalErrorReporter* %105, %Location %107, %String* %"$tmpC79") - call void @dtor.229(%String* %"$tmpC79") + call void @dtor.218(%String* %"$tmpC79") br label %if_end78 if_end78: ; preds = %if_then77, %if_block76 @@ -17184,8 +17008,8 @@ cond_destruct_end83: ; preds = %cond_destruct_alt28 if_block84: ; preds = %if_end13 %119 = getelementptr inbounds %Token, %Token* %tk, i32 0, i32 1 - call void @ctor.319(%TokenType* %tmp.v87, i32 28) - %120 = call i1 @"==.279"(%TokenType* %119, %TokenType* %tmp.v87) + call void @ctor.313(%TokenType* %tmp.this87, i32 28) + %120 = call i1 @"==.273"(%TokenType* %119, %TokenType* %tmp.this87) br i1 %120, label %if_then85, label %if_else if_then85: ; preds = %if_block84 @@ -17199,13 +17023,13 @@ if_else: ; preds = %if_block84 br label %if_block88 if_end86: ; preds = %if_end91, %if_then85 - call void @dtor.228(%Token* %tk) + call void @dtor.217(%Token* %tk) ret void if_block88: ; preds = %if_else %123 = getelementptr inbounds %Token, %Token* %tk, i32 0, i32 1 - call void @ctor.319(%TokenType* %tmp.v92, i32 26) - %124 = call i1 @"==.279"(%TokenType* %123, %TokenType* %tmp.v92) + call void @ctor.313(%TokenType* %tmp.this92, i32 26) + %124 = call i1 @"==.273"(%TokenType* %123, %TokenType* %tmp.this92) br i1 %124, label %if_then89, label %if_else90 if_then89: ; preds = %if_block88 @@ -17223,8 +17047,8 @@ if_end91: ; preds = %if_end97, %if_then8 if_block94: ; preds = %if_else90 %127 = getelementptr inbounds %Token, %Token* %tk, i32 0, i32 1 - call void @ctor.319(%TokenType* %tmp.v98, i32 24) - %128 = call i1 @"==.279"(%TokenType* %127, %TokenType* %tmp.v98) + call void @ctor.313(%TokenType* %tmp.this98, i32 24) + %128 = call i1 @"==.273"(%TokenType* %127, %TokenType* %tmp.this98) br i1 %128, label %if_then95, label %if_else96 if_then95: ; preds = %if_block94 @@ -17242,14 +17066,14 @@ if_end97: ; preds = %if_end103, %if_then if_block100: ; preds = %if_else96 %131 = getelementptr inbounds %Token, %Token* %tk, i32 0, i32 1 - call void @ctor.319(%TokenType* %tmp.v107, i32 29) - %132 = call i1 @"==.279"(%TokenType* %131, %TokenType* %tmp.v107) + call void @ctor.313(%TokenType* %tmp.this107, i32 29) + %132 = call i1 @"==.273"(%TokenType* %131, %TokenType* %tmp.this107) br i1 %132, label %cond.true104, label %cond.false105 if_then101: ; preds = %cond.end106 %133 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %134 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %133, i32 0, i32 3 - call void @popBack.418(%"Vector[Char]"* %134) + call void @popBack.412(%"Vector[Char]"* %134) br label %if_end103 if_else102: ; preds = %cond.end106 @@ -17261,7 +17085,7 @@ if_end103: ; preds = %if_end112, %if_then cond.true104: ; preds = %if_block100 %135 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %136 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %135, i32 0, i32 3 - %137 = call i8* @back.411(%"Vector[Char]"* %136) + %137 = call i8* @back.405(%"Vector[Char]"* %136) %138 = load i8, i8* %137 %139 = icmp eq i8 %138, 40 br label %cond.end106 @@ -17275,14 +17099,14 @@ cond.end106: ; preds = %cond.false105, %con if_block109: ; preds = %if_else102 %140 = getelementptr inbounds %Token, %Token* %tk, i32 0, i32 1 - call void @ctor.319(%TokenType* %tmp.v116, i32 27) - %141 = call i1 @"==.279"(%TokenType* %140, %TokenType* %tmp.v116) + call void @ctor.313(%TokenType* %tmp.this116, i32 27) + %141 = call i1 @"==.273"(%TokenType* %140, %TokenType* %tmp.this116) br i1 %141, label %cond.true113, label %cond.false114 if_then110: ; preds = %cond.end115 %142 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %143 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %142, i32 0, i32 3 - call void @popBack.418(%"Vector[Char]"* %143) + call void @popBack.412(%"Vector[Char]"* %143) br label %if_end112 if_else111: ; preds = %cond.end115 @@ -17294,7 +17118,7 @@ if_end112: ; preds = %if_end120, %if_then cond.true113: ; preds = %if_block109 %144 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %145 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %144, i32 0, i32 3 - %146 = call i8* @back.411(%"Vector[Char]"* %145) + %146 = call i8* @back.405(%"Vector[Char]"* %145) %147 = load i8, i8* %146 %148 = icmp eq i8 %147, 91 br label %cond.end115 @@ -17308,14 +17132,14 @@ cond.end115: ; preds = %cond.false114, %con if_block118: ; preds = %if_else111 %149 = getelementptr inbounds %Token, %Token* %tk, i32 0, i32 1 - call void @ctor.319(%TokenType* %tmp.v124, i32 25) - %150 = call i1 @"==.279"(%TokenType* %149, %TokenType* %tmp.v124) + call void @ctor.313(%TokenType* %tmp.this124, i32 25) + %150 = call i1 @"==.273"(%TokenType* %149, %TokenType* %tmp.this124) br i1 %150, label %cond.true121, label %cond.false122 if_then119: ; preds = %cond.end123 %151 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %152 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %151, i32 0, i32 3 - call void @popBack.418(%"Vector[Char]"* %152) + call void @popBack.412(%"Vector[Char]"* %152) br label %if_end120 if_end120: ; preds = %if_then119, %cond.end123 @@ -17324,7 +17148,7 @@ if_end120: ; preds = %if_then119, %cond.e cond.true121: ; preds = %if_block118 %153 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %154 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %153, i32 0, i32 3 - %155 = call i8* @back.411(%"Vector[Char]"* %154) + %155 = call i8* @back.405(%"Vector[Char]"* %154) %156 = load i8, i8* %155 %157 = icmp eq i8 %156, 123 br label %cond.end123 @@ -17338,7 +17162,7 @@ cond.end123: ; preds = %cond.false122, %con } ; Function Attrs: inlinehint nounwind -define internal void @front.396(%Token* sret %_result, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this) #4 { +define internal void @front.390(%Token* sret %_result, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this) #4 { %_result.addr = alloca %Token* store %Token* %_result, %Token** %_result.addr %this.addr = alloca %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* @@ -17349,7 +17173,7 @@ define internal void @front.396(%Token* sret %_result, %"SparrowLayoutDecoder[Sp code: ; preds = %0 %1 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %2 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 0 - call void @front.393(%Token* %tk, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %2) + call void @front.387(%Token* %tk, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %2) br label %if_block if_block: ; preds = %code @@ -17363,40 +17187,40 @@ if_then: ; preds = %if_block %7 = getelementptr inbounds %Token, %Token* %tk, i32 0, i32 1 %8 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %9 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %8, i32 0, i32 4 - call void @"=.255"(%TokenType* %7, %TokenType* %9) + call void @"=.249"(%TokenType* %7, %TokenType* %9) br label %if_end if_end: ; preds = %if_then, %if_block %10 = load %Token*, %Token** %_result.addr - call void @ctor.190(%Token* %10, %Token* %tk) - call void @dtor.228(%Token* %tk) + call void @ctor.182(%Token* %10, %Token* %tk) + call void @dtor.217(%Token* %tk) ret void dumy_block: ; No predecessors! - call void @dtor.228(%Token* %tk) + call void @dtor.217(%Token* %tk) ret void } ; Function Attrs: inlinehint nounwind -define internal void @popFront.397(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this) #4 { +define internal void @popFront.391(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this) #4 { %this.addr = alloca %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* store %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 %"$tmpC" = alloca %Token br label %code code: ; preds = %0 %1 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr %2 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %1, i32 0, i32 1 - store i64 0, i64* %tmp.v - %3 = load i64, i64* %tmp.v - call void @remove.398(%"Vector[Token]"* %2, i64 %3) + store i64 0, i64* %tmp.this + %3 = load i64, i64* %tmp.this + call void @remove.392(%"Vector[Token]"* %2, i64 %3) br label %if_block if_block: ; preds = %code %4 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr %5 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %4, i32 0, i32 1 - %6 = call i1 @isEmpty.392(%"Vector[Token]"* %5) + %6 = call i1 @isEmpty.386(%"Vector[Token]"* %5) br i1 %6, label %cond.true, label %cond.false if_then: ; preds = %cond.end @@ -17404,9 +17228,9 @@ if_then: ; preds = %cond.end %8 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %7, i32 0, i32 1 %9 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr %10 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %9, i32 0, i32 0 - call void @"post_++.313"(%Token* %"$tmpC", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %10) - call void @"+=.311"(%"Vector[Token]"* %8, %Token* %"$tmpC") - call void @dtor.228(%Token* %"$tmpC") + call void @"post_++.307"(%Token* %"$tmpC", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %10) + call void @"+=.305"(%"Vector[Token]"* %8, %Token* %"$tmpC") + call void @dtor.217(%Token* %"$tmpC") br label %if_end if_end: ; preds = %if_then, %cond.end @@ -17415,7 +17239,7 @@ if_end: ; preds = %if_then, %cond.end cond.true: ; preds = %if_block %11 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr %12 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %11, i32 0, i32 0 - %13 = call i1 @"pre_!!.309"(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %12) + %13 = call i1 @"pre_!!.303"(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %12) br label %cond.end cond.false: ; preds = %if_block @@ -17427,36 +17251,36 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: inlinehint nounwind -define internal void @remove.398(%"Vector[Token]"* %this, i64 %index) #4 { +define internal void @remove.392(%"Vector[Token]"* %this, i64 %index) #4 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr %index.addr = alloca i64 store i64 %index, i64* %index.addr %r = alloca %"ContiguousMemoryRange[Token]" - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 %1 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr - call void @all.399(%"ContiguousMemoryRange[Token]"* %r, %"Vector[Token]"* %1) + call void @all.393(%"ContiguousMemoryRange[Token]"* %r, %"Vector[Token]"* %1) %2 = load i64, i64* %index.addr - call void @popFront.401(%"ContiguousMemoryRange[Token]"* %r, i64 %2) + call void @popFront.395(%"ContiguousMemoryRange[Token]"* %r, i64 %2) %3 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr - %4 = call i64 @size.199(%"Vector[Token]"* %3) + %4 = call i64 @size.191(%"Vector[Token]"* %3) %5 = load i64, i64* %index.addr %6 = call i64 @_SizeType_opMinus(i64 %4, i64 %5) - store i64 1, i64* %tmp.v - %7 = load i64, i64* %tmp.v + store i64 1, i64* %tmp.this + %7 = load i64, i64* %tmp.this %8 = call i64 @_SizeType_opMinus(i64 %6, i64 %7) - call void @popBack.403(%"ContiguousMemoryRange[Token]"* %r, i64 %8) + call void @popBack.397(%"ContiguousMemoryRange[Token]"* %r, i64 %8) %9 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %10 = load %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %r - call void @remove.404(%"Vector[Token]"* %9, %"ContiguousMemoryRange[Token]" %10) + call void @remove.398(%"Vector[Token]"* %9, %"ContiguousMemoryRange[Token]" %10) ret void } ; Function Attrs: inlinehint nounwind -define internal void @all.399(%"ContiguousMemoryRange[Token]"* sret %_result, %"Vector[Token]"* %this) #4 { +define internal void @all.393(%"ContiguousMemoryRange[Token]"* sret %_result, %"Vector[Token]"* %this) #4 { %_result.addr = alloca %"ContiguousMemoryRange[Token]"* store %"ContiguousMemoryRange[Token]"* %_result, %"ContiguousMemoryRange[Token]"** %_result.addr %this.addr = alloca %"Vector[Token]"* @@ -17471,12 +17295,12 @@ code: ; preds = %0 %5 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %6 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %5, i32 0, i32 1 %7 = load %"RawPtr[Token]", %"RawPtr[Token]"* %6 - call void @ctor.400(%"ContiguousMemoryRange[Token]"* %1, %"RawPtr[Token]" %4, %"RawPtr[Token]" %7) + call void @ctor.394(%"ContiguousMemoryRange[Token]"* %1, %"RawPtr[Token]" %4, %"RawPtr[Token]" %7) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.400(%"ContiguousMemoryRange[Token]"* %this, %"RawPtr[Token]" %f_begin, %"RawPtr[Token]" %f_end) #3 { +define internal void @ctor.394(%"ContiguousMemoryRange[Token]"* %this, %"RawPtr[Token]" %f_begin, %"RawPtr[Token]" %f_end) #3 { %this.addr = alloca %"ContiguousMemoryRange[Token]"* store %"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"** %this.addr %f_begin.addr = alloca %"RawPtr[Token]" @@ -17488,21 +17312,21 @@ define internal void @ctor.400(%"ContiguousMemoryRange[Token]"* %this, %"RawPtr[ code: ; preds = %0 %1 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %this.addr %2 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %1, i32 0, i32 0 - call void @ctor.207(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %f_begin.addr) + call void @ctor.199(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %f_begin.addr) %3 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %this.addr %4 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %3, i32 0, i32 1 - call void @ctor.207(%"RawPtr[Token]"* %4, %"RawPtr[Token]"* %f_end.addr) + call void @ctor.199(%"RawPtr[Token]"* %4, %"RawPtr[Token]"* %f_end.addr) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @popFront.401(%"ContiguousMemoryRange[Token]"* %this, i64 %n) #3 { +define internal void @popFront.395(%"ContiguousMemoryRange[Token]"* %this, i64 %n) #3 { %this.addr = alloca %"ContiguousMemoryRange[Token]"* store %"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"** %this.addr %n.addr = alloca i64 store i64 %n, i64* %n.addr %"$tmpC" = alloca %"RawPtr[Token]" - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -17512,48 +17336,48 @@ code: ; preds = %0 %4 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %3, i32 0, i32 0 %5 = load %"RawPtr[Token]", %"RawPtr[Token]"* %4 %6 = load i64, i64* %n.addr - store i64 %6, i64* %tmp.v - %7 = load i64, i64* %tmp.v - call void @advance.402(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %5, i64 %7) - call void @"=.202"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %"$tmpC") + store i64 %6, i64* %tmp.this + %7 = load i64, i64* %tmp.this + call void @advance.396(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %5, i64 %7) + call void @"=.194"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %"$tmpC") ret void } ; Function Attrs: inlinehint nounwind -define internal void @advance.402(%"RawPtr[Token]"* sret %_result, %"RawPtr[Token]" %this, i64 %n) #4 { +define internal void @advance.396(%"RawPtr[Token]"* sret %_result, %"RawPtr[Token]" %this, i64 %n) #4 { %_result.addr = alloca %"RawPtr[Token]"* store %"RawPtr[Token]"* %_result, %"RawPtr[Token]"** %_result.addr %this.addr = alloca %"RawPtr[Token]" store %"RawPtr[Token]" %this, %"RawPtr[Token]"* %this.addr %n.addr = alloca i64 store i64 %n, i64* %n.addr - %tmp.v = alloca i64 - %tmp.v1 = alloca i64 + %tmp.this = alloca i64 + %tmp.this1 = alloca i64 br label %code code: ; preds = %0 %1 = load %"RawPtr[Token]"*, %"RawPtr[Token]"** %_result.addr %2 = load %"RawPtr[Token]", %"RawPtr[Token]"* %this.addr - %3 = call i8* @bytePtr.201(%"RawPtr[Token]" %2) + %3 = call i8* @bytePtr.193(%"RawPtr[Token]" %2) %4 = load i64, i64* %n.addr - store i64 72, i64* %tmp.v1 - %5 = load i64, i64* %tmp.v1 + store i64 72, i64* %tmp.this1 + %5 = load i64, i64* %tmp.this1 %6 = mul i64 %4, %5 - store i64 %6, i64* %tmp.v - %7 = load i64, i64* %tmp.v + store i64 %6, i64* %tmp.this + %7 = load i64, i64* %tmp.this %8 = call i8* @ptrAdd(i8* %3, i64 %7) - call void @ctor.206(%"RawPtr[Token]"* %1, i8* %8) + call void @ctor.198(%"RawPtr[Token]"* %1, i8* %8) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @popBack.403(%"ContiguousMemoryRange[Token]"* %this, i64 %n) #3 { +define internal void @popBack.397(%"ContiguousMemoryRange[Token]"* %this, i64 %n) #3 { %this.addr = alloca %"ContiguousMemoryRange[Token]"* store %"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"** %this.addr %n.addr = alloca i64 store i64 %n, i64* %n.addr %"$tmpC" = alloca %"RawPtr[Token]" - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -17563,16 +17387,16 @@ code: ; preds = %0 %4 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %3, i32 0, i32 1 %5 = load %"RawPtr[Token]", %"RawPtr[Token]"* %4 %6 = load i64, i64* %n.addr - store i64 %6, i64* %tmp.v - %7 = load i64, i64* %tmp.v + store i64 %6, i64* %tmp.this + %7 = load i64, i64* %tmp.this %8 = sub i64 0, %7 - call void @advance.402(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %5, i64 %8) - call void @"=.202"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %"$tmpC") + call void @advance.396(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %5, i64 %8) + call void @"=.194"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %"$tmpC") ret void } ; Function Attrs: inlinehint nounwind -define internal void @remove.404(%"Vector[Token]"* %this, %"ContiguousMemoryRange[Token]" %range) #4 { +define internal void @remove.398(%"Vector[Token]"* %this, %"ContiguousMemoryRange[Token]" %range) #4 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr %range.addr = alloca %"ContiguousMemoryRange[Token]" @@ -17587,28 +17411,28 @@ define internal void @remove.404(%"Vector[Token]"* %this, %"ContiguousMemoryRang code: ; preds = %0 %1 = load %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %range.addr - call void @frontPtr.405(%"RawPtr[Token]"* %rBegin, %"ContiguousMemoryRange[Token]" %1) + call void @frontPtr.399(%"RawPtr[Token]"* %rBegin, %"ContiguousMemoryRange[Token]" %1) %2 = load %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %range.addr - call void @backPtr.406(%"RawPtr[Token]"* %rEnd, %"ContiguousMemoryRange[Token]" %2) - call void @ctor.407(%"ContiguousMemoryRange[Token]"* %"$rangeVar", %"ContiguousMemoryRange[Token]"* %range.addr) + call void @backPtr.400(%"RawPtr[Token]"* %rEnd, %"ContiguousMemoryRange[Token]" %2) + call void @ctor.401(%"ContiguousMemoryRange[Token]"* %"$rangeVar", %"ContiguousMemoryRange[Token]"* %range.addr) br label %while_block while_block: ; preds = %while_step, %code %3 = load %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %"$rangeVar" - %4 = call i1 @isEmpty.408(%"ContiguousMemoryRange[Token]" %3) + %4 = call i1 @isEmpty.402(%"ContiguousMemoryRange[Token]" %3) %5 = xor i1 true, %4 br i1 %5, label %while_body, label %while_end while_body: ; preds = %while_block %6 = load %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %"$rangeVar" - %7 = call %Token* @front.409(%"ContiguousMemoryRange[Token]" %6) + %7 = call %Token* @front.403(%"ContiguousMemoryRange[Token]" %6) store %Token* %7, %Token** %el %8 = load %Token*, %Token** %el - call void @dtor.228(%Token* %8) + call void @dtor.217(%Token* %8) br label %while_step while_step: ; preds = %while_body - call void @popFront.410(%"ContiguousMemoryRange[Token]"* %"$rangeVar") + call void @popFront.404(%"ContiguousMemoryRange[Token]"* %"$rangeVar") br label %while_block while_end: ; preds = %while_block @@ -17617,25 +17441,25 @@ while_end: ; preds = %while_block while_block1: ; preds = %while_step3, %while_end %9 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %10 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %9, i32 0, i32 1 - %11 = call i1 @"==.208"(%"RawPtr[Token]"* %rEnd, %"RawPtr[Token]"* %10) + %11 = call i1 @"==.200"(%"RawPtr[Token]"* %rEnd, %"RawPtr[Token]"* %10) %12 = xor i1 true, %11 br i1 %12, label %while_body2, label %while_end4 while_body2: ; preds = %while_block1 %13 = load %"RawPtr[Token]", %"RawPtr[Token]"* %rBegin - %14 = call %Token* @value.209(%"RawPtr[Token]" %13) + %14 = call %Token* @value.201(%"RawPtr[Token]" %13) %15 = load %"RawPtr[Token]", %"RawPtr[Token]"* %rEnd - %16 = call %Token* @value.209(%"RawPtr[Token]" %15) - call void @ctor.190(%Token* %14, %Token* %16) + %16 = call %Token* @value.201(%"RawPtr[Token]" %15) + call void @ctor.182(%Token* %14, %Token* %16) %17 = load %"RawPtr[Token]", %"RawPtr[Token]"* %rEnd - %18 = call %Token* @value.209(%"RawPtr[Token]" %17) - call void @dtor.228(%Token* %18) + %18 = call %Token* @value.201(%"RawPtr[Token]" %17) + call void @dtor.217(%Token* %18) %19 = load %"RawPtr[Token]", %"RawPtr[Token]"* %rBegin - call void @advance.210(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %19) - call void @"=.202"(%"RawPtr[Token]"* %rBegin, %"RawPtr[Token]"* %"$tmpC") + call void @advance.202(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %19) + call void @"=.194"(%"RawPtr[Token]"* %rBegin, %"RawPtr[Token]"* %"$tmpC") %20 = load %"RawPtr[Token]", %"RawPtr[Token]"* %rEnd - call void @advance.210(%"RawPtr[Token]"* %"$tmpC5", %"RawPtr[Token]" %20) - call void @"=.202"(%"RawPtr[Token]"* %rEnd, %"RawPtr[Token]"* %"$tmpC5") + call void @advance.202(%"RawPtr[Token]"* %"$tmpC5", %"RawPtr[Token]" %20) + call void @"=.194"(%"RawPtr[Token]"* %rEnd, %"RawPtr[Token]"* %"$tmpC5") br label %while_step3 while_step3: ; preds = %while_body2 @@ -17644,12 +17468,12 @@ while_step3: ; preds = %while_body2 while_end4: ; preds = %while_block1 %21 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %22 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %21, i32 0, i32 1 - call void @"=.202"(%"RawPtr[Token]"* %22, %"RawPtr[Token]"* %rBegin) + call void @"=.194"(%"RawPtr[Token]"* %22, %"RawPtr[Token]"* %rBegin) ret void } ; Function Attrs: inlinehint nounwind -define internal void @frontPtr.405(%"RawPtr[Token]"* sret %_result, %"ContiguousMemoryRange[Token]" %this) #4 { +define internal void @frontPtr.399(%"RawPtr[Token]"* sret %_result, %"ContiguousMemoryRange[Token]" %this) #4 { %_result.addr = alloca %"RawPtr[Token]"* store %"RawPtr[Token]"* %_result, %"RawPtr[Token]"** %_result.addr %this.addr = alloca %"ContiguousMemoryRange[Token]" @@ -17659,12 +17483,12 @@ define internal void @frontPtr.405(%"RawPtr[Token]"* sret %_result, %"Contiguous code: ; preds = %0 %1 = load %"RawPtr[Token]"*, %"RawPtr[Token]"** %_result.addr %2 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %this.addr, i32 0, i32 0 - call void @ctor.207(%"RawPtr[Token]"* %1, %"RawPtr[Token]"* %2) + call void @ctor.199(%"RawPtr[Token]"* %1, %"RawPtr[Token]"* %2) ret void } ; Function Attrs: inlinehint nounwind -define internal void @backPtr.406(%"RawPtr[Token]"* sret %_result, %"ContiguousMemoryRange[Token]" %this) #4 { +define internal void @backPtr.400(%"RawPtr[Token]"* sret %_result, %"ContiguousMemoryRange[Token]" %this) #4 { %_result.addr = alloca %"RawPtr[Token]"* store %"RawPtr[Token]"* %_result, %"RawPtr[Token]"** %_result.addr %this.addr = alloca %"ContiguousMemoryRange[Token]" @@ -17674,12 +17498,12 @@ define internal void @backPtr.406(%"RawPtr[Token]"* sret %_result, %"ContiguousM code: ; preds = %0 %1 = load %"RawPtr[Token]"*, %"RawPtr[Token]"** %_result.addr %2 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %this.addr, i32 0, i32 1 - call void @ctor.207(%"RawPtr[Token]"* %1, %"RawPtr[Token]"* %2) + call void @ctor.199(%"RawPtr[Token]"* %1, %"RawPtr[Token]"* %2) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.407(%"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"* %other) #3 { +define internal void @ctor.401(%"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"* %other) #3 { %this.addr = alloca %"ContiguousMemoryRange[Token]"* store %"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"** %this.addr %other.addr = alloca %"ContiguousMemoryRange[Token]"* @@ -17691,20 +17515,20 @@ code: ; preds = %0 %2 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %1, i32 0, i32 0 %3 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %other.addr %4 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %3, i32 0, i32 0 - call void @ctor.207(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %4) + call void @ctor.199(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %4) %5 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %this.addr %6 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %5, i32 0, i32 1 %7 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %other.addr %8 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %7, i32 0, i32 1 - call void @ctor.207(%"RawPtr[Token]"* %6, %"RawPtr[Token]"* %8) + call void @ctor.199(%"RawPtr[Token]"* %6, %"RawPtr[Token]"* %8) ret void } ; Function Attrs: inlinehint nounwind -define internal i1 @isEmpty.408(%"ContiguousMemoryRange[Token]" %this) #4 { +define internal i1 @isEmpty.402(%"ContiguousMemoryRange[Token]" %this) #4 { %this.addr = alloca %"ContiguousMemoryRange[Token]" store %"ContiguousMemoryRange[Token]" %this, %"ContiguousMemoryRange[Token]"* %this.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -17712,15 +17536,15 @@ code: ; preds = %0 %2 = load %"RawPtr[Token]", %"RawPtr[Token]"* %1 %3 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %this.addr, i32 0, i32 0 %4 = load %"RawPtr[Token]", %"RawPtr[Token]"* %3 - %5 = call i64 @diff.200(%"RawPtr[Token]" %2, %"RawPtr[Token]" %4) - store i64 0, i64* %tmp.v - %6 = load i64, i64* %tmp.v + %5 = call i64 @diff.192(%"RawPtr[Token]" %2, %"RawPtr[Token]" %4) + store i64 0, i64* %tmp.this + %6 = load i64, i64* %tmp.this %7 = icmp sle i64 %5, %6 ret i1 %7 } ; Function Attrs: inlinehint nounwind -define internal %Token* @front.409(%"ContiguousMemoryRange[Token]" %this) #4 { +define internal %Token* @front.403(%"ContiguousMemoryRange[Token]" %this) #4 { %this.addr = alloca %"ContiguousMemoryRange[Token]" store %"ContiguousMemoryRange[Token]" %this, %"ContiguousMemoryRange[Token]"* %this.addr br label %code @@ -17728,12 +17552,12 @@ define internal %Token* @front.409(%"ContiguousMemoryRange[Token]" %this) #4 { code: ; preds = %0 %1 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %this.addr, i32 0, i32 0 %2 = load %"RawPtr[Token]", %"RawPtr[Token]"* %1 - %3 = call %Token* @value.209(%"RawPtr[Token]" %2) + %3 = call %Token* @value.201(%"RawPtr[Token]" %2) ret %Token* %3 } ; Function Attrs: alwaysinline nounwind -define internal void @popFront.410(%"ContiguousMemoryRange[Token]"* %this) #3 { +define internal void @popFront.404(%"ContiguousMemoryRange[Token]"* %this) #3 { %this.addr = alloca %"ContiguousMemoryRange[Token]"* store %"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"** %this.addr %"$tmpC" = alloca %"RawPtr[Token]" @@ -17745,84 +17569,84 @@ code: ; preds = %0 %3 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %this.addr %4 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %3, i32 0, i32 0 %5 = load %"RawPtr[Token]", %"RawPtr[Token]"* %4 - call void @advance.210(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %5) - call void @"=.202"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %"$tmpC") + call void @advance.202(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %5) + call void @"=.194"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %"$tmpC") ret void } ; Function Attrs: inlinehint nounwind -define internal i8* @back.411(%"Vector[Char]"* %this) #4 { +define internal i8* @back.405(%"Vector[Char]"* %this) #4 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr %"$tmpC" = alloca %"RawPtr[Char]" - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 %1 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %2 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %1, i32 0, i32 1 %3 = load %"RawPtr[Char]", %"RawPtr[Char]"* %2 - store i64 -1, i64* %tmp.v - %4 = load i64, i64* %tmp.v - call void @advance.195(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %3, i64 %4) + store i64 -1, i64* %tmp.this + %4 = load i64, i64* %tmp.this + call void @advance.187(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %3, i64 %4) %5 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC" %6 = call i8* @value(%"RawPtr[Char]" %5) ret i8* %6 } ; Function Attrs: inlinehint nounwind -define internal i32* @back.412(%"Vector[UInt]"* %this) #4 { +define internal i32* @back.406(%"Vector[UInt]"* %this) #4 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr %"$tmpC" = alloca %"RawPtr[UInt]" - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 %1 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %2 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %1, i32 0, i32 1 %3 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %2 - store i64 -1, i64* %tmp.v - %4 = load i64, i64* %tmp.v - call void @advance.413(%"RawPtr[UInt]"* %"$tmpC", %"RawPtr[UInt]" %3, i64 %4) + store i64 -1, i64* %tmp.this + %4 = load i64, i64* %tmp.this + call void @advance.407(%"RawPtr[UInt]"* %"$tmpC", %"RawPtr[UInt]" %3, i64 %4) %5 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %"$tmpC" - %6 = call i32* @value.222(%"RawPtr[UInt]" %5) + %6 = call i32* @value.229(%"RawPtr[UInt]" %5) ret i32* %6 } ; Function Attrs: inlinehint nounwind -define internal void @advance.413(%"RawPtr[UInt]"* sret %_result, %"RawPtr[UInt]" %this, i64 %n) #4 { +define internal void @advance.407(%"RawPtr[UInt]"* sret %_result, %"RawPtr[UInt]" %this, i64 %n) #4 { %_result.addr = alloca %"RawPtr[UInt]"* store %"RawPtr[UInt]"* %_result, %"RawPtr[UInt]"** %_result.addr %this.addr = alloca %"RawPtr[UInt]" store %"RawPtr[UInt]" %this, %"RawPtr[UInt]"* %this.addr %n.addr = alloca i64 store i64 %n, i64* %n.addr - %tmp.v = alloca i64 - %tmp.v1 = alloca i64 + %tmp.this = alloca i64 + %tmp.this1 = alloca i64 br label %code code: ; preds = %0 %1 = load %"RawPtr[UInt]"*, %"RawPtr[UInt]"** %_result.addr %2 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %this.addr - %3 = call i8* @bytePtr.214(%"RawPtr[UInt]" %2) + %3 = call i8* @bytePtr.206(%"RawPtr[UInt]" %2) %4 = load i64, i64* %n.addr - store i64 4, i64* %tmp.v1 - %5 = load i64, i64* %tmp.v1 + store i64 4, i64* %tmp.this1 + %5 = load i64, i64* %tmp.this1 %6 = mul i64 %4, %5 - store i64 %6, i64* %tmp.v - %7 = load i64, i64* %tmp.v + store i64 %6, i64* %tmp.this + %7 = load i64, i64* %tmp.this %8 = call i8* @ptrAdd(i8* %3, i64 %7) - call void @ctor.219(%"RawPtr[UInt]"* %1, i8* %8) + call void @ctor.211(%"RawPtr[UInt]"* %1, i8* %8) ret void } ; Function Attrs: inlinehint nounwind -define internal void @popBack.414(%"Vector[UInt]"* %this) #4 { +define internal void @popBack.408(%"Vector[UInt]"* %this) #4 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr %"$tmpC" = alloca %"RawPtr[UInt]" - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -17831,20 +17655,20 @@ code: ; preds = %0 %3 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %4 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %3, i32 0, i32 1 %5 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %4 - store i64 -1, i64* %tmp.v - %6 = load i64, i64* %tmp.v - call void @advance.413(%"RawPtr[UInt]"* %"$tmpC", %"RawPtr[UInt]" %5, i64 %6) - call void @"=.215"(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %"$tmpC") + store i64 -1, i64* %tmp.this + %6 = load i64, i64* %tmp.this + call void @advance.407(%"RawPtr[UInt]"* %"$tmpC", %"RawPtr[UInt]" %5, i64 %6) + call void @"=.207"(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %"$tmpC") %7 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %8 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %7, i32 0, i32 1 %9 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %8 - %10 = call i32* @value.222(%"RawPtr[UInt]" %9) + %10 = call i32* @value.229(%"RawPtr[UInt]" %9) %11 = load i32, i32* %10 ret void } ; Function Attrs: inlinehint nounwind -define internal void @toString.415(%String* sret %_result, %StringRef %a1, i32 %a2, %StringRef %a3, i32 %a4) #4 { +define internal void @toString.409(%String* sret %_result, %StringRef %a1, i32 %a2, %StringRef %a3, i32 %a4) #4 { %_result.addr = alloca %String* store %String* %_result, %String** %_result.addr %a1.addr = alloca %StringRef @@ -17859,29 +17683,29 @@ define internal void @toString.415(%String* sret %_result, %StringRef %a1, i32 % br label %code code: ; preds = %0 - call void @ctor.295(%StringOutputStream* %s) + call void @ctor.289(%StringOutputStream* %s) %1 = call %StringOutputStream* @"<<"(%StringOutputStream* %s, %StringRef* %a1.addr) - %2 = call %StringOutputStream* @"<<.416"(%StringOutputStream* %1, i32* %a2.addr) + %2 = call %StringOutputStream* @"<<.410"(%StringOutputStream* %1, i32* %a2.addr) %3 = call %StringOutputStream* @"<<"(%StringOutputStream* %2, %StringRef* %a3.addr) - %4 = call %StringOutputStream* @"<<.416"(%StringOutputStream* %3, i32* %a4.addr) + %4 = call %StringOutputStream* @"<<.410"(%StringOutputStream* %3, i32* %a4.addr) %5 = load %String*, %String** %_result.addr %6 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %s, i32 0, i32 0 - call void @ctor.192(%String* %5, %String* %6) - call void @dtor.297(%StringOutputStream* %s) + call void @ctor.184(%String* %5, %String* %6) + call void @dtor.291(%StringOutputStream* %s) ret void dumy_block: ; No predecessors! - call void @dtor.297(%StringOutputStream* %s) + call void @dtor.291(%StringOutputStream* %s) ret void } ; Function Attrs: inlinehint nounwind -define internal %StringOutputStream* @"<<.416"(%StringOutputStream* %s, i32* %x) #4 { +define internal %StringOutputStream* @"<<.410"(%StringOutputStream* %s, i32* %x) #4 { %s.addr = alloca %StringOutputStream* store %StringOutputStream* %s, %StringOutputStream** %s.addr %x.addr = alloca i32* store i32* %x, i32** %x.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -17889,32 +17713,30 @@ code: ; preds = %0 %2 = load i32*, i32** %x.addr %3 = load i32, i32* %2 %4 = zext i32 %3 to i64 - store i64 %4, i64* %tmp.v - %5 = load i64, i64* %tmp.v - call void @"<<<.417"(%StringOutputStream* %1, i64 %5) + store i64 %4, i64* %tmp.this + %5 = load i64, i64* %tmp.this + call void @"<<<.411"(%StringOutputStream* %1, i64 %5) %6 = load %StringOutputStream*, %StringOutputStream** %s.addr ret %StringOutputStream* %6 } ; Function Attrs: alwaysinline nounwind -define internal void @"<<<.417"(%StringOutputStream* %this, i64 %x) #3 { +define internal void @"<<<.411"(%StringOutputStream* %this, i64 %x) #3 { %this.addr = alloca %StringOutputStream* store %StringOutputStream* %this, %StringOutputStream** %this.addr %x.addr = alloca i64 store i64 %x, i64* %x.addr - %"$tmpC" = alloca %StringRef - %"$tmpC1" = alloca %String + %"$tmpC" = alloca %String br label %code code: ; preds = %0 %1 = load %StringOutputStream*, %StringOutputStream** %this.addr %2 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %1, i32 0, i32 0 %3 = load i64, i64* %x.addr - call void @ulongToString(%String* %"$tmpC1", i64 %3) - call void @all.385(%StringRef* %"$tmpC", %String* %"$tmpC1") - %4 = load %StringRef, %StringRef* %"$tmpC" + call void @ulongToString(%String* %"$tmpC", i64 %3) + %4 = call %StringRef @all.379(%String* %"$tmpC") call void @append(%String* %2, %StringRef %4) - call void @dtor.229(%String* %"$tmpC1") + call void @dtor.218(%String* %"$tmpC") ret void } @@ -17929,25 +17751,23 @@ define internal void @ulongToString(%String* sret %_result, i64 %x) #4 { br label %code code: ; preds = %0 - %1 = bitcast [16 x i8]* %buf to i8* - store i8 0, i8* %1 - %2 = load i64, i64* %x.addr - %3 = bitcast [16 x i8]* %buf to i8* - call void @_ULong_to_CString(i64 %2, i8* %3) - %4 = load %String*, %String** %_result.addr - %5 = bitcast [16 x i8]* %buf to i8* - %6 = call %StringRef @_String_fromCString(i8* %5) - store %StringRef %6, %StringRef* %"$tmpForRef" - call void @ctor.370(%String* %4, %StringRef* %"$tmpForRef") + %1 = load i64, i64* %x.addr + %2 = bitcast [16 x i8]* %buf to i8* + call void @_ULong_to_CString(i64 %1, i8* %2) + %3 = load %String*, %String** %_result.addr + %4 = bitcast [16 x i8]* %buf to i8* + %5 = call %StringRef @_String_fromCString(i8* %4) + store %StringRef %5, %StringRef* %"$tmpForRef" + call void @ctor.364(%String* %3, %StringRef* %"$tmpForRef") ret void } ; Function Attrs: inlinehint nounwind -define internal void @popBack.418(%"Vector[Char]"* %this) #4 { +define internal void @popBack.412(%"Vector[Char]"* %this) #4 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr %"$tmpC" = alloca %"RawPtr[Char]" - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -17956,10 +17776,10 @@ code: ; preds = %0 %3 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %4 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %3, i32 0, i32 1 %5 = load %"RawPtr[Char]", %"RawPtr[Char]"* %4 - store i64 -1, i64* %tmp.v - %6 = load i64, i64* %tmp.v - call void @advance.195(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %5, i64 %6) - call void @"=.184"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %"$tmpC") + store i64 -1, i64* %tmp.this + %6 = load i64, i64* %tmp.this + call void @advance.187(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %5, i64 %6) + call void @"=.178"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %"$tmpC") %7 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %8 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %7, i32 0, i32 1 %9 = load %"RawPtr[Char]", %"RawPtr[Char]"* %8 @@ -17969,7 +17789,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @ctor.419(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]" %tokens, %ExternalErrorReporter %errorReporter) #4 { +define internal void @ctor.413(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]" %tokens, %ExternalErrorReporter %errorReporter) #4 { %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %tokens.addr = alloca %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]" @@ -17981,11 +17801,11 @@ define internal void @ctor.419(%"SparrowParser[SparrowLayoutDecoder[SparrowScann code: ; preds = %0 %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 1 - call void @ctor.162(%Token* %2) + call void @ctor.156(%Token* %2) %3 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %4 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %3, i32 0, i32 0 %5 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %tokens.addr - call void @ctor.420(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %4, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]" %5) + call void @ctor.414(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %4, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]" %5) %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %7 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %6, i32 0, i32 2 store i1 false, i1* %7 @@ -17993,36 +17813,36 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @ctor.420(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]" %src) #4 { +define internal void @ctor.414(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]" %src) #4 { %this.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr %src.addr = alloca %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]" store %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]" %src, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %src.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 %"$tmpC" = alloca %Token br label %code code: ; preds = %0 %1 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr %2 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %1, i32 0, i32 0 - call void @ctor.165(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %2) + call void @ctor.159(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %2) %3 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr %4 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %3, i32 0, i32 0 - call void @"=.259"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %4, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %src.addr) + call void @"=.253"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %4, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %src.addr) %5 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr %6 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %5, i32 0, i32 1 - call void @ctor.167(%"Vector[Token]"* %6) + call void @ctor.161(%"Vector[Token]"* %6) %7 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr %8 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %7, i32 0, i32 1 - store i64 10, i64* %tmp.v - %9 = load i64, i64* %tmp.v - call void @reserve.306(%"Vector[Token]"* %8, i64 %9) + store i64 10, i64* %tmp.this + %9 = load i64, i64* %tmp.this + call void @reserve.300(%"Vector[Token]"* %8, i64 %9) br label %if_block if_block: ; preds = %code %10 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr %11 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %10, i32 0, i32 0 - %12 = call i1 @"pre_!!.421"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %11) + %12 = call i1 @"pre_!!.415"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %11) br i1 %12, label %if_then, label %if_end if_then: ; preds = %if_block @@ -18030,9 +17850,9 @@ if_then: ; preds = %if_block %14 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %13, i32 0, i32 1 %15 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr %16 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %15, i32 0, i32 0 - call void @"post_++.423"(%Token* %"$tmpC", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %16) - call void @"+=.311"(%"Vector[Token]"* %14, %Token* %"$tmpC") - call void @dtor.228(%Token* %"$tmpC") + call void @"post_++.417"(%Token* %"$tmpC", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %16) + call void @"+=.305"(%"Vector[Token]"* %14, %Token* %"$tmpC") + call void @dtor.217(%Token* %"$tmpC") br label %if_end if_end: ; preds = %if_then, %if_block @@ -18040,20 +17860,20 @@ if_end: ; preds = %if_then, %if_block } ; Function Attrs: inlinehint nounwind -define internal i1 @"pre_!!.421"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %r) #4 { +define internal i1 @"pre_!!.415"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %r) #4 { %r.addr = alloca %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* store %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %r, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %r.addr br label %code code: ; preds = %0 %1 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %r.addr - %2 = call i1 @isEmpty.422(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %1) + %2 = call i1 @isEmpty.416(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %1) %3 = xor i1 true, %2 ret i1 %3 } ; Function Attrs: inlinehint nounwind -define internal i1 @isEmpty.422(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this) #4 { +define internal i1 @isEmpty.416(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this) #4 { %this.addr = alloca %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* store %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr br label %code @@ -18068,7 +17888,7 @@ code: ; preds = %0 cond.true: ; preds = %code %5 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %6 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 0 - %7 = call i1 @isEmpty.391(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %6) + %7 = call i1 @isEmpty.385(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %6) br label %cond.end cond.false: ; preds = %code @@ -18080,7 +17900,7 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: inlinehint nounwind -define internal void @"post_++.423"(%Token* sret %_result, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %r) #4 { +define internal void @"post_++.417"(%Token* sret %_result, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %r) #4 { %_result.addr = alloca %Token* store %Token* %_result, %Token** %_result.addr %r.addr = alloca %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* @@ -18090,16 +17910,16 @@ define internal void @"post_++.423"(%Token* sret %_result, %"SparrowLayoutDecode code: ; preds = %0 %1 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %r.addr - call void @front.396(%Token* %res, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %1) + call void @front.390(%Token* %res, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %1) %2 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %r.addr - call void @popFront.395(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %2) + call void @popFront.389(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %2) %3 = load %Token*, %Token** %_result.addr - call void @ctor.190(%Token* %3, %Token* %res) - call void @dtor.228(%Token* %res) + call void @ctor.182(%Token* %3, %Token* %res) + call void @dtor.217(%Token* %res) ret void dumy_block: ; No predecessors! - call void @dtor.228(%Token* %res) + call void @dtor.217(%Token* %res) ret void } @@ -18147,7 +17967,7 @@ code: ; preds = %0 %9 = load %Location, %Location* %8 %10 = load i1*, i1** %arg4.addr %11 = load i1, i1* %10 - call void @ctor.291(%ParserContext* %3, %StringRef %5, %StringRef %7, %Location %9, i1 %11) + call void @ctor.285(%ParserContext* %3, %StringRef %5, %StringRef %7, %Location %9, i1 %11) %12 = load %ParserContext*, %ParserContext** %res ret %ParserContext* %12 } @@ -18165,14 +17985,14 @@ define %ParserContext* @spr_parserIf_createParser(%StringRef %filename, %StringR code1: ; preds = %0 %1 = load %Location*, %Location** %loc.addr - %2 = call %ParserContext* @new.424(%StringRef* %filename.addr, %StringRef* %code.addr, %Location* %1) + %2 = call %ParserContext* @new.418(%StringRef* %filename.addr, %StringRef* %code.addr, %Location* %1) store %ParserContext* %2, %ParserContext** %res %3 = load %ParserContext*, %ParserContext** %res ret %ParserContext* %3 } ; Function Attrs: inlinehint nounwind -define internal %ParserContext* @new.424(%StringRef* %arg1, %StringRef* %arg2, %Location* %arg3) #4 { +define internal %ParserContext* @new.418(%StringRef* %arg1, %StringRef* %arg2, %Location* %arg3) #4 { %arg1.addr = alloca %StringRef* store %StringRef* %arg1, %StringRef** %arg1.addr %arg2.addr = alloca %StringRef* @@ -18193,7 +18013,7 @@ code: ; preds = %0 %7 = load %StringRef, %StringRef* %6 %8 = load %Location*, %Location** %arg3.addr %9 = load %Location, %Location* %8 - call void @ctor.291(%ParserContext* %3, %StringRef %5, %StringRef %7, %Location %9, i1 false) + call void @ctor.285(%ParserContext* %3, %StringRef %5, %StringRef %7, %Location %9, i1 false) %10 = load %ParserContext*, %ParserContext** %res ret %ParserContext* %10 } @@ -18227,7 +18047,7 @@ if_block: ; preds = %code if_then: ; preds = %if_block %4 = load %ParserContext*, %ParserContext** %obj.addr - call void @dtor.226(%ParserContext* %4) + call void @dtor.215(%ParserContext* %4) %5 = load %ParserContext*, %ParserContext** %obj.addr %6 = bitcast %ParserContext* %5 to i8* call void @free(i8* %6) @@ -18250,9 +18070,9 @@ code: ; preds = %0 %1 = load %Token*, %Token** %outToken.addr %2 = load %ParserContext*, %ParserContext** %ctx.addr %3 = getelementptr inbounds %ParserContext, %ParserContext* %2, i32 0, i32 3 - call void @"post_++.313"(%Token* %"$tmpC", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %3) - call void @"=.254"(%Token* %1, %Token* %"$tmpC") - call void @dtor.228(%Token* %"$tmpC") + call void @"post_++.307"(%Token* %"$tmpC", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %3) + call void @"=.248"(%Token* %1, %Token* %"$tmpC") + call void @dtor.217(%Token* %"$tmpC") ret void } @@ -18280,7 +18100,7 @@ define internal void @parseModule(%Node* sret %_result, %"SparrowParser[SparrowL %loc = alloca %Location %moduleName = alloca %Node %decls = alloca %Node - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %"$tmpForRef" = alloca %Node %"$tmpC" = alloca %Location %"$tmpC1" = alloca %Location @@ -18291,12 +18111,12 @@ code: ; preds = %0 call void @curLoc(%Location* %loc, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1) %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseModuleName(%Node* %moduleName, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2) - call void @ctor.436(%Node* %decls) + call void @ctor.432(%Node* %decls) %3 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseStmts(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %3, i1 true, %Node* %decls) %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 0) - %5 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 0) + %5 = load %TokenType, %TokenType* %tmp.this %6 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %4, %TokenType %5) %7 = load %Node*, %Node** %_result.addr %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr @@ -18306,7 +18126,7 @@ code: ; preds = %0 %10 = load %Node, %Node* %decls %11 = call %Node @comp_parser_mkModule(%Location* %"$tmpC", %Node %9, %Node %10) store %Node %11, %Node* %"$tmpForRef" - call void @ctor.434(%Node* %7, %Node* %"$tmpForRef") + call void @ctor.428(%Node* %7, %Node* %"$tmpForRef") ret void } @@ -18323,19 +18143,19 @@ code: ; preds = %0 %1 = load %Location*, %Location** %_result.addr %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %3 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, i32 0, i32 0 - call void @"pre_*.425"(%Token* %"$tmpC", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %3) + call void @"pre_*.419"(%Token* %"$tmpC", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %3) %4 = getelementptr inbounds %Token, %Token* %"$tmpC", i32 0, i32 0 - call void @ctor.177(%Location* %1, %Location* %4) - call void @dtor.228(%Token* %"$tmpC") + call void @ctor.171(%Location* %1, %Location* %4) + call void @dtor.217(%Token* %"$tmpC") ret void dumy_block: ; No predecessors! - call void @dtor.228(%Token* %"$tmpC") + call void @dtor.217(%Token* %"$tmpC") ret void } ; Function Attrs: inlinehint nounwind -define internal void @"pre_*.425"(%Token* sret %_result, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %r) #4 { +define internal void @"pre_*.419"(%Token* sret %_result, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %r) #4 { %_result.addr = alloca %Token* store %Token* %_result, %Token** %_result.addr %r.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* @@ -18345,12 +18165,12 @@ define internal void @"pre_*.425"(%Token* sret %_result, %"RangeWithLookahead[Sp code: ; preds = %0 %1 = load %Token*, %Token** %_result.addr %2 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %r.addr - call void @front.426(%Token* %1, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %2) + call void @front.420(%Token* %1, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %2) ret void } ; Function Attrs: inlinehint nounwind -define internal void @front.426(%Token* sret %_result, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this) #4 { +define internal void @front.420(%Token* sret %_result, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this) #4 { %_result.addr = alloca %Token* store %Token* %_result, %Token** %_result.addr %this.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* @@ -18361,8 +18181,8 @@ code: ; preds = %0 %1 = load %Token*, %Token** %_result.addr %2 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr %3 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %2, i32 0, i32 1 - %4 = call %Token* @front.394(%"Vector[Token]"* %3) - call void @ctor.190(%Token* %1, %Token* %4) + %4 = call %Token* @front.388(%"Vector[Token]"* %3) + call void @ctor.182(%Token* %1, %Token* %4) ret void } @@ -18372,9 +18192,9 @@ define internal void @parseModuleName(%Node* sret %_result, %"SparrowParser[Spar store %Node* %_result, %Node** %_result.addr %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %qid = alloca %Node - %tmp.v1 = alloca %TokenType + %tmp.this1 = alloca %TokenType br label %code code: ; preds = %0 @@ -18382,8 +18202,8 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 2) - %2 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 2) + %2 = load %TokenType, %TokenType* %tmp.this %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_end @@ -18391,16 +18211,16 @@ if_then: ; preds = %if_block %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseQualifiedName(%Node* %qid, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %4, i1 false) %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v1, i32 31) - %6 = load %TokenType, %TokenType* %tmp.v1 + call void @ctor.313(%TokenType* %tmp.this1, i32 31) + %6 = load %TokenType, %TokenType* %tmp.this1 %7 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, %TokenType %6) %8 = load %Node*, %Node** %_result.addr - call void @ctor.434(%Node* %8, %Node* %qid) + call void @ctor.428(%Node* %8, %Node* %qid) ret void if_end: ; preds = %dumy_block, %if_block %9 = load %Node*, %Node** %_result.addr - call void @ctor.436(%Node* %9) + call void @ctor.432(%Node* %9) ret void dumy_block: ; No predecessors! @@ -18423,9 +18243,9 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 0 - call void @"pre_*.425"(%Token* %"$tmpC", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %2) + call void @"pre_*.419"(%Token* %"$tmpC", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %2) %3 = getelementptr inbounds %Token, %Token* %"$tmpC", i32 0, i32 1 - %4 = call i1 @"==.279"(%TokenType* %3, %TokenType* %t.addr) + %4 = call i1 @"==.273"(%TokenType* %3, %TokenType* %t.addr) br i1 %4, label %if_then, label %if_end if_then: ; preds = %if_block @@ -18433,14 +18253,14 @@ if_then: ; preds = %if_block %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 1 %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %8 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %7, i32 0, i32 0 - call void @"post_++.427"(%Token* %"$tmpC1", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %8) - call void @"=.254"(%Token* %6, %Token* %"$tmpC1") - call void @dtor.228(%Token* %"$tmpC1") - call void @dtor.228(%Token* %"$tmpC") + call void @"post_++.421"(%Token* %"$tmpC1", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %8) + call void @"=.248"(%Token* %6, %Token* %"$tmpC1") + call void @dtor.217(%Token* %"$tmpC1") + call void @dtor.217(%Token* %"$tmpC") ret i1 true if_end: ; preds = %dumy_block, %if_block - call void @dtor.228(%Token* %"$tmpC") + call void @dtor.217(%Token* %"$tmpC") ret i1 false dumy_block: ; No predecessors! @@ -18448,7 +18268,7 @@ dumy_block: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal void @"post_++.427"(%Token* sret %_result, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %r) #4 { +define internal void @"post_++.421"(%Token* sret %_result, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %r) #4 { %_result.addr = alloca %Token* store %Token* %_result, %Token** %_result.addr %r.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* @@ -18458,39 +18278,39 @@ define internal void @"post_++.427"(%Token* sret %_result, %"RangeWithLookahead[ code: ; preds = %0 %1 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %r.addr - call void @front.426(%Token* %res, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %1) + call void @front.420(%Token* %res, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %1) %2 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %r.addr - call void @popFront.428(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %2) + call void @popFront.422(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %2) %3 = load %Token*, %Token** %_result.addr - call void @ctor.190(%Token* %3, %Token* %res) - call void @dtor.228(%Token* %res) + call void @ctor.182(%Token* %3, %Token* %res) + call void @dtor.217(%Token* %res) ret void dumy_block: ; No predecessors! - call void @dtor.228(%Token* %res) + call void @dtor.217(%Token* %res) ret void } ; Function Attrs: inlinehint nounwind -define internal void @popFront.428(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this) #4 { +define internal void @popFront.422(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this) #4 { %this.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 %"$tmpC" = alloca %Token br label %code code: ; preds = %0 %1 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr %2 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %1, i32 0, i32 1 - store i64 0, i64* %tmp.v - %3 = load i64, i64* %tmp.v - call void @remove.398(%"Vector[Token]"* %2, i64 %3) + store i64 0, i64* %tmp.this + %3 = load i64, i64* %tmp.this + call void @remove.392(%"Vector[Token]"* %2, i64 %3) br label %if_block if_block: ; preds = %code %4 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr %5 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %4, i32 0, i32 1 - %6 = call i1 @isEmpty.392(%"Vector[Token]"* %5) + %6 = call i1 @isEmpty.386(%"Vector[Token]"* %5) br i1 %6, label %cond.true, label %cond.false if_then: ; preds = %cond.end @@ -18498,9 +18318,9 @@ if_then: ; preds = %cond.end %8 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %7, i32 0, i32 1 %9 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr %10 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %9, i32 0, i32 0 - call void @"post_++.423"(%Token* %"$tmpC", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %10) - call void @"+=.311"(%"Vector[Token]"* %8, %Token* %"$tmpC") - call void @dtor.228(%Token* %"$tmpC") + call void @"post_++.417"(%Token* %"$tmpC", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %10) + call void @"+=.305"(%"Vector[Token]"* %8, %Token* %"$tmpC") + call void @dtor.217(%Token* %"$tmpC") br label %if_end if_end: ; preds = %if_then, %cond.end @@ -18509,7 +18329,7 @@ if_end: ; preds = %if_then, %cond.end cond.true: ; preds = %if_block %11 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr %12 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %11, i32 0, i32 0 - %13 = call i1 @"pre_!!.421"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %12) + %13 = call i1 @"pre_!!.415"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %12) br label %cond.end cond.false: ; preds = %if_block @@ -18529,62 +18349,58 @@ define internal void @parseQualifiedName(%Node* sret %_result, %"SparrowParser[S %allowStar.addr = alloca i1 store i1 %allowStar, i1* %allowStar.addr %loc = alloca %Location - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %base = alloca %Node %"$tmpForRef" = alloca %Node - %"$tmpC" = alloca %StringRef %lastId = alloca %String - %tmp.v1 = alloca %TokenType - %tmp.v2 = alloca %TokenType + %tmp.this1 = alloca %TokenType + %tmp.this2 = alloca %TokenType %"$tmpForRef3" = alloca %Node + %"$tmpC" = alloca %Location %"$tmpC4" = alloca %Location - %"$tmpC5" = alloca %Location - %"$tmpC6" = alloca %StringRef - %tmp.v10 = alloca %TokenType - %"$tmpForRef11" = alloca %Node - %"$tmpC12" = alloca %Location - %"$tmpC13" = alloca %Location - %"$tmpC14" = alloca %StringRef + %tmp.this8 = alloca %TokenType + %"$tmpForRef9" = alloca %Node + %"$tmpC10" = alloca %Location + %"$tmpC11" = alloca %Location br label %code code: ; preds = %0 %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @curLoc(%Location* %loc, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1) %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 36) - %3 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 36) + %3 = load %TokenType, %TokenType* %tmp.this %4 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, %TokenType %3) %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 1 %7 = getelementptr inbounds %Token, %Token* %6, i32 0, i32 2 - call void @asStringRef(%StringRef* %"$tmpC", %String* %7) - %8 = load %StringRef, %StringRef* %"$tmpC" + %8 = call %StringRef @asStringRef(%String* %7) %9 = call %Node @comp_parser_mkIdentifier(%Location* %loc, %StringRef %8) store %Node %9, %Node* %"$tmpForRef" - call void @ctor.434(%Node* %base, %Node* %"$tmpForRef") + call void @ctor.428(%Node* %base, %Node* %"$tmpForRef") %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %11 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %10, i32 0, i32 1 %12 = getelementptr inbounds %Token, %Token* %11, i32 0, i32 2 - call void @ctor.192(%String* %lastId, %String* %12) + call void @ctor.184(%String* %lastId, %String* %12) br label %while_block while_block: ; preds = %while_step, %code %13 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v1, i32 33) - %14 = load %TokenType, %TokenType* %tmp.v1 + call void @ctor.313(%TokenType* %tmp.this1, i32 33) + %14 = load %TokenType, %TokenType* %tmp.this1 %15 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %13, %TokenType %14) br i1 %15, label %while_body, label %while_end while_body: ; preds = %while_block br label %if_block -while_step: ; preds = %cond_destruct_end9 +while_step: ; preds = %cond_destruct_end7 br label %while_block while_end: ; preds = %cond_destruct_end, %while_block %16 = load %Node*, %Node** %_result.addr - call void @ctor.434(%Node* %16, %Node* %base) - call void @dtor.229(%String* %lastId) + call void @ctor.428(%Node* %16, %Node* %base) + call void @dtor.218(%String* %lastId) ret void if_block: ; preds = %while_body @@ -18593,26 +18409,25 @@ if_block: ; preds = %while_body if_then: ; preds = %cond.end %18 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @lastLoc(%Location* %"$tmpC5", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %18) - call void @span(%Location* %"$tmpC4", %Location* %loc, %Location* %"$tmpC5") + call void @lastLoc(%Location* %"$tmpC4", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %18) + call void @span(%Location* %"$tmpC", %Location* %loc, %Location* %"$tmpC4") %19 = load %Node, %Node* %base %20 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %21 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %20, i32 0, i32 1 %22 = getelementptr inbounds %Token, %Token* %21, i32 0, i32 2 - call void @asStringRef(%StringRef* %"$tmpC6", %String* %22) - %23 = load %StringRef, %StringRef* %"$tmpC6" - %24 = call %Node @comp_parser_mkStarExpr(%Location* %"$tmpC4", %Node %19, %StringRef %23) + %23 = call %StringRef @asStringRef(%String* %22) + %24 = call %Node @comp_parser_mkStarExpr(%Location* %"$tmpC", %Node %19, %StringRef %23) store %Node %24, %Node* %"$tmpForRef3" - call void @"=.435"(%Node* %base, %Node* %"$tmpForRef3") + call void @"=.430"(%Node* %base, %Node* %"$tmpForRef3") br i1 %17, label %cond_destruct_alt1, label %cond_destruct_alt2 if_end: ; preds = %dumy_block, %cond.end - br i1 %17, label %cond_destruct_alt17, label %cond_destruct_alt28 + br i1 %17, label %cond_destruct_alt15, label %cond_destruct_alt26 cond.true: ; preds = %if_block %25 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v2, i32 37) - %26 = load %TokenType, %TokenType* %tmp.v2 + call void @ctor.313(%TokenType* %tmp.this2, i32 37) + %26 = load %TokenType, %TokenType* %tmp.this2 %27 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %25, %TokenType %26) br label %cond.end @@ -18635,33 +18450,32 @@ cond_destruct_end: ; preds = %cond_destruct_alt2, dumy_block: ; No predecessors! br label %if_end -cond_destruct_alt17: ; preds = %if_end - br label %cond_destruct_end9 +cond_destruct_alt15: ; preds = %if_end + br label %cond_destruct_end7 -cond_destruct_alt28: ; preds = %if_end - br label %cond_destruct_end9 +cond_destruct_alt26: ; preds = %if_end + br label %cond_destruct_end7 -cond_destruct_end9: ; preds = %cond_destruct_alt28, %cond_destruct_alt17 +cond_destruct_end7: ; preds = %cond_destruct_alt26, %cond_destruct_alt15 %28 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v10, i32 36) - %29 = load %TokenType, %TokenType* %tmp.v10 + call void @ctor.313(%TokenType* %tmp.this8, i32 36) + %29 = load %TokenType, %TokenType* %tmp.this8 %30 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %28, %TokenType %29) %31 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @lastLoc(%Location* %"$tmpC13", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %31) - call void @span(%Location* %"$tmpC12", %Location* %loc, %Location* %"$tmpC13") + call void @lastLoc(%Location* %"$tmpC11", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %31) + call void @span(%Location* %"$tmpC10", %Location* %loc, %Location* %"$tmpC11") %32 = load %Node, %Node* %base %33 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %34 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %33, i32 0, i32 1 %35 = getelementptr inbounds %Token, %Token* %34, i32 0, i32 2 - call void @asStringRef(%StringRef* %"$tmpC14", %String* %35) - %36 = load %StringRef, %StringRef* %"$tmpC14" - %37 = call %Node @comp_parser_mkCompoundExpr(%Location* %"$tmpC12", %Node %32, %StringRef %36) - store %Node %37, %Node* %"$tmpForRef11" - call void @"=.435"(%Node* %base, %Node* %"$tmpForRef11") + %36 = call %StringRef @asStringRef(%String* %35) + %37 = call %Node @comp_parser_mkCompoundExpr(%Location* %"$tmpC10", %Node %32, %StringRef %36) + store %Node %37, %Node* %"$tmpForRef9" + call void @"=.430"(%Node* %base, %Node* %"$tmpForRef9") br label %while_step -dumy_block15: ; No predecessors! - call void @dtor.229(%String* %lastId) +dumy_block12: ; No predecessors! + call void @dtor.218(%String* %lastId) ret void } @@ -18713,7 +18527,7 @@ if_end3: ; preds = %dumy_block4, %if_bl %10 = load %StringRef, %StringRef* %tmp.StringRef %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %12 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11, i32 0, i32 0 - call void @"pre_*.425"(%Token* %"$tmpC5", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %12) + call void @"pre_*.419"(%Token* %"$tmpC5", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %12) %13 = getelementptr inbounds %Token, %Token* %"$tmpC5", i32 0, i32 1 %14 = load %TokenType, %TokenType* %13 %15 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef6, i32 0, i32 0 @@ -18722,10 +18536,10 @@ if_end3: ; preds = %dumy_block4, %if_bl store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @str.91, i32 0, i32 12), i8** %16 %17 = load %StringRef, %StringRef* %tmp.StringRef6 %18 = load %TokenType, %TokenType* %t.addr - call void @toString.430(%String* %"$tmpC", %StringRef %10, %TokenType %14, %StringRef %17, %TokenType %18) - call void @reportError.429(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %7, %String* %"$tmpC") - call void @dtor.229(%String* %"$tmpC") - call void @dtor.228(%Token* %"$tmpC5") + call void @toString.424(%String* %"$tmpC", %StringRef %10, %TokenType %14, %StringRef %17, %TokenType %18) + call void @reportError.423(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %7, %String* %"$tmpC") + call void @dtor.218(%String* %"$tmpC") + call void @dtor.217(%Token* %"$tmpC5") ret i1 false dumy_block4: ; No predecessors! @@ -18733,14 +18547,14 @@ dumy_block4: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal void @reportError.429(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %String* %msg) #4 { +define internal void @reportError.423(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %String* %msg) #4 { %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %msg.addr = alloca %String* store %String* %msg, %String** %msg.addr %"$tmpC" = alloca %Token %"$tmpC1" = alloca %Token - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %"$tmpC2" = alloca %Token br label %code @@ -18749,21 +18563,21 @@ code: ; preds = %0 %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 3 %3 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %4 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %3, i32 0, i32 0 - call void @"pre_*.425"(%Token* %"$tmpC", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %4) + call void @"pre_*.419"(%Token* %"$tmpC", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %4) %5 = getelementptr inbounds %Token, %Token* %"$tmpC", i32 0, i32 0 %6 = load %Location, %Location* %5 %7 = load %String*, %String** %msg.addr call void @reportError(%ExternalErrorReporter* %2, %Location %6, %String* %7) - call void @dtor.228(%Token* %"$tmpC") + call void @dtor.217(%Token* %"$tmpC") br label %while_block while_block: ; preds = %while_step, %code %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %9 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8, i32 0, i32 0 - call void @"pre_*.425"(%Token* %"$tmpC1", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %9) + call void @"pre_*.419"(%Token* %"$tmpC1", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %9) %10 = getelementptr inbounds %Token, %Token* %"$tmpC1", i32 0, i32 1 - call void @ctor.319(%TokenType* %tmp.v, i32 0) - %11 = call i1 @"==.279"(%TokenType* %10, %TokenType* %tmp.v) + call void @ctor.313(%TokenType* %tmp.this, i32 0) + %11 = call i1 @"==.273"(%TokenType* %10, %TokenType* %tmp.this) %12 = xor i1 true, %11 br i1 %12, label %while_body, label %while_end @@ -18772,16 +18586,16 @@ while_body: ; preds = %while_block %14 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %13, i32 0, i32 1 %15 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %16 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %15, i32 0, i32 0 - call void @"post_++.427"(%Token* %"$tmpC2", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %16) - call void @"=.254"(%Token* %14, %Token* %"$tmpC2") - call void @dtor.228(%Token* %"$tmpC2") + call void @"post_++.421"(%Token* %"$tmpC2", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %16) + call void @"=.248"(%Token* %14, %Token* %"$tmpC2") + call void @dtor.217(%Token* %"$tmpC2") br label %while_step while_step: ; preds = %while_body br label %while_block while_end: ; preds = %while_block - call void @dtor.228(%Token* %"$tmpC1") + call void @dtor.217(%Token* %"$tmpC1") %17 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %18 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %17, i32 0, i32 2 store i1 true, i1* %18 @@ -18789,7 +18603,7 @@ while_end: ; preds = %while_block } ; Function Attrs: inlinehint nounwind -define internal void @toString.430(%String* sret %_result, %StringRef %a1, %TokenType %a2, %StringRef %a3, %TokenType %a4) #4 { +define internal void @toString.424(%String* sret %_result, %StringRef %a1, %TokenType %a2, %StringRef %a3, %TokenType %a4) #4 { %_result.addr = alloca %String* store %String* %_result, %String** %_result.addr %a1.addr = alloca %StringRef @@ -18804,24 +18618,24 @@ define internal void @toString.430(%String* sret %_result, %StringRef %a1, %Toke br label %code code: ; preds = %0 - call void @ctor.295(%StringOutputStream* %s) + call void @ctor.289(%StringOutputStream* %s) %1 = call %StringOutputStream* @"<<"(%StringOutputStream* %s, %StringRef* %a1.addr) - %2 = call %StringOutputStream* @"<<.431"(%StringOutputStream* %1, %TokenType* %a2.addr) + %2 = call %StringOutputStream* @"<<.425"(%StringOutputStream* %1, %TokenType* %a2.addr) %3 = call %StringOutputStream* @"<<"(%StringOutputStream* %2, %StringRef* %a3.addr) - %4 = call %StringOutputStream* @"<<.431"(%StringOutputStream* %3, %TokenType* %a4.addr) + %4 = call %StringOutputStream* @"<<.425"(%StringOutputStream* %3, %TokenType* %a4.addr) %5 = load %String*, %String** %_result.addr %6 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %s, i32 0, i32 0 - call void @ctor.192(%String* %5, %String* %6) - call void @dtor.297(%StringOutputStream* %s) + call void @ctor.184(%String* %5, %String* %6) + call void @dtor.291(%StringOutputStream* %s) ret void dumy_block: ; No predecessors! - call void @dtor.297(%StringOutputStream* %s) + call void @dtor.291(%StringOutputStream* %s) ret void } ; Function Attrs: inlinehint nounwind -define internal %StringOutputStream* @"<<.431"(%StringOutputStream* %s, %TokenType* %x) #4 { +define internal %StringOutputStream* @"<<.425"(%StringOutputStream* %s, %TokenType* %x) #4 { %s.addr = alloca %StringOutputStream* store %StringOutputStream* %s, %StringOutputStream** %s.addr %x.addr = alloca %TokenType* @@ -18850,13 +18664,13 @@ code: ; preds = %0 %1 = load %StringOutputStream*, %StringOutputStream** %os.addr %2 = load %TokenType, %TokenType* %t.addr call void @_asString(%String* %"$tmpC", %TokenType %2) - %3 = call %StringOutputStream* @"<<.432"(%StringOutputStream* %1, %String* %"$tmpC") - call void @dtor.229(%String* %"$tmpC") + %3 = call %StringOutputStream* @"<<.426"(%StringOutputStream* %1, %String* %"$tmpC") + call void @dtor.218(%String* %"$tmpC") ret void } ; Function Attrs: inlinehint nounwind -define internal %StringOutputStream* @"<<.432"(%StringOutputStream* %s, %String* %x) #4 { +define internal %StringOutputStream* @"<<.426"(%StringOutputStream* %s, %String* %x) #4 { %s.addr = alloca %StringOutputStream* store %StringOutputStream* %s, %StringOutputStream** %s.addr %x.addr = alloca %String* @@ -18866,25 +18680,26 @@ define internal %StringOutputStream* @"<<.432"(%StringOutputStream* %s, %String* code: ; preds = %0 %1 = load %String*, %String** %x.addr %2 = load %StringOutputStream*, %StringOutputStream** %s.addr - call void @">>.433"(%String* %1, %StringOutputStream* %2) + call void @">>.427"(%String* %1, %StringOutputStream* %2) %3 = load %StringOutputStream*, %StringOutputStream** %s.addr ret %StringOutputStream* %3 } ; Function Attrs: inlinehint nounwind -define internal void @">>.433"(%String* %this, %StringOutputStream* %os) #4 { +define internal void @">>.427"(%String* %this, %StringOutputStream* %os) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr %os.addr = alloca %StringOutputStream* store %StringOutputStream* %os, %StringOutputStream** %os.addr - %"$tmpC" = alloca %StringRef + %"$tmpForRef" = alloca %StringRef br label %code code: ; preds = %0 %1 = load %StringOutputStream*, %StringOutputStream** %os.addr %2 = load %String*, %String** %this.addr - call void @asStringRef(%StringRef* %"$tmpC", %String* %2) - %3 = call %StringOutputStream* @"<<"(%StringOutputStream* %1, %StringRef* %"$tmpC") + %3 = call %StringRef @asStringRef(%String* %2) + store %StringRef %3, %StringRef* %"$tmpForRef" + %4 = call %StringOutputStream* @"<<"(%StringOutputStream* %1, %StringRef* %"$tmpForRef") ret void } @@ -18894,142 +18709,142 @@ define void @_asString(%String* sret %_result, %TokenType %t) #5 { store %String* %_result, %String** %_result.addr %t.addr = alloca %TokenType store %TokenType %t, %TokenType* %t.addr - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %"$tmpForRef" = alloca %StringRef %tmp.StringRef = alloca %StringRef - %tmp.v5 = alloca %TokenType + %tmp.this5 = alloca %TokenType %"$tmpForRef6" = alloca %StringRef %tmp.StringRef7 = alloca %StringRef - %tmp.v13 = alloca %TokenType + %tmp.this13 = alloca %TokenType %"$tmpForRef14" = alloca %StringRef %tmp.StringRef15 = alloca %StringRef - %tmp.v21 = alloca %TokenType + %tmp.this21 = alloca %TokenType %"$tmpForRef22" = alloca %StringRef %tmp.StringRef23 = alloca %StringRef - %tmp.v29 = alloca %TokenType + %tmp.this29 = alloca %TokenType %"$tmpForRef30" = alloca %StringRef %tmp.StringRef31 = alloca %StringRef - %tmp.v37 = alloca %TokenType + %tmp.this37 = alloca %TokenType %"$tmpForRef38" = alloca %StringRef %tmp.StringRef39 = alloca %StringRef - %tmp.v45 = alloca %TokenType + %tmp.this45 = alloca %TokenType %"$tmpForRef46" = alloca %StringRef %tmp.StringRef47 = alloca %StringRef - %tmp.v53 = alloca %TokenType + %tmp.this53 = alloca %TokenType %"$tmpForRef54" = alloca %StringRef %tmp.StringRef55 = alloca %StringRef - %tmp.v61 = alloca %TokenType + %tmp.this61 = alloca %TokenType %"$tmpForRef62" = alloca %StringRef %tmp.StringRef63 = alloca %StringRef - %tmp.v69 = alloca %TokenType + %tmp.this69 = alloca %TokenType %"$tmpForRef70" = alloca %StringRef %tmp.StringRef71 = alloca %StringRef - %tmp.v77 = alloca %TokenType + %tmp.this77 = alloca %TokenType %"$tmpForRef78" = alloca %StringRef %tmp.StringRef79 = alloca %StringRef - %tmp.v85 = alloca %TokenType + %tmp.this85 = alloca %TokenType %"$tmpForRef86" = alloca %StringRef %tmp.StringRef87 = alloca %StringRef - %tmp.v93 = alloca %TokenType + %tmp.this93 = alloca %TokenType %"$tmpForRef94" = alloca %StringRef %tmp.StringRef95 = alloca %StringRef - %tmp.v101 = alloca %TokenType + %tmp.this101 = alloca %TokenType %"$tmpForRef102" = alloca %StringRef %tmp.StringRef103 = alloca %StringRef - %tmp.v109 = alloca %TokenType + %tmp.this109 = alloca %TokenType %"$tmpForRef110" = alloca %StringRef %tmp.StringRef111 = alloca %StringRef - %tmp.v117 = alloca %TokenType + %tmp.this117 = alloca %TokenType %"$tmpForRef118" = alloca %StringRef %tmp.StringRef119 = alloca %StringRef - %tmp.v125 = alloca %TokenType + %tmp.this125 = alloca %TokenType %"$tmpForRef126" = alloca %StringRef %tmp.StringRef127 = alloca %StringRef - %tmp.v133 = alloca %TokenType + %tmp.this133 = alloca %TokenType %"$tmpForRef134" = alloca %StringRef %tmp.StringRef135 = alloca %StringRef - %tmp.v141 = alloca %TokenType + %tmp.this141 = alloca %TokenType %"$tmpForRef142" = alloca %StringRef %tmp.StringRef143 = alloca %StringRef - %tmp.v149 = alloca %TokenType + %tmp.this149 = alloca %TokenType %"$tmpForRef150" = alloca %StringRef %tmp.StringRef151 = alloca %StringRef - %tmp.v157 = alloca %TokenType + %tmp.this157 = alloca %TokenType %"$tmpForRef158" = alloca %StringRef %tmp.StringRef159 = alloca %StringRef - %tmp.v165 = alloca %TokenType + %tmp.this165 = alloca %TokenType %"$tmpForRef166" = alloca %StringRef %tmp.StringRef167 = alloca %StringRef - %tmp.v173 = alloca %TokenType + %tmp.this173 = alloca %TokenType %"$tmpForRef174" = alloca %StringRef %tmp.StringRef175 = alloca %StringRef - %tmp.v181 = alloca %TokenType + %tmp.this181 = alloca %TokenType %"$tmpForRef182" = alloca %StringRef %tmp.StringRef183 = alloca %StringRef - %tmp.v189 = alloca %TokenType + %tmp.this189 = alloca %TokenType %"$tmpForRef190" = alloca %StringRef %tmp.StringRef191 = alloca %StringRef - %tmp.v197 = alloca %TokenType + %tmp.this197 = alloca %TokenType %"$tmpForRef198" = alloca %StringRef %tmp.StringRef199 = alloca %StringRef - %tmp.v205 = alloca %TokenType + %tmp.this205 = alloca %TokenType %"$tmpForRef206" = alloca %StringRef %tmp.StringRef207 = alloca %StringRef - %tmp.v213 = alloca %TokenType + %tmp.this213 = alloca %TokenType %"$tmpForRef214" = alloca %StringRef %tmp.StringRef215 = alloca %StringRef - %tmp.v221 = alloca %TokenType + %tmp.this221 = alloca %TokenType %"$tmpForRef222" = alloca %StringRef %tmp.StringRef223 = alloca %StringRef - %tmp.v229 = alloca %TokenType + %tmp.this229 = alloca %TokenType %"$tmpForRef230" = alloca %StringRef %tmp.StringRef231 = alloca %StringRef - %tmp.v237 = alloca %TokenType + %tmp.this237 = alloca %TokenType %"$tmpForRef238" = alloca %StringRef %tmp.StringRef239 = alloca %StringRef - %tmp.v245 = alloca %TokenType + %tmp.this245 = alloca %TokenType %"$tmpForRef246" = alloca %StringRef %tmp.StringRef247 = alloca %StringRef - %tmp.v253 = alloca %TokenType + %tmp.this253 = alloca %TokenType %"$tmpForRef254" = alloca %StringRef %tmp.StringRef255 = alloca %StringRef - %tmp.v261 = alloca %TokenType + %tmp.this261 = alloca %TokenType %"$tmpForRef262" = alloca %StringRef %tmp.StringRef263 = alloca %StringRef - %tmp.v269 = alloca %TokenType + %tmp.this269 = alloca %TokenType %"$tmpForRef270" = alloca %StringRef %tmp.StringRef271 = alloca %StringRef - %tmp.v277 = alloca %TokenType + %tmp.this277 = alloca %TokenType %"$tmpForRef278" = alloca %StringRef %tmp.StringRef279 = alloca %StringRef - %tmp.v285 = alloca %TokenType + %tmp.this285 = alloca %TokenType %"$tmpForRef286" = alloca %StringRef %tmp.StringRef287 = alloca %StringRef - %tmp.v293 = alloca %TokenType + %tmp.this293 = alloca %TokenType %"$tmpForRef294" = alloca %StringRef %tmp.StringRef295 = alloca %StringRef - %tmp.v301 = alloca %TokenType + %tmp.this301 = alloca %TokenType %"$tmpForRef302" = alloca %StringRef %tmp.StringRef303 = alloca %StringRef - %tmp.v309 = alloca %TokenType + %tmp.this309 = alloca %TokenType %"$tmpForRef310" = alloca %StringRef %tmp.StringRef311 = alloca %StringRef - %tmp.v317 = alloca %TokenType + %tmp.this317 = alloca %TokenType %"$tmpForRef318" = alloca %StringRef %tmp.StringRef319 = alloca %StringRef - %tmp.v325 = alloca %TokenType + %tmp.this325 = alloca %TokenType %"$tmpForRef326" = alloca %StringRef %tmp.StringRef327 = alloca %StringRef - %tmp.v333 = alloca %TokenType + %tmp.this333 = alloca %TokenType %"$tmpForRef334" = alloca %StringRef %tmp.StringRef335 = alloca %StringRef - %tmp.v341 = alloca %TokenType + %tmp.this341 = alloca %TokenType %"$tmpForRef342" = alloca %StringRef %tmp.StringRef343 = alloca %StringRef - %tmp.v349 = alloca %TokenType + %tmp.this349 = alloca %TokenType %"$tmpForRef350" = alloca %StringRef %tmp.StringRef351 = alloca %StringRef - %tmp.v356 = alloca %TokenType + %tmp.this356 = alloca %TokenType %"$tmpForRef357" = alloca %StringRef %tmp.StringRef358 = alloca %StringRef br label %code @@ -19038,8 +18853,8 @@ code: ; preds = %0 br label %if_block if_block: ; preds = %code - call void @ctor.319(%TokenType* %tmp.v, i32 0) - %1 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v) + call void @ctor.313(%TokenType* %tmp.this, i32 0) + %1 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this) br i1 %1, label %if_then, label %if_else if_then: ; preds = %if_block @@ -19050,7 +18865,7 @@ if_then: ; preds = %if_block store i8* getelementptr inbounds ([12 x i8], [12 x i8]* @str.44, i32 0, i32 11), i8** %4 %5 = load %StringRef, %StringRef* %tmp.StringRef store %StringRef %5, %StringRef* %"$tmpForRef" - call void @ctor.370(%String* %2, %StringRef* %"$tmpForRef") + call void @ctor.364(%String* %2, %StringRef* %"$tmpForRef") ret void if_else: ; preds = %if_block @@ -19063,8 +18878,8 @@ dumy_block: ; No predecessors! br label %if_end if_block1: ; preds = %if_else - call void @ctor.319(%TokenType* %tmp.v5, i32 1) - %6 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v5) + call void @ctor.313(%TokenType* %tmp.this5, i32 1) + %6 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this5) br i1 %6, label %if_then2, label %if_else3 if_then2: ; preds = %if_block1 @@ -19075,7 +18890,7 @@ if_then2: ; preds = %if_block1 store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.45, i32 0, i32 8), i8** %9 %10 = load %StringRef, %StringRef* %tmp.StringRef7 store %StringRef %10, %StringRef* %"$tmpForRef6" - call void @ctor.370(%String* %7, %StringRef* %"$tmpForRef6") + call void @ctor.364(%String* %7, %StringRef* %"$tmpForRef6") ret void if_else3: ; preds = %if_block1 @@ -19088,8 +18903,8 @@ dumy_block8: ; No predecessors! br label %if_end4 if_block9: ; preds = %if_else3 - call void @ctor.319(%TokenType* %tmp.v13, i32 2) - %11 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v13) + call void @ctor.313(%TokenType* %tmp.this13, i32 2) + %11 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this13) br i1 %11, label %if_then10, label %if_else11 if_then10: ; preds = %if_block9 @@ -19100,7 +18915,7 @@ if_then10: ; preds = %if_block9 store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.46, i32 0, i32 8), i8** %14 %15 = load %StringRef, %StringRef* %tmp.StringRef15 store %StringRef %15, %StringRef* %"$tmpForRef14" - call void @ctor.370(%String* %12, %StringRef* %"$tmpForRef14") + call void @ctor.364(%String* %12, %StringRef* %"$tmpForRef14") ret void if_else11: ; preds = %if_block9 @@ -19113,8 +18928,8 @@ dumy_block16: ; No predecessors! br label %if_end12 if_block17: ; preds = %if_else11 - call void @ctor.319(%TokenType* %tmp.v21, i32 3) - %16 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v21) + call void @ctor.313(%TokenType* %tmp.this21, i32 3) + %16 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this21) br i1 %16, label %if_then18, label %if_else19 if_then18: ; preds = %if_block17 @@ -19125,7 +18940,7 @@ if_then18: ; preds = %if_block17 store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.47, i32 0, i32 8), i8** %19 %20 = load %StringRef, %StringRef* %tmp.StringRef23 store %StringRef %20, %StringRef* %"$tmpForRef22" - call void @ctor.370(%String* %17, %StringRef* %"$tmpForRef22") + call void @ctor.364(%String* %17, %StringRef* %"$tmpForRef22") ret void if_else19: ; preds = %if_block17 @@ -19138,8 +18953,8 @@ dumy_block24: ; No predecessors! br label %if_end20 if_block25: ; preds = %if_else19 - call void @ctor.319(%TokenType* %tmp.v29, i32 4) - %21 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v29) + call void @ctor.313(%TokenType* %tmp.this29, i32 4) + %21 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this29) br i1 %21, label %if_then26, label %if_else27 if_then26: ; preds = %if_block25 @@ -19150,7 +18965,7 @@ if_then26: ; preds = %if_block25 store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @str.48, i32 0, i32 9), i8** %24 %25 = load %StringRef, %StringRef* %tmp.StringRef31 store %StringRef %25, %StringRef* %"$tmpForRef30" - call void @ctor.370(%String* %22, %StringRef* %"$tmpForRef30") + call void @ctor.364(%String* %22, %StringRef* %"$tmpForRef30") ret void if_else27: ; preds = %if_block25 @@ -19163,8 +18978,8 @@ dumy_block32: ; No predecessors! br label %if_end28 if_block33: ; preds = %if_else27 - call void @ctor.319(%TokenType* %tmp.v37, i32 5) - %26 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v37) + call void @ctor.313(%TokenType* %tmp.this37, i32 5) + %26 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this37) br i1 %26, label %if_then34, label %if_else35 if_then34: ; preds = %if_block33 @@ -19175,7 +18990,7 @@ if_then34: ; preds = %if_block33 store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @str.49, i32 0, i32 10), i8** %29 %30 = load %StringRef, %StringRef* %tmp.StringRef39 store %StringRef %30, %StringRef* %"$tmpForRef38" - call void @ctor.370(%String* %27, %StringRef* %"$tmpForRef38") + call void @ctor.364(%String* %27, %StringRef* %"$tmpForRef38") ret void if_else35: ; preds = %if_block33 @@ -19188,8 +19003,8 @@ dumy_block40: ; No predecessors! br label %if_end36 if_block41: ; preds = %if_else35 - call void @ctor.319(%TokenType* %tmp.v45, i32 6) - %31 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v45) + call void @ctor.313(%TokenType* %tmp.this45, i32 6) + %31 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this45) br i1 %31, label %if_then42, label %if_else43 if_then42: ; preds = %if_block41 @@ -19200,7 +19015,7 @@ if_then42: ; preds = %if_block41 store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.50, i32 0, i32 5), i8** %34 %35 = load %StringRef, %StringRef* %tmp.StringRef47 store %StringRef %35, %StringRef* %"$tmpForRef46" - call void @ctor.370(%String* %32, %StringRef* %"$tmpForRef46") + call void @ctor.364(%String* %32, %StringRef* %"$tmpForRef46") ret void if_else43: ; preds = %if_block41 @@ -19213,8 +19028,8 @@ dumy_block48: ; No predecessors! br label %if_end44 if_block49: ; preds = %if_else43 - call void @ctor.319(%TokenType* %tmp.v53, i32 7) - %36 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v53) + call void @ctor.313(%TokenType* %tmp.this53, i32 7) + %36 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this53) br i1 %36, label %if_then50, label %if_else51 if_then50: ; preds = %if_block49 @@ -19225,7 +19040,7 @@ if_then50: ; preds = %if_block49 store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @str.51, i32 0, i32 9), i8** %39 %40 = load %StringRef, %StringRef* %tmp.StringRef55 store %StringRef %40, %StringRef* %"$tmpForRef54" - call void @ctor.370(%String* %37, %StringRef* %"$tmpForRef54") + call void @ctor.364(%String* %37, %StringRef* %"$tmpForRef54") ret void if_else51: ; preds = %if_block49 @@ -19238,8 +19053,8 @@ dumy_block56: ; No predecessors! br label %if_end52 if_block57: ; preds = %if_else51 - call void @ctor.319(%TokenType* %tmp.v61, i32 8) - %41 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v61) + call void @ctor.313(%TokenType* %tmp.this61, i32 8) + %41 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this61) br i1 %41, label %if_then58, label %if_else59 if_then58: ; preds = %if_block57 @@ -19250,7 +19065,7 @@ if_then58: ; preds = %if_block57 store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.52, i32 0, i32 7), i8** %44 %45 = load %StringRef, %StringRef* %tmp.StringRef63 store %StringRef %45, %StringRef* %"$tmpForRef62" - call void @ctor.370(%String* %42, %StringRef* %"$tmpForRef62") + call void @ctor.364(%String* %42, %StringRef* %"$tmpForRef62") ret void if_else59: ; preds = %if_block57 @@ -19263,8 +19078,8 @@ dumy_block64: ; No predecessors! br label %if_end60 if_block65: ; preds = %if_else59 - call void @ctor.319(%TokenType* %tmp.v69, i32 9) - %46 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v69) + call void @ctor.313(%TokenType* %tmp.this69, i32 9) + %46 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this69) br i1 %46, label %if_then66, label %if_else67 if_then66: ; preds = %if_block65 @@ -19275,7 +19090,7 @@ if_then66: ; preds = %if_block65 store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.53, i32 0, i32 5), i8** %49 %50 = load %StringRef, %StringRef* %tmp.StringRef71 store %StringRef %50, %StringRef* %"$tmpForRef70" - call void @ctor.370(%String* %47, %StringRef* %"$tmpForRef70") + call void @ctor.364(%String* %47, %StringRef* %"$tmpForRef70") ret void if_else67: ; preds = %if_block65 @@ -19288,8 +19103,8 @@ dumy_block72: ; No predecessors! br label %if_end68 if_block73: ; preds = %if_else67 - call void @ctor.319(%TokenType* %tmp.v77, i32 10) - %51 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v77) + call void @ctor.313(%TokenType* %tmp.this77, i32 10) + %51 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this77) br i1 %51, label %if_then74, label %if_else75 if_then74: ; preds = %if_block73 @@ -19300,7 +19115,7 @@ if_then74: ; preds = %if_block73 store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.54, i32 0, i32 7), i8** %54 %55 = load %StringRef, %StringRef* %tmp.StringRef79 store %StringRef %55, %StringRef* %"$tmpForRef78" - call void @ctor.370(%String* %52, %StringRef* %"$tmpForRef78") + call void @ctor.364(%String* %52, %StringRef* %"$tmpForRef78") ret void if_else75: ; preds = %if_block73 @@ -19313,8 +19128,8 @@ dumy_block80: ; No predecessors! br label %if_end76 if_block81: ; preds = %if_else75 - call void @ctor.319(%TokenType* %tmp.v85, i32 11) - %56 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v85) + call void @ctor.313(%TokenType* %tmp.this85, i32 11) + %56 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this85) br i1 %56, label %if_then82, label %if_else83 if_then82: ; preds = %if_block81 @@ -19325,7 +19140,7 @@ if_then82: ; preds = %if_block81 store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.55, i32 0, i32 7), i8** %59 %60 = load %StringRef, %StringRef* %tmp.StringRef87 store %StringRef %60, %StringRef* %"$tmpForRef86" - call void @ctor.370(%String* %57, %StringRef* %"$tmpForRef86") + call void @ctor.364(%String* %57, %StringRef* %"$tmpForRef86") ret void if_else83: ; preds = %if_block81 @@ -19338,8 +19153,8 @@ dumy_block88: ; No predecessors! br label %if_end84 if_block89: ; preds = %if_else83 - call void @ctor.319(%TokenType* %tmp.v93, i32 12) - %61 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v93) + call void @ctor.313(%TokenType* %tmp.this93, i32 12) + %61 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this93) br i1 %61, label %if_then90, label %if_else91 if_then90: ; preds = %if_block89 @@ -19350,7 +19165,7 @@ if_then90: ; preds = %if_block89 store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @str.56, i32 0, i32 10), i8** %64 %65 = load %StringRef, %StringRef* %tmp.StringRef95 store %StringRef %65, %StringRef* %"$tmpForRef94" - call void @ctor.370(%String* %62, %StringRef* %"$tmpForRef94") + call void @ctor.364(%String* %62, %StringRef* %"$tmpForRef94") ret void if_else91: ; preds = %if_block89 @@ -19363,8 +19178,8 @@ dumy_block96: ; No predecessors! br label %if_end92 if_block97: ; preds = %if_else91 - call void @ctor.319(%TokenType* %tmp.v101, i32 13) - %66 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v101) + call void @ctor.313(%TokenType* %tmp.this101, i32 13) + %66 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this101) br i1 %66, label %if_then98, label %if_else99 if_then98: ; preds = %if_block97 @@ -19375,7 +19190,7 @@ if_then98: ; preds = %if_block97 store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @str.57, i32 0, i32 9), i8** %69 %70 = load %StringRef, %StringRef* %tmp.StringRef103 store %StringRef %70, %StringRef* %"$tmpForRef102" - call void @ctor.370(%String* %67, %StringRef* %"$tmpForRef102") + call void @ctor.364(%String* %67, %StringRef* %"$tmpForRef102") ret void if_else99: ; preds = %if_block97 @@ -19388,8 +19203,8 @@ dumy_block104: ; No predecessors! br label %if_end100 if_block105: ; preds = %if_else99 - call void @ctor.319(%TokenType* %tmp.v109, i32 14) - %71 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v109) + call void @ctor.313(%TokenType* %tmp.this109, i32 14) + %71 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this109) br i1 %71, label %if_then106, label %if_else107 if_then106: ; preds = %if_block105 @@ -19400,7 +19215,7 @@ if_then106: ; preds = %if_block105 store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.58, i32 0, i32 5), i8** %74 %75 = load %StringRef, %StringRef* %tmp.StringRef111 store %StringRef %75, %StringRef* %"$tmpForRef110" - call void @ctor.370(%String* %72, %StringRef* %"$tmpForRef110") + call void @ctor.364(%String* %72, %StringRef* %"$tmpForRef110") ret void if_else107: ; preds = %if_block105 @@ -19413,8 +19228,8 @@ dumy_block112: ; No predecessors! br label %if_end108 if_block113: ; preds = %if_else107 - call void @ctor.319(%TokenType* %tmp.v117, i32 15) - %76 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v117) + call void @ctor.313(%TokenType* %tmp.this117, i32 15) + %76 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this117) br i1 %76, label %if_then114, label %if_else115 if_then114: ; preds = %if_block113 @@ -19425,7 +19240,7 @@ if_then114: ; preds = %if_block113 store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str.59, i32 0, i32 4), i8** %79 %80 = load %StringRef, %StringRef* %tmp.StringRef119 store %StringRef %80, %StringRef* %"$tmpForRef118" - call void @ctor.370(%String* %77, %StringRef* %"$tmpForRef118") + call void @ctor.364(%String* %77, %StringRef* %"$tmpForRef118") ret void if_else115: ; preds = %if_block113 @@ -19438,8 +19253,8 @@ dumy_block120: ; No predecessors! br label %if_end116 if_block121: ; preds = %if_else115 - call void @ctor.319(%TokenType* %tmp.v125, i32 16) - %81 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v125) + call void @ctor.313(%TokenType* %tmp.this125, i32 16) + %81 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this125) br i1 %81, label %if_then122, label %if_else123 if_then122: ; preds = %if_block121 @@ -19450,7 +19265,7 @@ if_then122: ; preds = %if_block121 store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.60, i32 0, i32 8), i8** %84 %85 = load %StringRef, %StringRef* %tmp.StringRef127 store %StringRef %85, %StringRef* %"$tmpForRef126" - call void @ctor.370(%String* %82, %StringRef* %"$tmpForRef126") + call void @ctor.364(%String* %82, %StringRef* %"$tmpForRef126") ret void if_else123: ; preds = %if_block121 @@ -19463,8 +19278,8 @@ dumy_block128: ; No predecessors! br label %if_end124 if_block129: ; preds = %if_else123 - call void @ctor.319(%TokenType* %tmp.v133, i32 17) - %86 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v133) + call void @ctor.313(%TokenType* %tmp.this133, i32 17) + %86 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this133) br i1 %86, label %if_then130, label %if_else131 if_then130: ; preds = %if_block129 @@ -19475,7 +19290,7 @@ if_then130: ; preds = %if_block129 store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.61, i32 0, i32 7), i8** %89 %90 = load %StringRef, %StringRef* %tmp.StringRef135 store %StringRef %90, %StringRef* %"$tmpForRef134" - call void @ctor.370(%String* %87, %StringRef* %"$tmpForRef134") + call void @ctor.364(%String* %87, %StringRef* %"$tmpForRef134") ret void if_else131: ; preds = %if_block129 @@ -19488,8 +19303,8 @@ dumy_block136: ; No predecessors! br label %if_end132 if_block137: ; preds = %if_else131 - call void @ctor.319(%TokenType* %tmp.v141, i32 18) - %91 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v141) + call void @ctor.313(%TokenType* %tmp.this141, i32 18) + %91 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this141) br i1 %91, label %if_then138, label %if_else139 if_then138: ; preds = %if_block137 @@ -19500,7 +19315,7 @@ if_then138: ; preds = %if_block137 store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.62, i32 0, i32 5), i8** %94 %95 = load %StringRef, %StringRef* %tmp.StringRef143 store %StringRef %95, %StringRef* %"$tmpForRef142" - call void @ctor.370(%String* %92, %StringRef* %"$tmpForRef142") + call void @ctor.364(%String* %92, %StringRef* %"$tmpForRef142") ret void if_else139: ; preds = %if_block137 @@ -19513,8 +19328,8 @@ dumy_block144: ; No predecessors! br label %if_end140 if_block145: ; preds = %if_else139 - call void @ctor.319(%TokenType* %tmp.v149, i32 19) - %96 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v149) + call void @ctor.313(%TokenType* %tmp.this149, i32 19) + %96 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this149) br i1 %96, label %if_then146, label %if_else147 if_then146: ; preds = %if_block145 @@ -19525,7 +19340,7 @@ if_then146: ; preds = %if_block145 store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.63, i32 0, i32 7), i8** %99 %100 = load %StringRef, %StringRef* %tmp.StringRef151 store %StringRef %100, %StringRef* %"$tmpForRef150" - call void @ctor.370(%String* %97, %StringRef* %"$tmpForRef150") + call void @ctor.364(%String* %97, %StringRef* %"$tmpForRef150") ret void if_else147: ; preds = %if_block145 @@ -19538,8 +19353,8 @@ dumy_block152: ; No predecessors! br label %if_end148 if_block153: ; preds = %if_else147 - call void @ctor.319(%TokenType* %tmp.v157, i32 20) - %101 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v157) + call void @ctor.313(%TokenType* %tmp.this157, i32 20) + %101 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this157) br i1 %101, label %if_then154, label %if_else155 if_then154: ; preds = %if_block153 @@ -19550,7 +19365,7 @@ if_then154: ; preds = %if_block153 store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.64, i32 0, i32 7), i8** %104 %105 = load %StringRef, %StringRef* %tmp.StringRef159 store %StringRef %105, %StringRef* %"$tmpForRef158" - call void @ctor.370(%String* %102, %StringRef* %"$tmpForRef158") + call void @ctor.364(%String* %102, %StringRef* %"$tmpForRef158") ret void if_else155: ; preds = %if_block153 @@ -19563,8 +19378,8 @@ dumy_block160: ; No predecessors! br label %if_end156 if_block161: ; preds = %if_else155 - call void @ctor.319(%TokenType* %tmp.v165, i32 21) - %106 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v165) + call void @ctor.313(%TokenType* %tmp.this165, i32 21) + %106 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this165) br i1 %106, label %if_then162, label %if_else163 if_then162: ; preds = %if_block161 @@ -19575,7 +19390,7 @@ if_then162: ; preds = %if_block161 store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.65, i32 0, i32 6), i8** %109 %110 = load %StringRef, %StringRef* %tmp.StringRef167 store %StringRef %110, %StringRef* %"$tmpForRef166" - call void @ctor.370(%String* %107, %StringRef* %"$tmpForRef166") + call void @ctor.364(%String* %107, %StringRef* %"$tmpForRef166") ret void if_else163: ; preds = %if_block161 @@ -19588,8 +19403,8 @@ dumy_block168: ; No predecessors! br label %if_end164 if_block169: ; preds = %if_else163 - call void @ctor.319(%TokenType* %tmp.v173, i32 22) - %111 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v173) + call void @ctor.313(%TokenType* %tmp.this173, i32 22) + %111 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this173) br i1 %111, label %if_then170, label %if_else171 if_then170: ; preds = %if_block169 @@ -19600,7 +19415,7 @@ if_then170: ; preds = %if_block169 store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.66, i32 0, i32 6), i8** %114 %115 = load %StringRef, %StringRef* %tmp.StringRef175 store %StringRef %115, %StringRef* %"$tmpForRef174" - call void @ctor.370(%String* %112, %StringRef* %"$tmpForRef174") + call void @ctor.364(%String* %112, %StringRef* %"$tmpForRef174") ret void if_else171: ; preds = %if_block169 @@ -19613,8 +19428,8 @@ dumy_block176: ; No predecessors! br label %if_end172 if_block177: ; preds = %if_else171 - call void @ctor.319(%TokenType* %tmp.v181, i32 23) - %116 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v181) + call void @ctor.313(%TokenType* %tmp.this181, i32 23) + %116 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this181) br i1 %116, label %if_then178, label %if_else179 if_then178: ; preds = %if_block177 @@ -19625,7 +19440,7 @@ if_then178: ; preds = %if_block177 store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.67, i32 0, i32 6), i8** %119 %120 = load %StringRef, %StringRef* %tmp.StringRef183 store %StringRef %120, %StringRef* %"$tmpForRef182" - call void @ctor.370(%String* %117, %StringRef* %"$tmpForRef182") + call void @ctor.364(%String* %117, %StringRef* %"$tmpForRef182") ret void if_else179: ; preds = %if_block177 @@ -19638,8 +19453,8 @@ dumy_block184: ; No predecessors! br label %if_end180 if_block185: ; preds = %if_else179 - call void @ctor.319(%TokenType* %tmp.v189, i32 24) - %121 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v189) + call void @ctor.313(%TokenType* %tmp.this189, i32 24) + %121 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this189) br i1 %121, label %if_then186, label %if_else187 if_then186: ; preds = %if_block185 @@ -19650,7 +19465,7 @@ if_then186: ; preds = %if_block185 store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @str.68, i32 0, i32 15), i8** %124 %125 = load %StringRef, %StringRef* %tmp.StringRef191 store %StringRef %125, %StringRef* %"$tmpForRef190" - call void @ctor.370(%String* %122, %StringRef* %"$tmpForRef190") + call void @ctor.364(%String* %122, %StringRef* %"$tmpForRef190") ret void if_else187: ; preds = %if_block185 @@ -19663,8 +19478,8 @@ dumy_block192: ; No predecessors! br label %if_end188 if_block193: ; preds = %if_else187 - call void @ctor.319(%TokenType* %tmp.v197, i32 25) - %126 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v197) + call void @ctor.313(%TokenType* %tmp.this197, i32 25) + %126 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this197) br i1 %126, label %if_then194, label %if_else195 if_then194: ; preds = %if_block193 @@ -19675,7 +19490,7 @@ if_then194: ; preds = %if_block193 store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @str.69, i32 0, i32 15), i8** %129 %130 = load %StringRef, %StringRef* %tmp.StringRef199 store %StringRef %130, %StringRef* %"$tmpForRef198" - call void @ctor.370(%String* %127, %StringRef* %"$tmpForRef198") + call void @ctor.364(%String* %127, %StringRef* %"$tmpForRef198") ret void if_else195: ; preds = %if_block193 @@ -19688,8 +19503,8 @@ dumy_block200: ; No predecessors! br label %if_end196 if_block201: ; preds = %if_else195 - call void @ctor.319(%TokenType* %tmp.v205, i32 26) - %131 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v205) + call void @ctor.313(%TokenType* %tmp.this205, i32 26) + %131 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this205) br i1 %131, label %if_then202, label %if_else203 if_then202: ; preds = %if_block201 @@ -19700,7 +19515,7 @@ if_then202: ; preds = %if_block201 store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.70, i32 0, i32 3), i8** %134 %135 = load %StringRef, %StringRef* %tmp.StringRef207 store %StringRef %135, %StringRef* %"$tmpForRef206" - call void @ctor.370(%String* %132, %StringRef* %"$tmpForRef206") + call void @ctor.364(%String* %132, %StringRef* %"$tmpForRef206") ret void if_else203: ; preds = %if_block201 @@ -19713,8 +19528,8 @@ dumy_block208: ; No predecessors! br label %if_end204 if_block209: ; preds = %if_else203 - call void @ctor.319(%TokenType* %tmp.v213, i32 27) - %136 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v213) + call void @ctor.313(%TokenType* %tmp.this213, i32 27) + %136 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this213) br i1 %136, label %if_then210, label %if_else211 if_then210: ; preds = %if_block209 @@ -19725,7 +19540,7 @@ if_then210: ; preds = %if_block209 store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.71, i32 0, i32 3), i8** %139 %140 = load %StringRef, %StringRef* %tmp.StringRef215 store %StringRef %140, %StringRef* %"$tmpForRef214" - call void @ctor.370(%String* %137, %StringRef* %"$tmpForRef214") + call void @ctor.364(%String* %137, %StringRef* %"$tmpForRef214") ret void if_else211: ; preds = %if_block209 @@ -19738,8 +19553,8 @@ dumy_block216: ; No predecessors! br label %if_end212 if_block217: ; preds = %if_else211 - call void @ctor.319(%TokenType* %tmp.v221, i32 28) - %141 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v221) + call void @ctor.313(%TokenType* %tmp.this221, i32 28) + %141 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this221) br i1 %141, label %if_then218, label %if_else219 if_then218: ; preds = %if_block217 @@ -19750,7 +19565,7 @@ if_then218: ; preds = %if_block217 store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.72, i32 0, i32 3), i8** %144 %145 = load %StringRef, %StringRef* %tmp.StringRef223 store %StringRef %145, %StringRef* %"$tmpForRef222" - call void @ctor.370(%String* %142, %StringRef* %"$tmpForRef222") + call void @ctor.364(%String* %142, %StringRef* %"$tmpForRef222") ret void if_else219: ; preds = %if_block217 @@ -19763,8 +19578,8 @@ dumy_block224: ; No predecessors! br label %if_end220 if_block225: ; preds = %if_else219 - call void @ctor.319(%TokenType* %tmp.v229, i32 29) - %146 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v229) + call void @ctor.313(%TokenType* %tmp.this229, i32 29) + %146 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this229) br i1 %146, label %if_then226, label %if_else227 if_then226: ; preds = %if_block225 @@ -19775,7 +19590,7 @@ if_then226: ; preds = %if_block225 store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.73, i32 0, i32 3), i8** %149 %150 = load %StringRef, %StringRef* %tmp.StringRef231 store %StringRef %150, %StringRef* %"$tmpForRef230" - call void @ctor.370(%String* %147, %StringRef* %"$tmpForRef230") + call void @ctor.364(%String* %147, %StringRef* %"$tmpForRef230") ret void if_else227: ; preds = %if_block225 @@ -19788,8 +19603,8 @@ dumy_block232: ; No predecessors! br label %if_end228 if_block233: ; preds = %if_else227 - call void @ctor.319(%TokenType* %tmp.v237, i32 30) - %151 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v237) + call void @ctor.313(%TokenType* %tmp.this237, i32 30) + %151 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this237) br i1 %151, label %if_then234, label %if_else235 if_then234: ; preds = %if_block233 @@ -19800,7 +19615,7 @@ if_then234: ; preds = %if_block233 store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.74, i32 0, i32 3), i8** %154 %155 = load %StringRef, %StringRef* %tmp.StringRef239 store %StringRef %155, %StringRef* %"$tmpForRef238" - call void @ctor.370(%String* %152, %StringRef* %"$tmpForRef238") + call void @ctor.364(%String* %152, %StringRef* %"$tmpForRef238") ret void if_else235: ; preds = %if_block233 @@ -19813,8 +19628,8 @@ dumy_block240: ; No predecessors! br label %if_end236 if_block241: ; preds = %if_else235 - call void @ctor.319(%TokenType* %tmp.v245, i32 31) - %156 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v245) + call void @ctor.313(%TokenType* %tmp.this245, i32 31) + %156 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this245) br i1 %156, label %if_then242, label %if_else243 if_then242: ; preds = %if_block241 @@ -19825,7 +19640,7 @@ if_then242: ; preds = %if_block241 store i8* getelementptr inbounds ([17 x i8], [17 x i8]* @str.75, i32 0, i32 16), i8** %159 %160 = load %StringRef, %StringRef* %tmp.StringRef247 store %StringRef %160, %StringRef* %"$tmpForRef246" - call void @ctor.370(%String* %157, %StringRef* %"$tmpForRef246") + call void @ctor.364(%String* %157, %StringRef* %"$tmpForRef246") ret void if_else243: ; preds = %if_block241 @@ -19838,8 +19653,8 @@ dumy_block248: ; No predecessors! br label %if_end244 if_block249: ; preds = %if_else243 - call void @ctor.319(%TokenType* %tmp.v253, i32 32) - %161 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v253) + call void @ctor.313(%TokenType* %tmp.this253, i32 32) + %161 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this253) br i1 %161, label %if_then250, label %if_else251 if_then250: ; preds = %if_block249 @@ -19850,7 +19665,7 @@ if_then250: ; preds = %if_block249 store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.76, i32 0, i32 3), i8** %164 %165 = load %StringRef, %StringRef* %tmp.StringRef255 store %StringRef %165, %StringRef* %"$tmpForRef254" - call void @ctor.370(%String* %162, %StringRef* %"$tmpForRef254") + call void @ctor.364(%String* %162, %StringRef* %"$tmpForRef254") ret void if_else251: ; preds = %if_block249 @@ -19863,8 +19678,8 @@ dumy_block256: ; No predecessors! br label %if_end252 if_block257: ; preds = %if_else251 - call void @ctor.319(%TokenType* %tmp.v261, i32 33) - %166 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v261) + call void @ctor.313(%TokenType* %tmp.this261, i32 33) + %166 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this261) br i1 %166, label %if_then258, label %if_else259 if_then258: ; preds = %if_block257 @@ -19875,7 +19690,7 @@ if_then258: ; preds = %if_block257 store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.77, i32 0, i32 3), i8** %169 %170 = load %StringRef, %StringRef* %tmp.StringRef263 store %StringRef %170, %StringRef* %"$tmpForRef262" - call void @ctor.370(%String* %167, %StringRef* %"$tmpForRef262") + call void @ctor.364(%String* %167, %StringRef* %"$tmpForRef262") ret void if_else259: ; preds = %if_block257 @@ -19888,8 +19703,8 @@ dumy_block264: ; No predecessors! br label %if_end260 if_block265: ; preds = %if_else259 - call void @ctor.319(%TokenType* %tmp.v269, i32 34) - %171 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v269) + call void @ctor.313(%TokenType* %tmp.this269, i32 34) + %171 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this269) br i1 %171, label %if_then266, label %if_else267 if_then266: ; preds = %if_block265 @@ -19900,7 +19715,7 @@ if_then266: ; preds = %if_block265 store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.78, i32 0, i32 3), i8** %174 %175 = load %StringRef, %StringRef* %tmp.StringRef271 store %StringRef %175, %StringRef* %"$tmpForRef270" - call void @ctor.370(%String* %172, %StringRef* %"$tmpForRef270") + call void @ctor.364(%String* %172, %StringRef* %"$tmpForRef270") ret void if_else267: ; preds = %if_block265 @@ -19913,8 +19728,8 @@ dumy_block272: ; No predecessors! br label %if_end268 if_block273: ; preds = %if_else267 - call void @ctor.319(%TokenType* %tmp.v277, i32 35) - %176 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v277) + call void @ctor.313(%TokenType* %tmp.this277, i32 35) + %176 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this277) br i1 %176, label %if_then274, label %if_else275 if_then274: ; preds = %if_block273 @@ -19925,7 +19740,7 @@ if_then274: ; preds = %if_block273 store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.79, i32 0, i32 3), i8** %179 %180 = load %StringRef, %StringRef* %tmp.StringRef279 store %StringRef %180, %StringRef* %"$tmpForRef278" - call void @ctor.370(%String* %177, %StringRef* %"$tmpForRef278") + call void @ctor.364(%String* %177, %StringRef* %"$tmpForRef278") ret void if_else275: ; preds = %if_block273 @@ -19938,8 +19753,8 @@ dumy_block280: ; No predecessors! br label %if_end276 if_block281: ; preds = %if_else275 - call void @ctor.319(%TokenType* %tmp.v285, i32 36) - %181 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v285) + call void @ctor.313(%TokenType* %tmp.this285, i32 36) + %181 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this285) br i1 %181, label %if_then282, label %if_else283 if_then282: ; preds = %if_block281 @@ -19950,7 +19765,7 @@ if_then282: ; preds = %if_block281 store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @str.80, i32 0, i32 10), i8** %184 %185 = load %StringRef, %StringRef* %tmp.StringRef287 store %StringRef %185, %StringRef* %"$tmpForRef286" - call void @ctor.370(%String* %182, %StringRef* %"$tmpForRef286") + call void @ctor.364(%String* %182, %StringRef* %"$tmpForRef286") ret void if_else283: ; preds = %if_block281 @@ -19963,8 +19778,8 @@ dumy_block288: ; No predecessors! br label %if_end284 if_block289: ; preds = %if_else283 - call void @ctor.319(%TokenType* %tmp.v293, i32 37) - %186 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v293) + call void @ctor.313(%TokenType* %tmp.this293, i32 37) + %186 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this293) br i1 %186, label %if_then290, label %if_else291 if_then290: ; preds = %if_block289 @@ -19975,7 +19790,7 @@ if_then290: ; preds = %if_block289 store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.81, i32 0, i32 8), i8** %189 %190 = load %StringRef, %StringRef* %tmp.StringRef295 store %StringRef %190, %StringRef* %"$tmpForRef294" - call void @ctor.370(%String* %187, %StringRef* %"$tmpForRef294") + call void @ctor.364(%String* %187, %StringRef* %"$tmpForRef294") ret void if_else291: ; preds = %if_block289 @@ -19988,8 +19803,8 @@ dumy_block296: ; No predecessors! br label %if_end292 if_block297: ; preds = %if_else291 - call void @ctor.319(%TokenType* %tmp.v301, i32 38) - %191 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v301) + call void @ctor.313(%TokenType* %tmp.this301, i32 38) + %191 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this301) br i1 %191, label %if_then298, label %if_else299 if_then298: ; preds = %if_block297 @@ -20000,7 +19815,7 @@ if_then298: ; preds = %if_block297 store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @str.82, i32 0, i32 12), i8** %194 %195 = load %StringRef, %StringRef* %tmp.StringRef303 store %StringRef %195, %StringRef* %"$tmpForRef302" - call void @ctor.370(%String* %192, %StringRef* %"$tmpForRef302") + call void @ctor.364(%String* %192, %StringRef* %"$tmpForRef302") ret void if_else299: ; preds = %if_block297 @@ -20013,8 +19828,8 @@ dumy_block304: ; No predecessors! br label %if_end300 if_block305: ; preds = %if_else299 - call void @ctor.319(%TokenType* %tmp.v309, i32 39) - %196 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v309) + call void @ctor.313(%TokenType* %tmp.this309, i32 39) + %196 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this309) br i1 %196, label %if_then306, label %if_else307 if_then306: ; preds = %if_block305 @@ -20025,7 +19840,7 @@ if_then306: ; preds = %if_block305 store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @str.83, i32 0, i32 14), i8** %199 %200 = load %StringRef, %StringRef* %tmp.StringRef311 store %StringRef %200, %StringRef* %"$tmpForRef310" - call void @ctor.370(%String* %197, %StringRef* %"$tmpForRef310") + call void @ctor.364(%String* %197, %StringRef* %"$tmpForRef310") ret void if_else307: ; preds = %if_block305 @@ -20038,8 +19853,8 @@ dumy_block312: ; No predecessors! br label %if_end308 if_block313: ; preds = %if_else307 - call void @ctor.319(%TokenType* %tmp.v317, i32 40) - %201 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v317) + call void @ctor.313(%TokenType* %tmp.this317, i32 40) + %201 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this317) br i1 %201, label %if_then314, label %if_else315 if_then314: ; preds = %if_block313 @@ -20050,7 +19865,7 @@ if_then314: ; preds = %if_block313 store i8* getelementptr inbounds ([12 x i8], [12 x i8]* @str.84, i32 0, i32 11), i8** %204 %205 = load %StringRef, %StringRef* %tmp.StringRef319 store %StringRef %205, %StringRef* %"$tmpForRef318" - call void @ctor.370(%String* %202, %StringRef* %"$tmpForRef318") + call void @ctor.364(%String* %202, %StringRef* %"$tmpForRef318") ret void if_else315: ; preds = %if_block313 @@ -20063,8 +19878,8 @@ dumy_block320: ; No predecessors! br label %if_end316 if_block321: ; preds = %if_else315 - call void @ctor.319(%TokenType* %tmp.v325, i32 41) - %206 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v325) + call void @ctor.313(%TokenType* %tmp.this325, i32 41) + %206 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this325) br i1 %206, label %if_then322, label %if_else323 if_then322: ; preds = %if_block321 @@ -20075,7 +19890,7 @@ if_then322: ; preds = %if_block321 store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @str.85, i32 0, i32 12), i8** %209 %210 = load %StringRef, %StringRef* %tmp.StringRef327 store %StringRef %210, %StringRef* %"$tmpForRef326" - call void @ctor.370(%String* %207, %StringRef* %"$tmpForRef326") + call void @ctor.364(%String* %207, %StringRef* %"$tmpForRef326") ret void if_else323: ; preds = %if_block321 @@ -20088,8 +19903,8 @@ dumy_block328: ; No predecessors! br label %if_end324 if_block329: ; preds = %if_else323 - call void @ctor.319(%TokenType* %tmp.v333, i32 42) - %211 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v333) + call void @ctor.313(%TokenType* %tmp.this333, i32 42) + %211 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this333) br i1 %211, label %if_then330, label %if_else331 if_then330: ; preds = %if_block329 @@ -20100,7 +19915,7 @@ if_then330: ; preds = %if_block329 store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @str.86, i32 0, i32 12), i8** %214 %215 = load %StringRef, %StringRef* %tmp.StringRef335 store %StringRef %215, %StringRef* %"$tmpForRef334" - call void @ctor.370(%String* %212, %StringRef* %"$tmpForRef334") + call void @ctor.364(%String* %212, %StringRef* %"$tmpForRef334") ret void if_else331: ; preds = %if_block329 @@ -20113,8 +19928,8 @@ dumy_block336: ; No predecessors! br label %if_end332 if_block337: ; preds = %if_else331 - call void @ctor.319(%TokenType* %tmp.v341, i32 43) - %216 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v341) + call void @ctor.313(%TokenType* %tmp.this341, i32 43) + %216 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this341) br i1 %216, label %if_then338, label %if_else339 if_then338: ; preds = %if_block337 @@ -20125,7 +19940,7 @@ if_then338: ; preds = %if_block337 store i8* getelementptr inbounds ([14 x i8], [14 x i8]* @str.87, i32 0, i32 13), i8** %219 %220 = load %StringRef, %StringRef* %tmp.StringRef343 store %StringRef %220, %StringRef* %"$tmpForRef342" - call void @ctor.370(%String* %217, %StringRef* %"$tmpForRef342") + call void @ctor.364(%String* %217, %StringRef* %"$tmpForRef342") ret void if_else339: ; preds = %if_block337 @@ -20138,8 +19953,8 @@ dumy_block344: ; No predecessors! br label %if_end340 if_block345: ; preds = %if_else339 - call void @ctor.319(%TokenType* %tmp.v349, i32 44) - %221 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v349) + call void @ctor.313(%TokenType* %tmp.this349, i32 44) + %221 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this349) br i1 %221, label %if_then346, label %if_else347 if_then346: ; preds = %if_block345 @@ -20150,7 +19965,7 @@ if_then346: ; preds = %if_block345 store i8* getelementptr inbounds ([14 x i8], [14 x i8]* @str.88, i32 0, i32 13), i8** %224 %225 = load %StringRef, %StringRef* %tmp.StringRef351 store %StringRef %225, %StringRef* %"$tmpForRef350" - call void @ctor.370(%String* %222, %StringRef* %"$tmpForRef350") + call void @ctor.364(%String* %222, %StringRef* %"$tmpForRef350") ret void if_else347: ; preds = %if_block345 @@ -20163,8 +19978,8 @@ dumy_block352: ; No predecessors! br label %if_end348 if_block353: ; preds = %if_else347 - call void @ctor.319(%TokenType* %tmp.v356, i32 45) - %226 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v356) + call void @ctor.313(%TokenType* %tmp.this356, i32 45) + %226 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this356) br i1 %226, label %if_then354, label %if_end355 if_then354: ; preds = %if_block353 @@ -20175,7 +19990,7 @@ if_then354: ; preds = %if_block353 store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @str.89, i32 0, i32 14), i8** %229 %230 = load %StringRef, %StringRef* %tmp.StringRef358 store %StringRef %230, %StringRef* %"$tmpForRef357" - call void @ctor.370(%String* %227, %StringRef* %"$tmpForRef357") + call void @ctor.364(%String* %227, %StringRef* %"$tmpForRef357") ret void if_end355: ; preds = %dumy_block359, %if_block353 @@ -20186,7 +20001,7 @@ dumy_block359: ; No predecessors! } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.434(%Node* %this, %Node* %other) #3 { +define internal void @ctor.428(%Node* %this, %Node* %other) #3 { %this.addr = alloca %Node* store %Node* %this, %Node** %this.addr %other.addr = alloca %Node* @@ -20198,14 +20013,32 @@ code: ; preds = %0 %2 = getelementptr inbounds %Node, %Node* %1, i32 0, i32 0 %3 = load %Node*, %Node** %other.addr %4 = getelementptr inbounds %Node, %Node* %3, i32 0, i32 0 - call void @ctor.65(%UntypedPtr* %2, %UntypedPtr* %4) + call void @ctor.429(%UntypedPtr* %2, %UntypedPtr* %4) + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.429(%UntypedPtr* %this, %UntypedPtr* %other) #3 { + %this.addr = alloca %UntypedPtr* + store %UntypedPtr* %this, %UntypedPtr** %this.addr + %other.addr = alloca %UntypedPtr* + store %UntypedPtr* %other, %UntypedPtr** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %UntypedPtr*, %UntypedPtr** %other.addr + %2 = getelementptr inbounds %UntypedPtr, %UntypedPtr* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %UntypedPtr*, %UntypedPtr** %this.addr + %5 = getelementptr inbounds %UntypedPtr, %UntypedPtr* %4, i32 0, i32 0 + store i8* %3, i8** %5 ret void } declare %Node @comp_parser_mkIdentifier(%Location*, %StringRef) ; Function Attrs: alwaysinline nounwind -define internal void @"=.435"(%Node* %this, %Node* %other) #3 { +define internal void @"=.430"(%Node* %this, %Node* %other) #3 { %this.addr = alloca %Node* store %Node* %this, %Node** %this.addr %other.addr = alloca %Node* @@ -20217,7 +20050,25 @@ code: ; preds = %0 %2 = getelementptr inbounds %Node, %Node* %1, i32 0, i32 0 %3 = load %Node*, %Node** %other.addr %4 = getelementptr inbounds %Node, %Node* %3, i32 0, i32 0 - call void @"=.67"(%UntypedPtr* %2, %UntypedPtr* %4) + call void @"=.431"(%UntypedPtr* %2, %UntypedPtr* %4) + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @"=.431"(%UntypedPtr* %this, %UntypedPtr* %other) #3 { + %this.addr = alloca %UntypedPtr* + store %UntypedPtr* %this, %UntypedPtr** %this.addr + %other.addr = alloca %UntypedPtr* + store %UntypedPtr* %other, %UntypedPtr** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %UntypedPtr*, %UntypedPtr** %other.addr + %2 = getelementptr inbounds %UntypedPtr, %UntypedPtr* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %UntypedPtr*, %UntypedPtr** %this.addr + %5 = getelementptr inbounds %UntypedPtr, %UntypedPtr* %4, i32 0, i32 0 + store i8* %3, i8** %5 ret void } @@ -20236,11 +20087,11 @@ define internal void @span(%Location* sret %_result, %Location* %start, %Locatio code: ; preds = %0 %1 = load %Location*, %Location** %start.addr - call void @ctor.177(%Location* %res, %Location* %1) + call void @ctor.171(%Location* %res, %Location* %1) %2 = load %Location*, %Location** %end.addr call void @copyEnd(%Location* %res, %Location* %2) %3 = load %Location*, %Location** %_result.addr - call void @ctor.177(%Location* %3, %Location* %res) + call void @ctor.171(%Location* %3, %Location* %res) ret void } @@ -20257,7 +20108,7 @@ code: ; preds = %0 %2 = getelementptr inbounds %Location, %Location* %1, i32 0, i32 2 %3 = load %Location*, %Location** %other.addr %4 = getelementptr inbounds %Location, %Location* %3, i32 0, i32 2 - call void @"=.250"(%LineCol* %2, %LineCol* %4) + call void @"=.244"(%LineCol* %2, %LineCol* %4) ret void } @@ -20274,14 +20125,14 @@ code: ; preds = %0 %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %3 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, i32 0, i32 1 %4 = getelementptr inbounds %Token, %Token* %3, i32 0, i32 0 - call void @ctor.177(%Location* %1, %Location* %4) + call void @ctor.171(%Location* %1, %Location* %4) ret void } declare %Node @comp_parser_mkCompoundExpr(%Location*, %Node, %StringRef) ; Function Attrs: alwaysinline nounwind -define internal void @ctor.436(%Node* %this) #3 { +define internal void @ctor.432(%Node* %this) #3 { %this.addr = alloca %Node* store %Node* %this, %Node** %this.addr br label %code @@ -20289,7 +20140,20 @@ define internal void @ctor.436(%Node* %this) #3 { code: ; preds = %0 %1 = load %Node*, %Node** %this.addr %2 = getelementptr inbounds %Node, %Node* %1, i32 0, i32 0 - call void @ctor.64(%UntypedPtr* %2) + call void @ctor.433(%UntypedPtr* %2) + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.433(%UntypedPtr* %this) #3 { + %this.addr = alloca %UntypedPtr* + store %UntypedPtr* %this, %UntypedPtr** %this.addr + br label %code + +code: ; preds = %0 + %1 = load %UntypedPtr*, %UntypedPtr** %this.addr + %2 = getelementptr inbounds %UntypedPtr, %UntypedPtr* %1, i32 0, i32 0 + store i8* null, i8** %2 ret void } @@ -20325,7 +20189,7 @@ while_end: ; preds = %if_end, %while_bloc if_block: ; preds = %while_body %3 = load %Node, %Node* %child - %4 = call i1 @isSet.473(%Node %3) + %4 = call i1 @isSet.470(%Node %3) br i1 %4, label %if_then, label %if_end if_then: ; preds = %if_block @@ -20335,7 +20199,7 @@ if_then: ; preds = %if_block %8 = load %Node, %Node* %child %9 = call %Node @comp_parser_addToNodeList(%Node %7, %Node %8) store %Node %9, %Node* %"$tmpForRef" - call void @"=.435"(%Node* %5, %Node* %"$tmpForRef") + call void @"=.430"(%Node* %5, %Node* %"$tmpForRef") br label %while_step if_end: ; preds = %dumy_block, %if_block @@ -20370,7 +20234,7 @@ define void @parseStmt(%Node* sret %_result, %"SparrowParser[SparrowLayoutDecode br label %code code: ; preds = %0 - call void @ctor.436(%Node* %res) + call void @ctor.432(%Node* %res) %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @consumeSemis(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1) %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr @@ -20556,7 +20420,7 @@ cond.end39: ; preds = %cond.false38, %cond if_block: ; preds = %cond.end %38 = load %Node, %Node* %mods - %39 = call i1 @isSet.473(%Node %38) + %39 = call i1 @isSet.470(%Node %38) br i1 %39, label %if_then, label %if_end if_then: ; preds = %if_block @@ -20564,7 +20428,7 @@ if_then: ; preds = %if_block if_end: ; preds = %if_end55, %if_block %40 = load %Node*, %Node** %_result.addr - call void @ctor.434(%Node* %40, %Node* %res) + call void @ctor.428(%Node* %40, %Node* %res) ret void if_block53: ; preds = %if_then @@ -20579,7 +20443,7 @@ if_then54: ; preds = %if_block53 %44 = load %Node, %Node* %mods %45 = call %Node @comp_parser_mkModifiers(%Location* %"$tmpC", %Node %43, %Node %44) store %Node %45, %Node* %"$tmpForRef" - call void @"=.435"(%Node* %res, %Node* %"$tmpForRef") + call void @"=.430"(%Node* %res, %Node* %"$tmpForRef") br label %if_end55 if_else: ; preds = %if_block53 @@ -20591,7 +20455,7 @@ if_else: ; preds = %if_block53 %49 = load %StringRef, %StringRef* %tmp.StringRef %50 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %51 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %50, i32 0, i32 0 - call void @"pre_*.425"(%Token* %"$tmpC58", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %51) + call void @"pre_*.419"(%Token* %"$tmpC58", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %51) %52 = getelementptr inbounds %Token, %Token* %"$tmpC58", i32 0, i32 1 %53 = load %TokenType, %TokenType* %52 %54 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef59, i32 0, i32 0 @@ -20599,10 +20463,10 @@ if_else: ; preds = %if_block53 store i8* getelementptr inbounds ([22 x i8], [22 x i8]* @str.107, i32 0, i32 0), i8** %54 store i8* getelementptr inbounds ([22 x i8], [22 x i8]* @str.107, i32 0, i32 21), i8** %55 %56 = load %StringRef, %StringRef* %tmp.StringRef59 - call void @toString.474(%String* %"$tmpC57", %StringRef %49, %TokenType %53, %StringRef %56) - call void @reportError.429(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %46, %String* %"$tmpC57") - call void @dtor.229(%String* %"$tmpC57") - call void @dtor.228(%Token* %"$tmpC58") + call void @toString.471(%String* %"$tmpC57", %StringRef %49, %TokenType %53, %StringRef %56) + call void @reportError.423(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %46, %String* %"$tmpC57") + call void @dtor.218(%String* %"$tmpC57") + call void @dtor.217(%Token* %"$tmpC58") br label %if_end55 if_end55: ; preds = %if_else, %if_then54 @@ -20613,7 +20477,7 @@ if_end55: ; preds = %if_else, %if_then54 define internal void @consumeSemis(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this) #4 { %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType br label %code code: ; preds = %0 @@ -20621,8 +20485,8 @@ code: ; preds = %0 while_block: ; preds = %while_step, %code %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 31) - %2 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 31) + %2 = load %TokenType, %TokenType* %tmp.this %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) br i1 %3, label %while_body, label %while_end @@ -20643,60 +20507,60 @@ define internal void @parseModifiers(%Node* sret %_result, %"SparrowParser[Sparr %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %res = alloca %Node - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %e = alloca %Node %"$tmpC" = alloca %Node %"$tmpForRef" = alloca %Node - %tmp.v1 = alloca %TokenType + %tmp.this1 = alloca %TokenType %"$tmpC2" = alloca %Node %"$tmpForRef3" = alloca %Node - %tmp.v4 = alloca %TokenType + %tmp.this4 = alloca %TokenType br label %code code: ; preds = %0 - call void @ctor.436(%Node* %res) + call void @ctor.432(%Node* %res) br label %if_block if_block: ; preds = %code %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 26) - %2 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 26) + %2 = load %TokenType, %TokenType* %tmp.this %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_end if_then: ; preds = %if_block - call void @ctor.436(%Node* %e) + call void @ctor.432(%Node* %e) %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseExpr(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %4, i1 true) - call void @"=.435"(%Node* %e, %Node* %"$tmpC") + call void @"=.430"(%Node* %e, %Node* %"$tmpC") %5 = load %Node, %Node* %res %6 = load %Node, %Node* %e %7 = call %Node @comp_parser_addToNodeList(%Node %5, %Node %6) store %Node %7, %Node* %"$tmpForRef" - call void @"=.435"(%Node* %res, %Node* %"$tmpForRef") + call void @"=.430"(%Node* %res, %Node* %"$tmpForRef") br label %while_block if_end: ; preds = %while_end, %if_block %8 = load %Node*, %Node** %_result.addr - call void @ctor.434(%Node* %8, %Node* %res) + call void @ctor.428(%Node* %8, %Node* %res) ret void while_block: ; preds = %while_step, %if_then %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v1, i32 32) - %10 = load %TokenType, %TokenType* %tmp.v1 + call void @ctor.313(%TokenType* %tmp.this1, i32 32) + %10 = load %TokenType, %TokenType* %tmp.this1 %11 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9, %TokenType %10) br i1 %11, label %while_body, label %while_end while_body: ; preds = %while_block %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseExpr(%Node* %"$tmpC2", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %12, i1 true) - call void @"=.435"(%Node* %e, %Node* %"$tmpC2") + call void @"=.430"(%Node* %e, %Node* %"$tmpC2") %13 = load %Node, %Node* %res %14 = load %Node, %Node* %e %15 = call %Node @comp_parser_addToNodeList(%Node %13, %Node %14) store %Node %15, %Node* %"$tmpForRef3" - call void @"=.435"(%Node* %res, %Node* %"$tmpForRef3") + call void @"=.430"(%Node* %res, %Node* %"$tmpForRef3") br label %while_step while_step: ; preds = %while_body @@ -20704,8 +20568,8 @@ while_step: ; preds = %while_body while_end: ; preds = %while_block %16 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v4, i32 27) - %17 = load %TokenType, %TokenType* %tmp.v4 + call void @ctor.313(%TokenType* %tmp.this4, i32 27) + %17 = load %TokenType, %TokenType* %tmp.this4 %18 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %16, %TokenType %17) %19 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @consumeSemis(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %19) @@ -20728,11 +20592,9 @@ define internal void @parseExpr(%Node* sret %_result, %"SparrowParser[SparrowLay %"$tmpForRef" = alloca %Node %"$tmpC4" = alloca %Location %"$tmpC5" = alloca %Location - %"$tmpC6" = alloca %StringRef - %"$tmpForRef7" = alloca %Node + %"$tmpForRef6" = alloca %Node + %"$tmpC7" = alloca %Location %"$tmpC8" = alloca %Location - %"$tmpC9" = alloca %Location - %"$tmpC10" = alloca %StringRef br label %code code: ; preds = %0 @@ -20741,7 +20603,7 @@ code: ; preds = %0 %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %3 = load i1, i1* %withEqual.addr call void @parsePrefixExpr(%Node* %baseExpr, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, i1 %3) - call void @ctor.164(%String* %op) + call void @ctor.158(%String* %op) br label %while_block while_block: ; preds = %while_step, %code @@ -20751,8 +20613,8 @@ while_body: ; preds = %while_block %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %5 = load i1, i1* %withEqual.addr call void @parseIdOrOperOpt(%String* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %4, i1 %5) - %6 = call %String* @"=.256"(%String* %op, %String* %"$tmpC") - call void @dtor.229(%String* %"$tmpC") + %6 = call %String* @"=.250"(%String* %op, %String* %"$tmpC") + call void @dtor.218(%String* %"$tmpC") br label %if_block while_step: ; preds = %if_end3 @@ -20760,12 +20622,12 @@ while_step: ; preds = %if_end3 while_end: ; preds = %if_else, %if_then, %while_block %7 = load %Node*, %Node** %_result.addr - call void @ctor.434(%Node* %7, %Node* %baseExpr) - call void @dtor.229(%String* %op) + call void @ctor.428(%Node* %7, %Node* %baseExpr) + call void @dtor.218(%String* %op) ret void if_block: ; preds = %while_body - %8 = call i1 @isEmpty.376(%String* %op) + %8 = call i1 @isEmpty.370(%String* %op) br i1 %8, label %if_then, label %if_end if_then: ; preds = %if_block @@ -20791,34 +20653,32 @@ if_then2: ; preds = %if_block1 call void @lastLoc(%Location* %"$tmpC5", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %14) call void @span(%Location* %"$tmpC4", %Location* %loc, %Location* %"$tmpC5") %15 = load %Node, %Node* %baseExpr - call void @asStringRef(%StringRef* %"$tmpC6", %String* %op) - %16 = load %StringRef, %StringRef* %"$tmpC6" + %16 = call %StringRef @asStringRef(%String* %op) %17 = load %Node, %Node* %rhs %18 = call %Node @comp_parser_mkInfixOp(%Location* %"$tmpC4", %Node %15, %StringRef %16, %Node %17) store %Node %18, %Node* %"$tmpForRef" - call void @"=.435"(%Node* %baseExpr, %Node* %"$tmpForRef") + call void @"=.430"(%Node* %baseExpr, %Node* %"$tmpForRef") br label %if_end3 if_else: ; preds = %if_block1 %19 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @lastLoc(%Location* %"$tmpC9", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %19) - call void @span(%Location* %"$tmpC8", %Location* %loc, %Location* %"$tmpC9") + call void @lastLoc(%Location* %"$tmpC8", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %19) + call void @span(%Location* %"$tmpC7", %Location* %loc, %Location* %"$tmpC8") %20 = load %Node, %Node* %baseExpr - call void @asStringRef(%StringRef* %"$tmpC10", %String* %op) - %21 = load %StringRef, %StringRef* %"$tmpC10" - %22 = call %Node @comp_parser_mkPostfixOp(%Location* %"$tmpC8", %Node %20, %StringRef %21) - store %Node %22, %Node* %"$tmpForRef7" - call void @"=.435"(%Node* %baseExpr, %Node* %"$tmpForRef7") + %21 = call %StringRef @asStringRef(%String* %op) + %22 = call %Node @comp_parser_mkPostfixOp(%Location* %"$tmpC7", %Node %20, %StringRef %21) + store %Node %22, %Node* %"$tmpForRef6" + call void @"=.430"(%Node* %baseExpr, %Node* %"$tmpForRef6") br label %while_end -if_end3: ; preds = %dumy_block11, %if_then2 +if_end3: ; preds = %dumy_block9, %if_then2 br label %while_step -dumy_block11: ; No predecessors! +dumy_block9: ; No predecessors! br label %if_end3 -dumy_block12: ; No predecessors! - call void @dtor.229(%String* %op) +dumy_block10: ; No predecessors! + call void @dtor.218(%String* %op) ret void } @@ -20832,60 +20692,59 @@ define internal void @parsePrefixExpr(%Node* sret %_result, %"SparrowParser[Spar store i1 %withEqual, i1* %withEqual.addr %loc = alloca %Location %op = alloca %String - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %"$tmpC" = alloca %String - %tmp.v1 = alloca %TokenType + %tmp.this1 = alloca %TokenType %"$tmpC2" = alloca %String %baseExpr = alloca %Node %"$tmpForRef" = alloca %Node %"$tmpC7" = alloca %Location %"$tmpC8" = alloca %Location - %"$tmpC9" = alloca %StringRef br label %code code: ; preds = %0 %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @curLoc(%Location* %loc, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1) - call void @ctor.164(%String* %op) + call void @ctor.158(%String* %op) br label %if_block if_block: ; preds = %code %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 34) - %3 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 34) + %3 = load %TokenType, %TokenType* %tmp.this %4 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, %TokenType %3) br i1 %4, label %if_then, label %if_else if_then: ; preds = %if_block %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseId(%String* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5) - %6 = call %String* @"=.256"(%String* %op, %String* %"$tmpC") - call void @dtor.229(%String* %"$tmpC") + %6 = call %String* @"=.250"(%String* %op, %String* %"$tmpC") + call void @dtor.218(%String* %"$tmpC") %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v1, i32 34) - %8 = load %TokenType, %TokenType* %tmp.v1 + call void @ctor.313(%TokenType* %tmp.this1, i32 34) + %8 = load %TokenType, %TokenType* %tmp.this1 %9 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %7, %TokenType %8) br label %if_end if_else: ; preds = %if_block %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseOperOpt(%String* %"$tmpC2", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %10, i1 true) - %11 = call %String* @"=.256"(%String* %op, %String* %"$tmpC2") - call void @dtor.229(%String* %"$tmpC2") + %11 = call %String* @"=.250"(%String* %op, %String* %"$tmpC2") + call void @dtor.218(%String* %"$tmpC2") br label %if_end if_end: ; preds = %if_else, %if_then br label %if_block3 if_block3: ; preds = %if_end - %12 = call i1 @isEmpty.376(%String* %op) + %12 = call i1 @isEmpty.370(%String* %op) br i1 %12, label %if_then4, label %if_else5 if_then4: ; preds = %if_block3 %13 = load %Node*, %Node** %_result.addr %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseSimpleExpr(%Node* %13, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %14, i1 true) - call void @dtor.229(%String* %op) + call void @dtor.218(%String* %op) ret void if_else5: ; preds = %if_block3 @@ -20895,23 +20754,22 @@ if_else5: ; preds = %if_block3 %17 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @lastLoc(%Location* %"$tmpC8", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %17) call void @span(%Location* %"$tmpC7", %Location* %loc, %Location* %"$tmpC8") - call void @asStringRef(%StringRef* %"$tmpC9", %String* %op) - %18 = load %StringRef, %StringRef* %"$tmpC9" + %18 = call %StringRef @asStringRef(%String* %op) %19 = load %Node, %Node* %baseExpr %20 = call %Node @comp_parser_mkPrefixOp(%Location* %"$tmpC7", %StringRef %18, %Node %19) store %Node %20, %Node* %"$tmpForRef" - call void @ctor.434(%Node* %16, %Node* %"$tmpForRef") - call void @dtor.229(%String* %op) + call void @ctor.428(%Node* %16, %Node* %"$tmpForRef") + call void @dtor.218(%String* %op) ret void -if_end6: ; preds = %dumy_block10, %dumy_block - call void @dtor.229(%String* %op) +if_end6: ; preds = %dumy_block9, %dumy_block + call void @dtor.218(%String* %op) ret void dumy_block: ; No predecessors! br label %if_end6 -dumy_block10: ; No predecessors! +dumy_block9: ; No predecessors! br label %if_end6 } @@ -20921,19 +20779,19 @@ define internal void @parseId(%String* sret %_result, %"SparrowParser[SparrowLay store %String* %_result, %String** %_result.addr %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType br label %code code: ; preds = %0 %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 36) - %2 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 36) + %2 = load %TokenType, %TokenType* %tmp.this %3 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) %4 = load %String*, %String** %_result.addr %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 1 %7 = getelementptr inbounds %Token, %Token* %6, i32 0, i32 2 - call void @ctor.192(%String* %4, %String* %7) + call void @ctor.184(%String* %4, %String* %7) ret void } @@ -20945,8 +20803,8 @@ define internal void @parseOperOpt(%String* sret %_result, %"SparrowParser[Sparr store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %withEqual.addr = alloca i1 store i1 %withEqual, i1* %withEqual.addr - %tmp.v = alloca %TokenType - %tmp.v5 = alloca %TokenType + %tmp.this = alloca %TokenType + %tmp.this5 = alloca %TokenType br label %code code: ; preds = %0 @@ -20954,8 +20812,8 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 37) - %2 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 37) + %2 = load %TokenType, %TokenType* %tmp.this %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_else @@ -20964,7 +20822,7 @@ if_then: ; preds = %if_block %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 1 %7 = getelementptr inbounds %Token, %Token* %6, i32 0, i32 2 - call void @ctor.192(%String* %4, %String* %7) + call void @ctor.184(%String* %4, %String* %7) ret void if_else: ; preds = %if_block @@ -20985,12 +20843,12 @@ if_then2: ; preds = %cond.end %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %11 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %10, i32 0, i32 1 %12 = getelementptr inbounds %Token, %Token* %11, i32 0, i32 2 - call void @ctor.192(%String* %9, %String* %12) + call void @ctor.184(%String* %9, %String* %12) br i1 %8, label %cond_destruct_alt1, label %cond_destruct_alt2 if_else3: ; preds = %cond.end %13 = load %String*, %String** %_result.addr - call void @ctor.164(%String* %13) + call void @ctor.158(%String* %13) br i1 %8, label %cond_destruct_alt17, label %cond_destruct_alt28 if_end4: ; preds = %dumy_block10, %dumy_block6 @@ -20998,8 +20856,8 @@ if_end4: ; preds = %dumy_block10, %dumy cond.true: ; preds = %if_block1 %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v5, i32 35) - %15 = load %TokenType, %TokenType* %tmp.v5 + call void @ctor.313(%TokenType* %tmp.this5, i32 35) + %15 = load %TokenType, %TokenType* %tmp.this5 %16 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %14, %TokenType %15) br label %cond.end @@ -21054,87 +20912,84 @@ define void @parseSimpleExpr(%Node* sret %_result, %"SparrowParser[SparrowLayout store i1 %withEqual, i1* %withEqual.addr %res = alloca %Node %loc = alloca %Location - %tmp.v = alloca %TokenType - %tmp.v1 = alloca %TokenType + %tmp.this = alloca %TokenType + %tmp.this1 = alloca %TokenType %"$tmpC" = alloca %Node - %tmp.v6 = alloca %TokenType + %tmp.this6 = alloca %TokenType %"$tmpForRef" = alloca %Node %"$tmpC7" = alloca %Node - %tmp.v8 = alloca %TokenType - %tmp.v13 = alloca %TokenType + %tmp.this8 = alloca %TokenType + %tmp.this13 = alloca %TokenType %"$tmpForRef14" = alloca %Node - %"$tmpC15" = alloca %StringRef - %tmp.v20 = alloca %TokenType - %"$tmpForRef21" = alloca %Node - %tmp.v26 = alloca %TokenType - %"$tmpForRef27" = alloca %Node - %tmp.v32 = alloca %TokenType - %"$tmpForRef33" = alloca %Node - %tmp.v38 = alloca %TokenType - %"$tmpForRef39" = alloca %Node - %tmp.v40 = alloca i32 - %tmp.v45 = alloca %TokenType - %"$tmpForRef46" = alloca %Node - %tmp.v47 = alloca i32 - %tmp.v52 = alloca %TokenType - %"$tmpForRef53" = alloca %Node - %tmp.v54 = alloca i64 - %tmp.v59 = alloca %TokenType - %"$tmpForRef60" = alloca %Node - %tmp.v61 = alloca i64 - %tmp.v66 = alloca %TokenType - %"$tmpForRef67" = alloca %Node - %tmp.v68 = alloca float - %tmp.v73 = alloca %TokenType - %"$tmpForRef74" = alloca %Node - %tmp.v75 = alloca double - %tmp.v80 = alloca %TokenType - %"$tmpForRef81" = alloca %Node - %tmp.v82 = alloca i64 - %tmp.v86 = alloca %TokenType - %"$tmpForRef87" = alloca %Node - %"$tmpC88" = alloca %StringRef - %"$tmpC92" = alloca %String + %tmp.this19 = alloca %TokenType + %"$tmpForRef20" = alloca %Node + %tmp.this25 = alloca %TokenType + %"$tmpForRef26" = alloca %Node + %tmp.this31 = alloca %TokenType + %"$tmpForRef32" = alloca %Node + %tmp.this37 = alloca %TokenType + %"$tmpForRef38" = alloca %Node + %tmp.this39 = alloca i32 + %tmp.this44 = alloca %TokenType + %"$tmpForRef45" = alloca %Node + %tmp.this46 = alloca i32 + %tmp.this51 = alloca %TokenType + %"$tmpForRef52" = alloca %Node + %tmp.this53 = alloca i64 + %tmp.this58 = alloca %TokenType + %"$tmpForRef59" = alloca %Node + %tmp.this60 = alloca i64 + %tmp.this65 = alloca %TokenType + %"$tmpForRef66" = alloca %Node + %tmp.this67 = alloca float + %tmp.this72 = alloca %TokenType + %"$tmpForRef73" = alloca %Node + %tmp.this74 = alloca double + %tmp.this79 = alloca %TokenType + %"$tmpForRef80" = alloca %Node + %tmp.this81 = alloca i64 + %tmp.this85 = alloca %TokenType + %"$tmpForRef86" = alloca %Node + %"$tmpC90" = alloca %String %tmp.StringRef = alloca %StringRef - %"$tmpC93" = alloca %Token - %tmp.StringRef94 = alloca %StringRef - %tmp.v99 = alloca %TokenType + %"$tmpC91" = alloca %Token + %tmp.StringRef92 = alloca %StringRef + %tmp.this97 = alloca %TokenType %args = alloca %Node - %tmp.v100 = alloca %TokenType - %"$tmpForRef101" = alloca %Node - %"$tmpC102" = alloca %Location - %"$tmpC103" = alloca %Location - %tmp.v108 = alloca %TokenType - %tmp.v113 = alloca %TokenType - %tmp.v114 = alloca %TokenType - %"$tmpForRef115" = alloca %Node - %"$tmpC116" = alloca %Location - %"$tmpC117" = alloca %Location - %tmp.StringRef118 = alloca %StringRef + %tmp.this98 = alloca %TokenType + %"$tmpForRef99" = alloca %Node + %"$tmpC100" = alloca %Location + %"$tmpC101" = alloca %Location + %tmp.this106 = alloca %TokenType + %tmp.this111 = alloca %TokenType + %tmp.this112 = alloca %TokenType + %"$tmpForRef113" = alloca %Node + %"$tmpC114" = alloca %Location + %"$tmpC115" = alloca %Location + %tmp.StringRef116 = alloca %StringRef %id = alloca %String - %"$tmpForRef119" = alloca %Node - %"$tmpC120" = alloca %Location - %"$tmpC121" = alloca %Location - %"$tmpC122" = alloca %StringRef + %"$tmpForRef117" = alloca %Node + %"$tmpC118" = alloca %Location + %"$tmpC119" = alloca %Location br label %code code: ; preds = %0 - call void @ctor.436(%Node* %res) + call void @ctor.432(%Node* %res) %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @curLoc(%Location* %loc, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1) br label %if_block if_block: ; preds = %code %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 28) - %3 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 28) + %3 = load %TokenType, %TokenType* %tmp.this %4 = call i1 @nextIs(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, %TokenType %3) br i1 %4, label %cond.true, label %cond.false if_then: ; preds = %cond.end %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseLambdaExpr(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5) - call void @"=.435"(%Node* %res, %Node* %"$tmpC") + call void @"=.430"(%Node* %res, %Node* %"$tmpC") br label %if_end if_else: ; preds = %cond.end @@ -21145,8 +21000,8 @@ if_end: ; preds = %if_end5, %if_then cond.true: ; preds = %if_block %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v1, i32 6) - %7 = load %TokenType, %TokenType* %tmp.v1 + call void @ctor.313(%TokenType* %tmp.this1, i32 6) + %7 = load %TokenType, %TokenType* %tmp.this1 %8 = call i1 @next2Is(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %6, %TokenType %7) br label %cond.end @@ -21159,8 +21014,8 @@ cond.end: ; preds = %cond.false, %cond.t if_block2: ; preds = %if_else %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v6, i32 28) - %10 = load %TokenType, %TokenType* %tmp.v6 + call void @ctor.313(%TokenType* %tmp.this6, i32 28) + %10 = load %TokenType, %TokenType* %tmp.this6 %11 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9, %TokenType %10) br i1 %11, label %if_then3, label %if_else4 @@ -21170,10 +21025,10 @@ if_then3: ; preds = %if_block2 %13 = load %Node, %Node* %"$tmpC7" %14 = call %Node @comp_parser_mkParenthesisExpr(%Node %13) store %Node %14, %Node* %"$tmpForRef" - call void @"=.435"(%Node* %res, %Node* %"$tmpForRef") + call void @"=.430"(%Node* %res, %Node* %"$tmpForRef") %15 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v8, i32 29) - %16 = load %TokenType, %TokenType* %tmp.v8 + call void @ctor.313(%TokenType* %tmp.this8, i32 29) + %16 = load %TokenType, %TokenType* %tmp.this8 %17 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %15, %TokenType %16) br label %if_end5 @@ -21185,8 +21040,8 @@ if_end5: ; preds = %if_end12, %if_then3 if_block9: ; preds = %if_else4 %18 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v13, i32 36) - %19 = load %TokenType, %TokenType* %tmp.v13 + call void @ctor.313(%TokenType* %tmp.this13, i32 36) + %19 = load %TokenType, %TokenType* %tmp.this13 %20 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %18, %TokenType %19) br i1 %20, label %if_then10, label %if_else11 @@ -21197,93 +21052,92 @@ if_then10: ; preds = %if_block9 %24 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %25 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %24, i32 0, i32 1 %26 = getelementptr inbounds %Token, %Token* %25, i32 0, i32 2 - call void @asStringRef(%StringRef* %"$tmpC15", %String* %26) - %27 = load %StringRef, %StringRef* %"$tmpC15" + %27 = call %StringRef @asStringRef(%String* %26) %28 = call %Node @comp_parser_mkIdentifier(%Location* %23, %StringRef %27) store %Node %28, %Node* %"$tmpForRef14" - call void @"=.435"(%Node* %res, %Node* %"$tmpForRef14") + call void @"=.430"(%Node* %res, %Node* %"$tmpForRef14") br label %if_end12 if_else11: ; preds = %if_block9 - br label %if_block16 + br label %if_block15 -if_end12: ; preds = %if_end19, %if_then10 +if_end12: ; preds = %if_end18, %if_then10 br label %if_end5 -if_block16: ; preds = %if_else11 +if_block15: ; preds = %if_else11 %29 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v20, i32 21) - %30 = load %TokenType, %TokenType* %tmp.v20 + call void @ctor.313(%TokenType* %tmp.this19, i32 21) + %30 = load %TokenType, %TokenType* %tmp.this19 %31 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %29, %TokenType %30) - br i1 %31, label %if_then17, label %if_else18 + br i1 %31, label %if_then16, label %if_else17 -if_then17: ; preds = %if_block16 +if_then16: ; preds = %if_block15 %32 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %33 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %32, i32 0, i32 1 %34 = getelementptr inbounds %Token, %Token* %33, i32 0, i32 0 %35 = call %Node @comp_parser_mkNullLiteral(%Location* %34) - store %Node %35, %Node* %"$tmpForRef21" - call void @"=.435"(%Node* %res, %Node* %"$tmpForRef21") - br label %if_end19 + store %Node %35, %Node* %"$tmpForRef20" + call void @"=.430"(%Node* %res, %Node* %"$tmpForRef20") + br label %if_end18 -if_else18: ; preds = %if_block16 - br label %if_block22 +if_else17: ; preds = %if_block15 + br label %if_block21 -if_end19: ; preds = %if_end25, %if_then17 +if_end18: ; preds = %if_end24, %if_then16 br label %if_end12 -if_block22: ; preds = %if_else18 +if_block21: ; preds = %if_else17 %36 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v26, i32 22) - %37 = load %TokenType, %TokenType* %tmp.v26 + call void @ctor.313(%TokenType* %tmp.this25, i32 22) + %37 = load %TokenType, %TokenType* %tmp.this25 %38 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %36, %TokenType %37) - br i1 %38, label %if_then23, label %if_else24 + br i1 %38, label %if_then22, label %if_else23 -if_then23: ; preds = %if_block22 +if_then22: ; preds = %if_block21 %39 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %40 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %39, i32 0, i32 1 %41 = getelementptr inbounds %Token, %Token* %40, i32 0, i32 0 %42 = call %Node @comp_parser_mkBoolLiteral(%Location* %41, i1 true) - store %Node %42, %Node* %"$tmpForRef27" - call void @"=.435"(%Node* %res, %Node* %"$tmpForRef27") - br label %if_end25 + store %Node %42, %Node* %"$tmpForRef26" + call void @"=.430"(%Node* %res, %Node* %"$tmpForRef26") + br label %if_end24 -if_else24: ; preds = %if_block22 - br label %if_block28 +if_else23: ; preds = %if_block21 + br label %if_block27 -if_end25: ; preds = %if_end31, %if_then23 - br label %if_end19 +if_end24: ; preds = %if_end30, %if_then22 + br label %if_end18 -if_block28: ; preds = %if_else24 +if_block27: ; preds = %if_else23 %43 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v32, i32 20) - %44 = load %TokenType, %TokenType* %tmp.v32 + call void @ctor.313(%TokenType* %tmp.this31, i32 20) + %44 = load %TokenType, %TokenType* %tmp.this31 %45 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %43, %TokenType %44) - br i1 %45, label %if_then29, label %if_else30 + br i1 %45, label %if_then28, label %if_else29 -if_then29: ; preds = %if_block28 +if_then28: ; preds = %if_block27 %46 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %47 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %46, i32 0, i32 1 %48 = getelementptr inbounds %Token, %Token* %47, i32 0, i32 0 %49 = call %Node @comp_parser_mkBoolLiteral(%Location* %48, i1 false) - store %Node %49, %Node* %"$tmpForRef33" - call void @"=.435"(%Node* %res, %Node* %"$tmpForRef33") - br label %if_end31 + store %Node %49, %Node* %"$tmpForRef32" + call void @"=.430"(%Node* %res, %Node* %"$tmpForRef32") + br label %if_end30 -if_else30: ; preds = %if_block28 - br label %if_block34 +if_else29: ; preds = %if_block27 + br label %if_block33 -if_end31: ; preds = %if_end37, %if_then29 - br label %if_end25 +if_end30: ; preds = %if_end36, %if_then28 + br label %if_end24 -if_block34: ; preds = %if_else30 +if_block33: ; preds = %if_else29 %50 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v38, i32 40) - %51 = load %TokenType, %TokenType* %tmp.v38 + call void @ctor.313(%TokenType* %tmp.this37, i32 40) + %51 = load %TokenType, %TokenType* %tmp.this37 %52 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %50, %TokenType %51) - br i1 %52, label %if_then35, label %if_else36 + br i1 %52, label %if_then34, label %if_else35 -if_then35: ; preds = %if_block34 +if_then34: ; preds = %if_block33 %53 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %54 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %53, i32 0, i32 1 %55 = getelementptr inbounds %Token, %Token* %54, i32 0, i32 0 @@ -21292,27 +21146,27 @@ if_then35: ; preds = %if_block34 %58 = getelementptr inbounds %Token, %Token* %57, i32 0, i32 3 %59 = load i64, i64* %58 %60 = trunc i64 %59 to i32 - store i32 %60, i32* %tmp.v40 - %61 = load i32, i32* %tmp.v40 + store i32 %60, i32* %tmp.this39 + %61 = load i32, i32* %tmp.this39 %62 = call %Node @comp_parser_mkIntLiteral(%Location* %55, i32 %61) - store %Node %62, %Node* %"$tmpForRef39" - call void @"=.435"(%Node* %res, %Node* %"$tmpForRef39") - br label %if_end37 + store %Node %62, %Node* %"$tmpForRef38" + call void @"=.430"(%Node* %res, %Node* %"$tmpForRef38") + br label %if_end36 -if_else36: ; preds = %if_block34 - br label %if_block41 +if_else35: ; preds = %if_block33 + br label %if_block40 -if_end37: ; preds = %if_end44, %if_then35 - br label %if_end31 +if_end36: ; preds = %if_end43, %if_then34 + br label %if_end30 -if_block41: ; preds = %if_else36 +if_block40: ; preds = %if_else35 %63 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v45, i32 42) - %64 = load %TokenType, %TokenType* %tmp.v45 + call void @ctor.313(%TokenType* %tmp.this44, i32 42) + %64 = load %TokenType, %TokenType* %tmp.this44 %65 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %63, %TokenType %64) - br i1 %65, label %if_then42, label %if_else43 + br i1 %65, label %if_then41, label %if_else42 -if_then42: ; preds = %if_block41 +if_then41: ; preds = %if_block40 %66 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %67 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %66, i32 0, i32 1 %68 = getelementptr inbounds %Token, %Token* %67, i32 0, i32 0 @@ -21321,27 +21175,27 @@ if_then42: ; preds = %if_block41 %71 = getelementptr inbounds %Token, %Token* %70, i32 0, i32 3 %72 = load i64, i64* %71 %73 = trunc i64 %72 to i32 - store i32 %73, i32* %tmp.v47 - %74 = load i32, i32* %tmp.v47 + store i32 %73, i32* %tmp.this46 + %74 = load i32, i32* %tmp.this46 %75 = call %Node @comp_parser_mkUIntLiteral(%Location* %68, i32 %74) - store %Node %75, %Node* %"$tmpForRef46" - call void @"=.435"(%Node* %res, %Node* %"$tmpForRef46") - br label %if_end44 + store %Node %75, %Node* %"$tmpForRef45" + call void @"=.430"(%Node* %res, %Node* %"$tmpForRef45") + br label %if_end43 -if_else43: ; preds = %if_block41 - br label %if_block48 +if_else42: ; preds = %if_block40 + br label %if_block47 -if_end44: ; preds = %if_end51, %if_then42 - br label %if_end37 +if_end43: ; preds = %if_end50, %if_then41 + br label %if_end36 -if_block48: ; preds = %if_else43 +if_block47: ; preds = %if_else42 %76 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v52, i32 41) - %77 = load %TokenType, %TokenType* %tmp.v52 + call void @ctor.313(%TokenType* %tmp.this51, i32 41) + %77 = load %TokenType, %TokenType* %tmp.this51 %78 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %76, %TokenType %77) - br i1 %78, label %if_then49, label %if_else50 + br i1 %78, label %if_then48, label %if_else49 -if_then49: ; preds = %if_block48 +if_then48: ; preds = %if_block47 %79 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %80 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %79, i32 0, i32 1 %81 = getelementptr inbounds %Token, %Token* %80, i32 0, i32 0 @@ -21349,27 +21203,27 @@ if_then49: ; preds = %if_block48 %83 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %82, i32 0, i32 1 %84 = getelementptr inbounds %Token, %Token* %83, i32 0, i32 3 %85 = load i64, i64* %84 - store i64 %85, i64* %tmp.v54 - %86 = load i64, i64* %tmp.v54 + store i64 %85, i64* %tmp.this53 + %86 = load i64, i64* %tmp.this53 %87 = call %Node @comp_parser_mkLongLiteral(%Location* %81, i64 %86) - store %Node %87, %Node* %"$tmpForRef53" - call void @"=.435"(%Node* %res, %Node* %"$tmpForRef53") - br label %if_end51 + store %Node %87, %Node* %"$tmpForRef52" + call void @"=.430"(%Node* %res, %Node* %"$tmpForRef52") + br label %if_end50 -if_else50: ; preds = %if_block48 - br label %if_block55 +if_else49: ; preds = %if_block47 + br label %if_block54 -if_end51: ; preds = %if_end58, %if_then49 - br label %if_end44 +if_end50: ; preds = %if_end57, %if_then48 + br label %if_end43 -if_block55: ; preds = %if_else50 +if_block54: ; preds = %if_else49 %88 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v59, i32 43) - %89 = load %TokenType, %TokenType* %tmp.v59 + call void @ctor.313(%TokenType* %tmp.this58, i32 43) + %89 = load %TokenType, %TokenType* %tmp.this58 %90 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %88, %TokenType %89) - br i1 %90, label %if_then56, label %if_else57 + br i1 %90, label %if_then55, label %if_else56 -if_then56: ; preds = %if_block55 +if_then55: ; preds = %if_block54 %91 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %92 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %91, i32 0, i32 1 %93 = getelementptr inbounds %Token, %Token* %92, i32 0, i32 0 @@ -21377,27 +21231,27 @@ if_then56: ; preds = %if_block55 %95 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %94, i32 0, i32 1 %96 = getelementptr inbounds %Token, %Token* %95, i32 0, i32 3 %97 = load i64, i64* %96 - store i64 %97, i64* %tmp.v61 - %98 = load i64, i64* %tmp.v61 + store i64 %97, i64* %tmp.this60 + %98 = load i64, i64* %tmp.this60 %99 = call %Node @comp_parser_mkULongLiteral(%Location* %93, i64 %98) - store %Node %99, %Node* %"$tmpForRef60" - call void @"=.435"(%Node* %res, %Node* %"$tmpForRef60") - br label %if_end58 + store %Node %99, %Node* %"$tmpForRef59" + call void @"=.430"(%Node* %res, %Node* %"$tmpForRef59") + br label %if_end57 -if_else57: ; preds = %if_block55 - br label %if_block62 +if_else56: ; preds = %if_block54 + br label %if_block61 -if_end58: ; preds = %if_end65, %if_then56 - br label %if_end51 +if_end57: ; preds = %if_end64, %if_then55 + br label %if_end50 -if_block62: ; preds = %if_else57 +if_block61: ; preds = %if_else56 %100 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v66, i32 44) - %101 = load %TokenType, %TokenType* %tmp.v66 + call void @ctor.313(%TokenType* %tmp.this65, i32 44) + %101 = load %TokenType, %TokenType* %tmp.this65 %102 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %100, %TokenType %101) - br i1 %102, label %if_then63, label %if_else64 + br i1 %102, label %if_then62, label %if_else63 -if_then63: ; preds = %if_block62 +if_then62: ; preds = %if_block61 %103 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %104 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %103, i32 0, i32 1 %105 = getelementptr inbounds %Token, %Token* %104, i32 0, i32 0 @@ -21406,27 +21260,27 @@ if_then63: ; preds = %if_block62 %108 = getelementptr inbounds %Token, %Token* %107, i32 0, i32 4 %109 = load double, double* %108 %110 = fptrunc double %109 to float - store float %110, float* %tmp.v68 - %111 = load float, float* %tmp.v68 + store float %110, float* %tmp.this67 + %111 = load float, float* %tmp.this67 %112 = call %Node @comp_parser_mkFloatLiteral(%Location* %105, float %111) - store %Node %112, %Node* %"$tmpForRef67" - call void @"=.435"(%Node* %res, %Node* %"$tmpForRef67") - br label %if_end65 + store %Node %112, %Node* %"$tmpForRef66" + call void @"=.430"(%Node* %res, %Node* %"$tmpForRef66") + br label %if_end64 -if_else64: ; preds = %if_block62 - br label %if_block69 +if_else63: ; preds = %if_block61 + br label %if_block68 -if_end65: ; preds = %if_end72, %if_then63 - br label %if_end58 +if_end64: ; preds = %if_end71, %if_then62 + br label %if_end57 -if_block69: ; preds = %if_else64 +if_block68: ; preds = %if_else63 %113 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v73, i32 45) - %114 = load %TokenType, %TokenType* %tmp.v73 + call void @ctor.313(%TokenType* %tmp.this72, i32 45) + %114 = load %TokenType, %TokenType* %tmp.this72 %115 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %113, %TokenType %114) - br i1 %115, label %if_then70, label %if_else71 + br i1 %115, label %if_then69, label %if_else70 -if_then70: ; preds = %if_block69 +if_then69: ; preds = %if_block68 %116 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %117 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %116, i32 0, i32 1 %118 = getelementptr inbounds %Token, %Token* %117, i32 0, i32 0 @@ -21434,71 +21288,70 @@ if_then70: ; preds = %if_block69 %120 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %119, i32 0, i32 1 %121 = getelementptr inbounds %Token, %Token* %120, i32 0, i32 4 %122 = load double, double* %121 - store double %122, double* %tmp.v75 - %123 = load double, double* %tmp.v75 + store double %122, double* %tmp.this74 + %123 = load double, double* %tmp.this74 %124 = call %Node @comp_parser_mkDoubleLiteral(%Location* %118, double %123) - store %Node %124, %Node* %"$tmpForRef74" - call void @"=.435"(%Node* %res, %Node* %"$tmpForRef74") - br label %if_end72 + store %Node %124, %Node* %"$tmpForRef73" + call void @"=.430"(%Node* %res, %Node* %"$tmpForRef73") + br label %if_end71 -if_else71: ; preds = %if_block69 - br label %if_block76 +if_else70: ; preds = %if_block68 + br label %if_block75 -if_end72: ; preds = %if_end79, %if_then70 - br label %if_end65 +if_end71: ; preds = %if_end78, %if_then69 + br label %if_end64 -if_block76: ; preds = %if_else71 +if_block75: ; preds = %if_else70 %125 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v80, i32 38) - %126 = load %TokenType, %TokenType* %tmp.v80 + call void @ctor.313(%TokenType* %tmp.this79, i32 38) + %126 = load %TokenType, %TokenType* %tmp.this79 %127 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %125, %TokenType %126) - br i1 %127, label %if_then77, label %if_else78 + br i1 %127, label %if_then76, label %if_else77 -if_then77: ; preds = %if_block76 +if_then76: ; preds = %if_block75 %128 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %129 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %128, i32 0, i32 1 %130 = getelementptr inbounds %Token, %Token* %129, i32 0, i32 0 %131 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %132 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %131, i32 0, i32 1 %133 = getelementptr inbounds %Token, %Token* %132, i32 0, i32 2 - store i64 0, i64* %tmp.v82 - %134 = load i64, i64* %tmp.v82 - %135 = call i8* @"().281"(%String* %133, i64 %134) + store i64 0, i64* %tmp.this81 + %134 = load i64, i64* %tmp.this81 + %135 = call i8* @"().275"(%String* %133, i64 %134) %136 = load i8, i8* %135 %137 = call %Node @comp_parser_mkCharLiteral(%Location* %130, i8 %136) - store %Node %137, %Node* %"$tmpForRef81" - call void @"=.435"(%Node* %res, %Node* %"$tmpForRef81") - br label %if_end79 + store %Node %137, %Node* %"$tmpForRef80" + call void @"=.430"(%Node* %res, %Node* %"$tmpForRef80") + br label %if_end78 -if_else78: ; preds = %if_block76 - br label %if_block83 +if_else77: ; preds = %if_block75 + br label %if_block82 -if_end79: ; preds = %if_end85, %if_then77 - br label %if_end72 +if_end78: ; preds = %if_end84, %if_then76 + br label %if_end71 -if_block83: ; preds = %if_else78 +if_block82: ; preds = %if_else77 %138 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v86, i32 39) - %139 = load %TokenType, %TokenType* %tmp.v86 + call void @ctor.313(%TokenType* %tmp.this85, i32 39) + %139 = load %TokenType, %TokenType* %tmp.this85 %140 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %138, %TokenType %139) - br i1 %140, label %if_then84, label %if_end85 + br i1 %140, label %if_then83, label %if_end84 -if_then84: ; preds = %if_block83 +if_then83: ; preds = %if_block82 %141 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %142 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %141, i32 0, i32 1 %143 = getelementptr inbounds %Token, %Token* %142, i32 0, i32 0 %144 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %145 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %144, i32 0, i32 1 %146 = getelementptr inbounds %Token, %Token* %145, i32 0, i32 2 - call void @asStringRef(%StringRef* %"$tmpC88", %String* %146) - %147 = load %StringRef, %StringRef* %"$tmpC88" + %147 = call %StringRef @asStringRef(%String* %146) %148 = call %Node @comp_parser_mkStringLiteral(%Location* %143, %StringRef %147) - store %Node %148, %Node* %"$tmpForRef87" - call void @"=.435"(%Node* %res, %Node* %"$tmpForRef87") - br label %if_end85 + store %Node %148, %Node* %"$tmpForRef86" + call void @"=.430"(%Node* %res, %Node* %"$tmpForRef86") + br label %if_end84 -if_end85: ; preds = %if_then84, %if_block83 - br label %if_end79 +if_end84: ; preds = %if_then83, %if_block82 + br label %if_end78 cond_destruct_alt1: ; preds = %if_end br label %cond_destruct_end @@ -21507,14 +21360,14 @@ cond_destruct_alt2: ; preds = %if_end br label %cond_destruct_end cond_destruct_end: ; preds = %cond_destruct_alt2, %cond_destruct_alt1 - br label %if_block89 + br label %if_block87 -if_block89: ; preds = %cond_destruct_end +if_block87: ; preds = %cond_destruct_end %149 = load %Node, %Node* %res %150 = call i1 @isNull(%Node %149) - br i1 %150, label %if_then90, label %if_end91 + br i1 %150, label %if_then88, label %if_end89 -if_then90: ; preds = %if_block89 +if_then88: ; preds = %if_block87 %151 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %152 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 0 %153 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 1 @@ -21523,135 +21376,134 @@ if_then90: ; preds = %if_block89 %154 = load %StringRef, %StringRef* %tmp.StringRef %155 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %156 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %155, i32 0, i32 0 - call void @"pre_*.425"(%Token* %"$tmpC93", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %156) - %157 = getelementptr inbounds %Token, %Token* %"$tmpC93", i32 0, i32 1 + call void @"pre_*.419"(%Token* %"$tmpC91", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %156) + %157 = getelementptr inbounds %Token, %Token* %"$tmpC91", i32 0, i32 1 %158 = load %TokenType, %TokenType* %157 - %159 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef94, i32 0, i32 0 - %160 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef94, i32 0, i32 1 + %159 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef92, i32 0, i32 0 + %160 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef92, i32 0, i32 1 store i8* getelementptr inbounds ([23 x i8], [23 x i8]* @str.96, i32 0, i32 0), i8** %159 store i8* getelementptr inbounds ([23 x i8], [23 x i8]* @str.96, i32 0, i32 22), i8** %160 - %161 = load %StringRef, %StringRef* %tmp.StringRef94 - call void @toString.474(%String* %"$tmpC92", %StringRef %154, %TokenType %158, %StringRef %161) - call void @reportError.429(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %151, %String* %"$tmpC92") - call void @dtor.229(%String* %"$tmpC92") - call void @dtor.228(%Token* %"$tmpC93") + %161 = load %StringRef, %StringRef* %tmp.StringRef92 + call void @toString.471(%String* %"$tmpC90", %StringRef %154, %TokenType %158, %StringRef %161) + call void @reportError.423(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %151, %String* %"$tmpC90") + call void @dtor.218(%String* %"$tmpC90") + call void @dtor.217(%Token* %"$tmpC91") %162 = load %Node*, %Node** %_result.addr - call void @ctor.436(%Node* %162) + call void @ctor.432(%Node* %162) ret void -if_end91: ; preds = %dumy_block, %if_block89 +if_end89: ; preds = %dumy_block, %if_block87 br label %while_block dumy_block: ; No predecessors! - br label %if_end91 + br label %if_end89 -while_block: ; preds = %while_step, %if_end91 +while_block: ; preds = %while_step, %if_end89 br i1 true, label %while_body, label %while_end while_body: ; preds = %while_block - br label %if_block95 + br label %if_block93 -while_step: ; preds = %if_end98 +while_step: ; preds = %if_end96 br label %while_block -while_end: ; preds = %if_else106, %while_block +while_end: ; preds = %if_else104, %while_block %163 = load %Node*, %Node** %_result.addr - call void @ctor.434(%Node* %163, %Node* %res) + call void @ctor.428(%Node* %163, %Node* %res) ret void -if_block95: ; preds = %while_body +if_block93: ; preds = %while_body %164 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v99, i32 28) - %165 = load %TokenType, %TokenType* %tmp.v99 + call void @ctor.313(%TokenType* %tmp.this97, i32 28) + %165 = load %TokenType, %TokenType* %tmp.this97 %166 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %164, %TokenType %165) - br i1 %166, label %if_then96, label %if_else97 + br i1 %166, label %if_then94, label %if_else95 -if_then96: ; preds = %if_block95 +if_then94: ; preds = %if_block93 %167 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseExprListOpt(%Node* %args, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %167) %168 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v100, i32 29) - %169 = load %TokenType, %TokenType* %tmp.v100 + call void @ctor.313(%TokenType* %tmp.this98, i32 29) + %169 = load %TokenType, %TokenType* %tmp.this98 %170 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %168, %TokenType %169) %171 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @lastLoc(%Location* %"$tmpC103", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %171) - call void @span(%Location* %"$tmpC102", %Location* %loc, %Location* %"$tmpC103") + call void @lastLoc(%Location* %"$tmpC101", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %171) + call void @span(%Location* %"$tmpC100", %Location* %loc, %Location* %"$tmpC101") %172 = load %Node, %Node* %res %173 = load %Node, %Node* %args - %174 = call %Node @comp_parser_mkFunAppExpr(%Location* %"$tmpC102", %Node %172, %Node %173) - store %Node %174, %Node* %"$tmpForRef101" - call void @"=.435"(%Node* %res, %Node* %"$tmpForRef101") - br label %if_end98 + %174 = call %Node @comp_parser_mkFunAppExpr(%Location* %"$tmpC100", %Node %172, %Node %173) + store %Node %174, %Node* %"$tmpForRef99" + call void @"=.430"(%Node* %res, %Node* %"$tmpForRef99") + br label %if_end96 -if_else97: ; preds = %if_block95 - br label %if_block104 +if_else95: ; preds = %if_block93 + br label %if_block102 -if_end98: ; preds = %if_end107, %if_then96 +if_end96: ; preds = %if_end105, %if_then94 br label %while_step -if_block104: ; preds = %if_else97 +if_block102: ; preds = %if_else95 %175 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v108, i32 33) - %176 = load %TokenType, %TokenType* %tmp.v108 + call void @ctor.313(%TokenType* %tmp.this106, i32 33) + %176 = load %TokenType, %TokenType* %tmp.this106 %177 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %175, %TokenType %176) - br i1 %177, label %if_then105, label %if_else106 + br i1 %177, label %if_then103, label %if_else104 -if_then105: ; preds = %if_block104 - br label %if_block109 +if_then103: ; preds = %if_block102 + br label %if_block107 -if_else106: ; preds = %if_block104 +if_else104: ; preds = %if_block102 br label %while_end -if_end107: ; preds = %dumy_block123, %if_end112 - br label %if_end98 +if_end105: ; preds = %dumy_block120, %if_end110 + br label %if_end96 -if_block109: ; preds = %if_then105 +if_block107: ; preds = %if_then103 %178 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v113, i32 28) - %179 = load %TokenType, %TokenType* %tmp.v113 + call void @ctor.313(%TokenType* %tmp.this111, i32 28) + %179 = load %TokenType, %TokenType* %tmp.this111 %180 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %178, %TokenType %179) - br i1 %180, label %if_then110, label %if_else111 + br i1 %180, label %if_then108, label %if_else109 -if_then110: ; preds = %if_block109 +if_then108: ; preds = %if_block107 %181 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v114, i32 29) - %182 = load %TokenType, %TokenType* %tmp.v114 + call void @ctor.313(%TokenType* %tmp.this112, i32 29) + %182 = load %TokenType, %TokenType* %tmp.this112 %183 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %181, %TokenType %182) %184 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @lastLoc(%Location* %"$tmpC117", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %184) - call void @span(%Location* %"$tmpC116", %Location* %loc, %Location* %"$tmpC117") + call void @lastLoc(%Location* %"$tmpC115", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %184) + call void @span(%Location* %"$tmpC114", %Location* %loc, %Location* %"$tmpC115") %185 = load %Node, %Node* %res - %186 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef118, i32 0, i32 0 - %187 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef118, i32 0, i32 1 + %186 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef116, i32 0, i32 0 + %187 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef116, i32 0, i32 1 store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @str.97, i32 0, i32 0), i8** %186 store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @str.97, i32 0, i32 2), i8** %187 - %188 = load %StringRef, %StringRef* %tmp.StringRef118 - %189 = call %Node @comp_parser_mkDotExpr(%Location* %"$tmpC116", %Node %185, %StringRef %188) - store %Node %189, %Node* %"$tmpForRef115" - call void @"=.435"(%Node* %res, %Node* %"$tmpForRef115") - br label %if_end112 + %188 = load %StringRef, %StringRef* %tmp.StringRef116 + %189 = call %Node @comp_parser_mkDotExpr(%Location* %"$tmpC114", %Node %185, %StringRef %188) + store %Node %189, %Node* %"$tmpForRef113" + call void @"=.430"(%Node* %res, %Node* %"$tmpForRef113") + br label %if_end110 -if_else111: ; preds = %if_block109 +if_else109: ; preds = %if_block107 %190 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %191 = load i1, i1* %withEqual.addr call void @parseIdOrOper(%String* %id, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %190, i1 %191) %192 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @lastLoc(%Location* %"$tmpC121", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %192) - call void @span(%Location* %"$tmpC120", %Location* %loc, %Location* %"$tmpC121") + call void @lastLoc(%Location* %"$tmpC119", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %192) + call void @span(%Location* %"$tmpC118", %Location* %loc, %Location* %"$tmpC119") %193 = load %Node, %Node* %res - call void @asStringRef(%StringRef* %"$tmpC122", %String* %id) - %194 = load %StringRef, %StringRef* %"$tmpC122" - %195 = call %Node @comp_parser_mkDotExpr(%Location* %"$tmpC120", %Node %193, %StringRef %194) - store %Node %195, %Node* %"$tmpForRef119" - call void @"=.435"(%Node* %res, %Node* %"$tmpForRef119") - call void @dtor.229(%String* %id) - br label %if_end112 + %194 = call %StringRef @asStringRef(%String* %id) + %195 = call %Node @comp_parser_mkDotExpr(%Location* %"$tmpC118", %Node %193, %StringRef %194) + store %Node %195, %Node* %"$tmpForRef117" + call void @"=.430"(%Node* %res, %Node* %"$tmpForRef117") + call void @dtor.218(%String* %id) + br label %if_end110 -if_end112: ; preds = %if_else111, %if_then110 - br label %if_end107 +if_end110: ; preds = %if_else109, %if_then108 + br label %if_end105 -dumy_block123: ; No predecessors! - br label %if_end107 +dumy_block120: ; No predecessors! + br label %if_end105 } ; Function Attrs: inlinehint nounwind @@ -21666,14 +21518,14 @@ define internal i1 @nextIs(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_ code: ; preds = %0 %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 0 - call void @"pre_*.425"(%Token* %"$tmpC", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %2) + call void @"pre_*.419"(%Token* %"$tmpC", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %2) %3 = getelementptr inbounds %Token, %Token* %"$tmpC", i32 0, i32 1 - %4 = call i1 @"==.279"(%TokenType* %3, %TokenType* %t.addr) - call void @dtor.228(%Token* %"$tmpC") + %4 = call i1 @"==.273"(%TokenType* %3, %TokenType* %t.addr) + call void @dtor.217(%Token* %"$tmpC") ret i1 %4 dumy_block: ; No predecessors! - call void @dtor.228(%Token* %"$tmpC") + call void @dtor.217(%Token* %"$tmpC") unreachable } @@ -21684,37 +21536,37 @@ define internal i1 @next2Is(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[ %t.addr = alloca %TokenType store %TokenType %t, %TokenType* %t.addr %"$tmpC" = alloca %Token - %tmp.v = alloca i32 + %tmp.this = alloca i32 br label %code code: ; preds = %0 %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 0 - store i32 1, i32* %tmp.v - %3 = load i32, i32* %tmp.v - call void @peek.437(%Token* %"$tmpC", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %2, i32 %3) + store i32 1, i32* %tmp.this + %3 = load i32, i32* %tmp.this + call void @peek.434(%Token* %"$tmpC", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %2, i32 %3) %4 = getelementptr inbounds %Token, %Token* %"$tmpC", i32 0, i32 1 - %5 = call i1 @"==.279"(%TokenType* %4, %TokenType* %t.addr) - call void @dtor.228(%Token* %"$tmpC") + %5 = call i1 @"==.273"(%TokenType* %4, %TokenType* %t.addr) + call void @dtor.217(%Token* %"$tmpC") ret i1 %5 dumy_block: ; No predecessors! - call void @dtor.228(%Token* %"$tmpC") + call void @dtor.217(%Token* %"$tmpC") unreachable } ; Function Attrs: inlinehint nounwind -define internal void @peek.437(%Token* sret %_result, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this, i32 %n) #4 { +define internal void @peek.434(%Token* sret %_result, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this, i32 %n) #4 { %_result.addr = alloca %Token* store %Token* %_result, %Token** %_result.addr %this.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr %n.addr = alloca i32 store i32 %n, i32* %n.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 %"$tmpC" = alloca %Token - %tmp.v1 = alloca i64 - %tmp.v2 = alloca i64 + %tmp.this1 = alloca i64 + %tmp.this2 = alloca i64 br label %code code: ; preds = %0 @@ -21723,11 +21575,11 @@ code: ; preds = %0 while_block: ; preds = %while_step, %code %1 = load i32, i32* %n.addr %2 = zext i32 %1 to i64 - store i64 %2, i64* %tmp.v - %3 = load i64, i64* %tmp.v + store i64 %2, i64* %tmp.this + %3 = load i64, i64* %tmp.this %4 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr %5 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %4, i32 0, i32 1 - %6 = call i64 @size.199(%"Vector[Token]"* %5) + %6 = call i64 @size.191(%"Vector[Token]"* %5) %7 = icmp sge i64 %3, %6 br i1 %7, label %cond.true, label %cond.false @@ -21736,9 +21588,9 @@ while_body: ; preds = %cond.end %9 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %8, i32 0, i32 1 %10 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr %11 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %10, i32 0, i32 0 - call void @"post_++.423"(%Token* %"$tmpC", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %11) - call void @"+=.311"(%"Vector[Token]"* %9, %Token* %"$tmpC") - call void @dtor.228(%Token* %"$tmpC") + call void @"post_++.417"(%Token* %"$tmpC", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %11) + call void @"+=.305"(%"Vector[Token]"* %9, %Token* %"$tmpC") + call void @dtor.217(%Token* %"$tmpC") br label %while_step while_step: ; preds = %while_body @@ -21750,7 +21602,7 @@ while_end: ; preds = %cond.end cond.true: ; preds = %while_block %12 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr %13 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %12, i32 0, i32 0 - %14 = call i1 @"pre_!!.421"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %13) + %14 = call i1 @"pre_!!.415"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %13) br label %cond.end cond.false: ; preds = %while_block @@ -21763,11 +21615,11 @@ cond.end: ; preds = %cond.false, %cond.t if_block: ; preds = %while_end %15 = load i32, i32* %n.addr %16 = zext i32 %15 to i64 - store i64 %16, i64* %tmp.v1 - %17 = load i64, i64* %tmp.v1 + store i64 %16, i64* %tmp.this1 + %17 = load i64, i64* %tmp.this1 %18 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr %19 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %18, i32 0, i32 1 - %20 = call i64 @size.199(%"Vector[Token]"* %19) + %20 = call i64 @size.191(%"Vector[Token]"* %19) %21 = icmp slt i64 %17, %20 br i1 %21, label %if_then, label %if_else @@ -21777,15 +21629,15 @@ if_then: ; preds = %if_block %24 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %23, i32 0, i32 1 %25 = load i32, i32* %n.addr %26 = zext i32 %25 to i64 - store i64 %26, i64* %tmp.v2 - %27 = load i64, i64* %tmp.v2 - %28 = call %Token* @"().438"(%"Vector[Token]"* %24, i64 %27) - call void @ctor.190(%Token* %22, %Token* %28) + store i64 %26, i64* %tmp.this2 + %27 = load i64, i64* %tmp.this2 + %28 = call %Token* @"().435"(%"Vector[Token]"* %24, i64 %27) + call void @ctor.182(%Token* %22, %Token* %28) ret void if_else: ; preds = %if_block %29 = load %Token*, %Token** %_result.addr - call void @ctor.162(%Token* %29) + call void @ctor.156(%Token* %29) ret void if_end: ; preds = %dumy_block3, %dumy_block @@ -21799,7 +21651,7 @@ dumy_block3: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal %Token* @"().438"(%"Vector[Token]"* %this, i64 %index) #4 { +define internal %Token* @"().435"(%"Vector[Token]"* %this, i64 %index) #4 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr %index.addr = alloca i64 @@ -21812,9 +21664,9 @@ code: ; preds = %0 %2 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %1, i32 0, i32 0 %3 = load %"RawPtr[Token]", %"RawPtr[Token]"* %2 %4 = load i64, i64* %index.addr - call void @advance.205(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %3, i64 %4) + call void @advance.197(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %3, i64 %4) %5 = load %"RawPtr[Token]", %"RawPtr[Token]"* %"$tmpC" - %6 = call %Token* @value.209(%"RawPtr[Token]" %5) + %6 = call %Token* @value.201(%"RawPtr[Token]" %5) ret %Token* %6 } @@ -21825,17 +21677,17 @@ define internal void @parseLambdaExpr(%Node* sret %_result, %"SparrowParser[Spar %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %loc = alloca %Location - %tmp.v = alloca %TokenType - %tmp.v1 = alloca %TokenType + %tmp.this = alloca %TokenType + %tmp.this1 = alloca %TokenType %closureParams = alloca %Node %formals = alloca %Node %retType = alloca %Node %body = alloca %Node %bodyExp = alloca %Node - %tmp.v2 = alloca %TokenType + %tmp.this2 = alloca %TokenType %"$tmpC" = alloca %Node %"$tmpC3" = alloca %Node - %tmp.v4 = alloca %TokenType + %tmp.this4 = alloca %TokenType %"$tmpForRef" = alloca %Node %"$tmpC5" = alloca %Location %"$tmpC6" = alloca %Location @@ -21845,12 +21697,12 @@ code: ; preds = %0 %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @curLoc(%Location* %loc, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1) %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 28) - %3 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 28) + %3 = load %TokenType, %TokenType* %tmp.this %4 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, %TokenType %3) %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v1, i32 6) - %6 = load %TokenType, %TokenType* %tmp.v1 + call void @ctor.313(%TokenType* %tmp.this1, i32 6) + %6 = load %TokenType, %TokenType* %tmp.this1 %7 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, %TokenType %6) %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseClosureParams(%Node* %closureParams, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8) @@ -21858,33 +21710,33 @@ code: ; preds = %0 call void @parseFormalsOpt(%Node* %formals, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9, i1 false) %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseTypeNode(%Node* %retType, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %10) - call void @ctor.436(%Node* %body) - call void @ctor.436(%Node* %bodyExp) + call void @ctor.432(%Node* %body) + call void @ctor.432(%Node* %bodyExp) br label %if_block if_block: ; preds = %code %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v2, i32 35) - %12 = load %TokenType, %TokenType* %tmp.v2 + call void @ctor.313(%TokenType* %tmp.this2, i32 35) + %12 = load %TokenType, %TokenType* %tmp.this2 %13 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11, %TokenType %12) br i1 %13, label %if_then, label %if_else if_then: ; preds = %if_block %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseExpr(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %14, i1 true) - call void @"=.435"(%Node* %bodyExp, %Node* %"$tmpC") + call void @"=.430"(%Node* %bodyExp, %Node* %"$tmpC") br label %if_end if_else: ; preds = %if_block %15 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseFunBody(%Node* %"$tmpC3", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %15) - call void @"=.435"(%Node* %body, %Node* %"$tmpC3") + call void @"=.430"(%Node* %body, %Node* %"$tmpC3") br label %if_end if_end: ; preds = %if_else, %if_then %16 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v4, i32 29) - %17 = load %TokenType, %TokenType* %tmp.v4 + call void @ctor.313(%TokenType* %tmp.this4, i32 29) + %17 = load %TokenType, %TokenType* %tmp.this4 %18 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %16, %TokenType %17) %19 = load %Node*, %Node** %_result.addr %20 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr @@ -21897,7 +21749,7 @@ if_end: ; preds = %if_else, %if_then %25 = load %Node, %Node* %bodyExp %26 = call %Node @comp_parser_mkLambdaExpr(%Location* %"$tmpC5", %Node %21, %Node %22, %Node %23, %Node %24, %Node %25) store %Node %26, %Node* %"$tmpForRef" - call void @ctor.434(%Node* %19, %Node* %"$tmpForRef") + call void @ctor.428(%Node* %19, %Node* %"$tmpForRef") ret void } @@ -21908,53 +21760,53 @@ define internal void @parseClosureParams(%Node* sret %_result, %"SparrowParser[S %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %res = alloca %Node - %tmp.v = alloca %TokenType - %tmp.v1 = alloca %TokenType - %tmp.v5 = alloca %TokenType + %tmp.this = alloca %TokenType + %tmp.this1 = alloca %TokenType + %tmp.this5 = alloca %TokenType %"$tmpC" = alloca %Node - %tmp.v6 = alloca %TokenType + %tmp.this6 = alloca %TokenType br label %code code: ; preds = %0 - call void @ctor.436(%Node* %res) + call void @ctor.432(%Node* %res) br label %if_block if_block: ; preds = %code %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 33) - %2 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 33) + %2 = load %TokenType, %TokenType* %tmp.this %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_end if_then: ; preds = %if_block %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v1, i32 24) - %5 = load %TokenType, %TokenType* %tmp.v1 + call void @ctor.313(%TokenType* %tmp.this1, i32 24) + %5 = load %TokenType, %TokenType* %tmp.this1 %6 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %4, %TokenType %5) br label %if_block2 if_end: ; preds = %if_end4, %if_block %7 = load %Node*, %Node** %_result.addr - call void @ctor.434(%Node* %7, %Node* %res) + call void @ctor.428(%Node* %7, %Node* %res) ret void if_block2: ; preds = %if_then %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v5, i32 36) - %9 = load %TokenType, %TokenType* %tmp.v5 + call void @ctor.313(%TokenType* %tmp.this5, i32 36) + %9 = load %TokenType, %TokenType* %tmp.this5 %10 = call i1 @nextIs(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8, %TokenType %9) br i1 %10, label %if_then3, label %if_end4 if_then3: ; preds = %if_block2 %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseIdListNode(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11) - call void @"=.435"(%Node* %res, %Node* %"$tmpC") + call void @"=.430"(%Node* %res, %Node* %"$tmpC") br label %if_end4 if_end4: ; preds = %if_then3, %if_block2 %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v6, i32 25) - %13 = load %TokenType, %TokenType* %tmp.v6 + call void @ctor.313(%TokenType* %tmp.this6, i32 25) + %13 = load %TokenType, %TokenType* %tmp.this6 %14 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %12, %TokenType %13) br label %if_end } @@ -21968,51 +21820,47 @@ define internal void @parseIdListNode(%Node* sret %_result, %"SparrowParser[Spar %res = alloca %Node %id = alloca %String %"$tmpForRef" = alloca %Node - %"$tmpC" = alloca %StringRef - %tmp.v = alloca %TokenType - %"$tmpC1" = alloca %String - %"$tmpForRef2" = alloca %Node - %"$tmpC3" = alloca %StringRef + %tmp.this = alloca %TokenType + %"$tmpC" = alloca %String + %"$tmpForRef1" = alloca %Node br label %code code: ; preds = %0 - call void @ctor.436(%Node* %res) + call void @ctor.432(%Node* %res) %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseId(%String* %id, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1) %2 = load %Node, %Node* %res %3 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %4 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %3, i32 0, i32 1 %5 = getelementptr inbounds %Token, %Token* %4, i32 0, i32 0 - call void @asStringRef(%StringRef* %"$tmpC", %String* %id) - %6 = load %StringRef, %StringRef* %"$tmpC" + %6 = call %StringRef @asStringRef(%String* %id) %7 = call %Node @comp_parser_mkIdentifier(%Location* %5, %StringRef %6) %8 = call %Node @comp_parser_addToNodeList(%Node %2, %Node %7) store %Node %8, %Node* %"$tmpForRef" - call void @"=.435"(%Node* %res, %Node* %"$tmpForRef") + call void @"=.430"(%Node* %res, %Node* %"$tmpForRef") br label %while_block while_block: ; preds = %while_step, %code %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 32) - %10 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 32) + %10 = load %TokenType, %TokenType* %tmp.this %11 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9, %TokenType %10) br i1 %11, label %while_body, label %while_end while_body: ; preds = %while_block %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseId(%String* %"$tmpC1", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %12) - %13 = call %String* @"=.256"(%String* %id, %String* %"$tmpC1") - call void @dtor.229(%String* %"$tmpC1") + call void @parseId(%String* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %12) + %13 = call %String* @"=.250"(%String* %id, %String* %"$tmpC") + call void @dtor.218(%String* %"$tmpC") %14 = load %Node, %Node* %res %15 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %16 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %15, i32 0, i32 1 %17 = getelementptr inbounds %Token, %Token* %16, i32 0, i32 0 - call void @asStringRef(%StringRef* %"$tmpC3", %String* %id) - %18 = load %StringRef, %StringRef* %"$tmpC3" + %18 = call %StringRef @asStringRef(%String* %id) %19 = call %Node @comp_parser_mkIdentifier(%Location* %17, %StringRef %18) %20 = call %Node @comp_parser_addToNodeList(%Node %14, %Node %19) - store %Node %20, %Node* %"$tmpForRef2" - call void @"=.435"(%Node* %res, %Node* %"$tmpForRef2") + store %Node %20, %Node* %"$tmpForRef1" + call void @"=.430"(%Node* %res, %Node* %"$tmpForRef1") br label %while_step while_step: ; preds = %while_body @@ -22020,12 +21868,12 @@ while_step: ; preds = %while_body while_end: ; preds = %while_block %21 = load %Node*, %Node** %_result.addr - call void @ctor.434(%Node* %21, %Node* %res) - call void @dtor.229(%String* %id) + call void @ctor.428(%Node* %21, %Node* %res) + call void @dtor.218(%String* %id) ret void dumy_block: ; No predecessors! - call void @dtor.229(%String* %id) + call void @dtor.218(%String* %id) ret void } @@ -22040,27 +21888,27 @@ define internal void @parseFormalsOpt(%Node* sret %_result, %"SparrowParser[Spar %varFormals.addr = alloca i1 store i1 %varFormals, i1* %varFormals.addr %res = alloca %Node - %tmp.v = alloca %TokenType - %tmp.v4 = alloca %TokenType - %tmp.v5 = alloca %TokenType - %tmp.v6 = alloca %TokenType - %tmp.v10 = alloca %TokenType + %tmp.this = alloca %TokenType + %tmp.this4 = alloca %TokenType + %tmp.this5 = alloca %TokenType + %tmp.this6 = alloca %TokenType + %tmp.this10 = alloca %TokenType %loc = alloca %Location %ids = alloca %"Vector[LocString]" %"$tmpC" = alloca %Location %"$tmpC11" = alloca %Location %tmp.StringRef = alloca %StringRef - %tmp.v12 = alloca %Node + %tmp.this12 = alloca %Node br label %code code: ; preds = %0 - call void @ctor.436(%Node* %res) + call void @ctor.432(%Node* %res) br label %if_block if_block: ; preds = %code %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 28) - %2 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 28) + %2 = load %TokenType, %TokenType* %tmp.this %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_else @@ -22072,19 +21920,19 @@ if_else: ; preds = %if_block if_end: ; preds = %if_end9, %while_end %4 = load %Node*, %Node** %_result.addr - call void @ctor.434(%Node* %4, %Node* %res) + call void @ctor.428(%Node* %4, %Node* %res) ret void if_block1: ; preds = %if_then %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v4, i32 29) - %6 = load %TokenType, %TokenType* %tmp.v4 + call void @ctor.313(%TokenType* %tmp.this4, i32 29) + %6 = load %TokenType, %TokenType* %tmp.this4 %7 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, %TokenType %6) br i1 %7, label %if_then2, label %if_end3 if_then2: ; preds = %if_block1 %8 = load %Node*, %Node** %_result.addr - call void @ctor.434(%Node* %8, %Node* %res) + call void @ctor.428(%Node* %8, %Node* %res) ret void if_end3: ; preds = %dumy_block, %if_block1 @@ -22098,8 +21946,8 @@ dumy_block: ; No predecessors! while_block: ; preds = %while_step, %if_end3 %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v5, i32 32) - %12 = load %TokenType, %TokenType* %tmp.v5 + call void @ctor.313(%TokenType* %tmp.this5, i32 32) + %12 = load %TokenType, %TokenType* %tmp.this5 %13 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11, %TokenType %12) br i1 %13, label %while_body, label %while_end @@ -22114,15 +21962,15 @@ while_step: ; preds = %while_body while_end: ; preds = %while_block %16 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v6, i32 29) - %17 = load %TokenType, %TokenType* %tmp.v6 + call void @ctor.313(%TokenType* %tmp.this6, i32 29) + %17 = load %TokenType, %TokenType* %tmp.this6 %18 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %16, %TokenType %17) br label %if_end if_block7: ; preds = %if_else %19 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v10, i32 36) - %20 = load %TokenType, %TokenType* %tmp.v10 + call void @ctor.313(%TokenType* %tmp.this10, i32 36) + %20 = load %TokenType, %TokenType* %tmp.this10 %21 = call i1 @nextIs(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %19, %TokenType %20) br i1 %21, label %if_then8, label %if_end9 @@ -22140,11 +21988,11 @@ if_then8: ; preds = %if_block7 store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.92, i32 0, i32 7), i8** %26 %27 = load %StringRef, %StringRef* %tmp.StringRef %28 = call %Node @comp_parser_mkIdentifier(%Location* %"$tmpC", %StringRef %27) - call void @ctor.436(%Node* %tmp.v12) - %29 = load %Node, %Node* %tmp.v12 + call void @ctor.432(%Node* %tmp.this12) + %29 = load %Node, %Node* %tmp.this12 %30 = load i1, i1* %varFormals.addr call void @createFormals(%"Vector[LocString]"* %ids, %Node %28, %Node %29, i1 %30, %Node* %res) - call void @dtor.465(%"Vector[LocString]"* %ids) + call void @dtor.462(%"Vector[LocString]"* %ids) br label %if_end9 if_end9: ; preds = %if_then8, %if_block7 @@ -22160,10 +22008,10 @@ define internal void @parseFormal(%"SparrowParser[SparrowLayoutDecoder[SparrowSc %res.addr = alloca %Node* store %Node* %res, %Node** %res.addr %ids = alloca %"Vector[LocString]" - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %typeNode = alloca %Node %init = alloca %Node - %tmp.v1 = alloca %TokenType + %tmp.this1 = alloca %TokenType %"$tmpC" = alloca %Node br label %code @@ -22171,25 +22019,25 @@ code: ; preds = %0 %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseIdList(%"Vector[LocString]"* %ids, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1) %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 30) - %3 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 30) + %3 = load %TokenType, %TokenType* %tmp.this %4 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, %TokenType %3) %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseExpr(%Node* %typeNode, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i1 false) - call void @ctor.436(%Node* %init) + call void @ctor.432(%Node* %init) br label %if_block if_block: ; preds = %code %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v1, i32 35) - %7 = load %TokenType, %TokenType* %tmp.v1 + call void @ctor.313(%TokenType* %tmp.this1, i32 35) + %7 = load %TokenType, %TokenType* %tmp.this1 %8 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %6, %TokenType %7) br i1 %8, label %if_then, label %if_end if_then: ; preds = %if_block %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseExpr(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9, i1 true) - call void @"=.435"(%Node* %init, %Node* %"$tmpC") + call void @"=.430"(%Node* %init, %Node* %"$tmpC") br label %if_end if_end: ; preds = %if_then, %if_block @@ -22198,7 +22046,7 @@ if_end: ; preds = %if_then, %if_block %12 = load i1, i1* %varFormals.addr %13 = load %Node*, %Node** %res.addr call void @createFormals(%"Vector[LocString]"* %ids, %Node %10, %Node %11, i1 %12, %Node* %13) - call void @dtor.465(%"Vector[LocString]"* %ids) + call void @dtor.462(%"Vector[LocString]"* %ids) ret void } @@ -22210,16 +22058,16 @@ define internal void @parseIdList(%"Vector[LocString]"* sret %_result, %"Sparrow store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %res = alloca %"Vector[LocString]" %id = alloca %String - %tmp.v = alloca %LocString + %tmp.this = alloca %LocString %"$tmpC" = alloca %"Tuple[Location, String]" - %tmp.v1 = alloca %TokenType + %tmp.this1 = alloca %TokenType %"$tmpC2" = alloca %String - %tmp.v3 = alloca %LocString + %tmp.this3 = alloca %LocString %"$tmpC4" = alloca %"Tuple[Location, String]" br label %code code: ; preds = %0 - call void @ctor.439(%"Vector[LocString]"* %res) + call void @ctor.436(%"Vector[LocString]"* %res) %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseId(%String* %id, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1) %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr @@ -22229,24 +22077,24 @@ code: ; preds = %0 %6 = load %String, %String* %id call void @"~"(%"Tuple[Location, String]"* %"$tmpC", %Location %5, %String %6) %7 = load %"Tuple[Location, String]", %"Tuple[Location, String]"* %"$tmpC" - call void @ctor.457(%LocString* %tmp.v, %"Tuple[Location, String]" %7) - call void @"+=.441"(%"Vector[LocString]"* %res, %LocString* %tmp.v) - call void @dtor.459(%LocString* %tmp.v) - call void @dtor.460(%"Tuple[Location, String]"* %"$tmpC") + call void @ctor.454(%LocString* %tmp.this, %"Tuple[Location, String]" %7) + call void @"+=.438"(%"Vector[LocString]"* %res, %LocString* %tmp.this) + call void @dtor.456(%LocString* %tmp.this) + call void @dtor.457(%"Tuple[Location, String]"* %"$tmpC") br label %while_block while_block: ; preds = %while_step, %code %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v1, i32 32) - %9 = load %TokenType, %TokenType* %tmp.v1 + call void @ctor.313(%TokenType* %tmp.this1, i32 32) + %9 = load %TokenType, %TokenType* %tmp.this1 %10 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8, %TokenType %9) br i1 %10, label %while_body, label %while_end while_body: ; preds = %while_block %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseId(%String* %"$tmpC2", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11) - %12 = call %String* @"=.256"(%String* %id, %String* %"$tmpC2") - call void @dtor.229(%String* %"$tmpC2") + %12 = call %String* @"=.250"(%String* %id, %String* %"$tmpC2") + call void @dtor.218(%String* %"$tmpC2") %13 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %14 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %13, i32 0, i32 1 %15 = getelementptr inbounds %Token, %Token* %14, i32 0, i32 0 @@ -22254,10 +22102,10 @@ while_body: ; preds = %while_block %17 = load %String, %String* %id call void @"~"(%"Tuple[Location, String]"* %"$tmpC4", %Location %16, %String %17) %18 = load %"Tuple[Location, String]", %"Tuple[Location, String]"* %"$tmpC4" - call void @ctor.457(%LocString* %tmp.v3, %"Tuple[Location, String]" %18) - call void @"+=.441"(%"Vector[LocString]"* %res, %LocString* %tmp.v3) - call void @dtor.459(%LocString* %tmp.v3) - call void @dtor.460(%"Tuple[Location, String]"* %"$tmpC4") + call void @ctor.454(%LocString* %tmp.this3, %"Tuple[Location, String]" %18) + call void @"+=.438"(%"Vector[LocString]"* %res, %LocString* %tmp.this3) + call void @dtor.456(%LocString* %tmp.this3) + call void @dtor.457(%"Tuple[Location, String]"* %"$tmpC4") br label %while_step while_step: ; preds = %while_body @@ -22265,19 +22113,19 @@ while_step: ; preds = %while_body while_end: ; preds = %while_block %19 = load %"Vector[LocString]"*, %"Vector[LocString]"** %_result.addr - call void @ctor.461(%"Vector[LocString]"* %19, %"Vector[LocString]"* %res) - call void @dtor.229(%String* %id) - call void @dtor.465(%"Vector[LocString]"* %res) + call void @ctor.458(%"Vector[LocString]"* %19, %"Vector[LocString]"* %res) + call void @dtor.218(%String* %id) + call void @dtor.462(%"Vector[LocString]"* %res) ret void dumy_block: ; No predecessors! - call void @dtor.229(%String* %id) - call void @dtor.465(%"Vector[LocString]"* %res) + call void @dtor.218(%String* %id) + call void @dtor.462(%"Vector[LocString]"* %res) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.439(%"Vector[LocString]"* %this) #3 { +define internal void @ctor.436(%"Vector[LocString]"* %this) #3 { %this.addr = alloca %"Vector[LocString]"* store %"Vector[LocString]"* %this, %"Vector[LocString]"** %this.addr br label %code @@ -22285,18 +22133,18 @@ define internal void @ctor.439(%"Vector[LocString]"* %this) #3 { code: ; preds = %0 %1 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %2 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %1, i32 0, i32 0 - call void @ctor.440(%"RawPtr[LocString]"* %2) + call void @ctor.437(%"RawPtr[LocString]"* %2) %3 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %4 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %3, i32 0, i32 1 - call void @ctor.440(%"RawPtr[LocString]"* %4) + call void @ctor.437(%"RawPtr[LocString]"* %4) %5 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %6 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %5, i32 0, i32 2 - call void @ctor.440(%"RawPtr[LocString]"* %6) + call void @ctor.437(%"RawPtr[LocString]"* %6) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.440(%"RawPtr[LocString]"* %this) #3 { +define internal void @ctor.437(%"RawPtr[LocString]"* %this) #3 { %this.addr = alloca %"RawPtr[LocString]"* store %"RawPtr[LocString]"* %this, %"RawPtr[LocString]"** %this.addr br label %code @@ -22309,7 +22157,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @"+=.441"(%"Vector[LocString]"* %this, %LocString* %value) #4 { +define internal void @"+=.438"(%"Vector[LocString]"* %this, %LocString* %value) #4 { %this.addr = alloca %"Vector[LocString]"* store %"Vector[LocString]"* %this, %"Vector[LocString]"** %this.addr %value.addr = alloca %LocString* @@ -22319,20 +22167,20 @@ define internal void @"+=.441"(%"Vector[LocString]"* %this, %LocString* %value) code: ; preds = %0 %1 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %2 = load %LocString*, %LocString** %value.addr - call void @pushBack.442(%"Vector[LocString]"* %1, %LocString* %2) + call void @pushBack.439(%"Vector[LocString]"* %1, %LocString* %2) ret void } ; Function Attrs: inlinehint nounwind -define internal void @pushBack.442(%"Vector[LocString]"* %this, %LocString* %value) #4 { +define internal void @pushBack.439(%"Vector[LocString]"* %this, %LocString* %value) #4 { %this.addr = alloca %"Vector[LocString]"* store %"Vector[LocString]"* %this, %"Vector[LocString]"** %this.addr %value.addr = alloca %LocString* store %LocString* %value, %LocString** %value.addr %t = alloca i64 - %tmp.v = alloca i64 - %tmp.v4 = alloca i64 - %tmp.v5 = alloca i64 + %tmp.this = alloca i64 + %tmp.this4 = alloca i64 + %tmp.this5 = alloca i64 %"$tmpC" = alloca %"RawPtr[LocString]" br label %code @@ -22344,14 +22192,14 @@ if_block: ; preds = %code %2 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %1, i32 0, i32 1 %3 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %4 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %3, i32 0, i32 2 - %5 = call i1 @"==.443"(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %4) + %5 = call i1 @"==.440"(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %4) br i1 %5, label %if_then, label %if_end if_then: ; preds = %if_block - store i64 2, i64* %tmp.v - %6 = load i64, i64* %tmp.v + store i64 2, i64* %tmp.this + %6 = load i64, i64* %tmp.this %7 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr - %8 = call i64 @capacity.444(%"Vector[LocString]"* %7) + %8 = call i64 @capacity.441(%"Vector[LocString]"* %7) %9 = mul i64 %6, %8 store i64 %9, i64* %t br label %if_block1 @@ -22360,40 +22208,40 @@ if_end: ; preds = %if_end3, %if_block %10 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %11 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %10, i32 0, i32 1 %12 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %11 - %13 = call %LocString* @value.455(%"RawPtr[LocString]" %12) + %13 = call %LocString* @value.452(%"RawPtr[LocString]" %12) %14 = load %LocString*, %LocString** %value.addr - call void @ctor.453(%LocString* %13, %LocString* %14) + call void @ctor.450(%LocString* %13, %LocString* %14) %15 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %16 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %15, i32 0, i32 1 %17 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %18 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %17, i32 0, i32 1 %19 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %18 - call void @advance.456(%"RawPtr[LocString]"* %"$tmpC", %"RawPtr[LocString]" %19) - call void @"=.450"(%"RawPtr[LocString]"* %16, %"RawPtr[LocString]"* %"$tmpC") + call void @advance.453(%"RawPtr[LocString]"* %"$tmpC", %"RawPtr[LocString]" %19) + call void @"=.447"(%"RawPtr[LocString]"* %16, %"RawPtr[LocString]"* %"$tmpC") ret void if_block1: ; preds = %if_then %20 = load i64, i64* %t - store i64 2, i64* %tmp.v4 - %21 = load i64, i64* %tmp.v4 + store i64 2, i64* %tmp.this4 + %21 = load i64, i64* %tmp.this4 %22 = icmp slt i64 %20, %21 br i1 %22, label %if_then2, label %if_end3 if_then2: ; preds = %if_block1 - store i64 2, i64* %tmp.v5 - %23 = load i64, i64* %tmp.v5 + store i64 2, i64* %tmp.this5 + %23 = load i64, i64* %tmp.this5 store i64 %23, i64* %t br label %if_end3 if_end3: ; preds = %if_then2, %if_block1 %24 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %25 = load i64, i64* %t - call void @reserve.447(%"Vector[LocString]"* %24, i64 %25) + call void @reserve.444(%"Vector[LocString]"* %24, i64 %25) br label %if_end } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.443"(%"RawPtr[LocString]"* %this, %"RawPtr[LocString]"* %other) #3 { +define internal i1 @"==.440"(%"RawPtr[LocString]"* %this, %"RawPtr[LocString]"* %other) #3 { %this.addr = alloca %"RawPtr[LocString]"* store %"RawPtr[LocString]"* %this, %"RawPtr[LocString]"** %this.addr %other.addr = alloca %"RawPtr[LocString]"* @@ -22414,10 +22262,10 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i64 @capacity.444(%"Vector[LocString]"* %this) #4 { +define internal i64 @capacity.441(%"Vector[LocString]"* %this) #4 { %this.addr = alloca %"Vector[LocString]"* store %"Vector[LocString]"* %this, %"Vector[LocString]"** %this.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -22427,38 +22275,38 @@ code: ; preds = %0 %4 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %5 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %4, i32 0, i32 0 %6 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %5 - %7 = call i64 @diff.445(%"RawPtr[LocString]" %3, %"RawPtr[LocString]" %6) - store i64 %7, i64* %tmp.v - %8 = load i64, i64* %tmp.v + %7 = call i64 @diff.442(%"RawPtr[LocString]" %3, %"RawPtr[LocString]" %6) + store i64 %7, i64* %tmp.this + %8 = load i64, i64* %tmp.this ret i64 %8 } ; Function Attrs: inlinehint nounwind -define internal i64 @diff.445(%"RawPtr[LocString]" %this, %"RawPtr[LocString]" %other) #4 { +define internal i64 @diff.442(%"RawPtr[LocString]" %this, %"RawPtr[LocString]" %other) #4 { %this.addr = alloca %"RawPtr[LocString]" store %"RawPtr[LocString]" %this, %"RawPtr[LocString]"* %this.addr %other.addr = alloca %"RawPtr[LocString]" store %"RawPtr[LocString]" %other, %"RawPtr[LocString]"* %other.addr - %tmp.v = alloca i64 - %tmp.v1 = alloca i64 + %tmp.this = alloca i64 + %tmp.this1 = alloca i64 br label %code code: ; preds = %0 %1 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %this.addr - %2 = call i8* @bytePtr.446(%"RawPtr[LocString]" %1) + %2 = call i8* @bytePtr.443(%"RawPtr[LocString]" %1) %3 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %other.addr - %4 = call i8* @bytePtr.446(%"RawPtr[LocString]" %3) + %4 = call i8* @bytePtr.443(%"RawPtr[LocString]" %3) %5 = call i64 @ptrDiff(i8* %2, i8* %4) - store i64 48, i64* %tmp.v1 - %6 = load i64, i64* %tmp.v1 + store i64 48, i64* %tmp.this1 + %6 = load i64, i64* %tmp.this1 %7 = sdiv i64 %5, %6 - store i64 %7, i64* %tmp.v - %8 = load i64, i64* %tmp.v + store i64 %7, i64* %tmp.this + %8 = load i64, i64* %tmp.this ret i64 %8 } ; Function Attrs: inlinehint nounwind -define internal i8* @bytePtr.446(%"RawPtr[LocString]" %this) #4 { +define internal i8* @bytePtr.443(%"RawPtr[LocString]" %this) #4 { %this.addr = alloca %"RawPtr[LocString]" store %"RawPtr[LocString]" %this, %"RawPtr[LocString]"* %this.addr br label %code @@ -22471,18 +22319,18 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @reserve.447(%"Vector[LocString]"* %this, i64 %n) #4 { +define internal void @reserve.444(%"Vector[LocString]"* %this, i64 %n) #4 { %this.addr = alloca %"Vector[LocString]"* store %"Vector[LocString]"* %this, %"Vector[LocString]"** %this.addr %n.addr = alloca i64 store i64 %n, i64* %n.addr %curCapacity = alloca i64 - %tmp.v = alloca i64 - %tmp.v4 = alloca i64 - %tmp.v8 = alloca double - %tmp.v9 = alloca double - %tmp.v10 = alloca i64 - %tmp.v11 = alloca double + %tmp.this = alloca i64 + %tmp.this4 = alloca i64 + %tmp.this8 = alloca double + %tmp.this9 = alloca double + %tmp.this10 = alloca i64 + %tmp.this11 = alloca double %curSize = alloca i64 %"$tmpC" = alloca %"RawPtr[LocString]" %"$tmpC12" = alloca %"RawPtr[LocString]" @@ -22490,7 +22338,7 @@ define internal void @reserve.447(%"Vector[LocString]"* %this, i64 %n) #4 { code: ; preds = %0 %1 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr - %2 = call i64 @capacity.444(%"Vector[LocString]"* %1) + %2 = call i64 @capacity.441(%"Vector[LocString]"* %1) store i64 %2, i64* %curCapacity br label %if_block @@ -22511,14 +22359,14 @@ dumy_block: ; No predecessors! if_block1: ; preds = %if_end %6 = load i64, i64* %n.addr - store i64 8, i64* %tmp.v - %7 = load i64, i64* %tmp.v + store i64 8, i64* %tmp.this + %7 = load i64, i64* %tmp.this %8 = icmp slt i64 %6, %7 br i1 %8, label %if_then2, label %if_end3 if_then2: ; preds = %if_block1 - store i64 8, i64* %tmp.v4 - %9 = load i64, i64* %tmp.v4 + store i64 8, i64* %tmp.this4 + %9 = load i64, i64* %tmp.this4 store i64 %9, i64* %n.addr br label %if_end3 @@ -22528,12 +22376,12 @@ if_end3: ; preds = %if_then2, %if_block if_block5: ; preds = %if_end3 %10 = load i64, i64* %n.addr %11 = sitofp i64 %10 to double - store double %11, double* %tmp.v8 - %12 = load double, double* %tmp.v8 + store double %11, double* %tmp.this8 + %12 = load double, double* %tmp.this8 %13 = load i64, i64* %curCapacity %14 = sitofp i64 %13 to double - store double %14, double* %tmp.v9 - %15 = load double, double* %tmp.v9 + store double %14, double* %tmp.this9 + %15 = load double, double* %tmp.this9 %16 = call double @_Double_opMul(double 2.000000e+00, double %15) %17 = call i1 @_Double_opLT(double %12, double %16) br i1 %17, label %if_then6, label %if_end7 @@ -22541,47 +22389,47 @@ if_block5: ; preds = %if_end3 if_then6: ; preds = %if_block5 %18 = load i64, i64* %curCapacity %19 = sitofp i64 %18 to double - store double %19, double* %tmp.v11 - %20 = load double, double* %tmp.v11 + store double %19, double* %tmp.this11 + %20 = load double, double* %tmp.this11 %21 = call double @_Double_opMul(double 2.000000e+00, double %20) %22 = fptoui double %21 to i64 - store i64 %22, i64* %tmp.v10 - %23 = load i64, i64* %tmp.v10 + store i64 %22, i64* %tmp.this10 + %23 = load i64, i64* %tmp.this10 store i64 %23, i64* %n.addr br label %if_end7 if_end7: ; preds = %if_then6, %if_block5 %24 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr - %25 = call i64 @size.448(%"Vector[LocString]"* %24) + %25 = call i64 @size.445(%"Vector[LocString]"* %24) store i64 %25, i64* %curSize %26 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %27 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %26, i32 0, i32 0 %28 = load i64, i64* %n.addr - call void @reallocPtr.449(%"RawPtr[LocString]"* %27, i64 %28) + call void @reallocPtr.446(%"RawPtr[LocString]"* %27, i64 %28) %29 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %30 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %29, i32 0, i32 1 %31 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %32 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %31, i32 0, i32 0 %33 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %32 %34 = load i64, i64* %curSize - call void @advance.451(%"RawPtr[LocString]"* %"$tmpC", %"RawPtr[LocString]" %33, i64 %34) - call void @"=.450"(%"RawPtr[LocString]"* %30, %"RawPtr[LocString]"* %"$tmpC") + call void @advance.448(%"RawPtr[LocString]"* %"$tmpC", %"RawPtr[LocString]" %33, i64 %34) + call void @"=.447"(%"RawPtr[LocString]"* %30, %"RawPtr[LocString]"* %"$tmpC") %35 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %36 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %35, i32 0, i32 2 %37 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %38 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %37, i32 0, i32 0 %39 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %38 %40 = load i64, i64* %n.addr - call void @advance.451(%"RawPtr[LocString]"* %"$tmpC12", %"RawPtr[LocString]" %39, i64 %40) - call void @"=.450"(%"RawPtr[LocString]"* %36, %"RawPtr[LocString]"* %"$tmpC12") + call void @advance.448(%"RawPtr[LocString]"* %"$tmpC12", %"RawPtr[LocString]" %39, i64 %40) + call void @"=.447"(%"RawPtr[LocString]"* %36, %"RawPtr[LocString]"* %"$tmpC12") ret void } ; Function Attrs: inlinehint nounwind -define internal i64 @size.448(%"Vector[LocString]"* %this) #4 { +define internal i64 @size.445(%"Vector[LocString]"* %this) #4 { %this.addr = alloca %"Vector[LocString]"* store %"Vector[LocString]"* %this, %"Vector[LocString]"** %this.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -22591,14 +22439,14 @@ code: ; preds = %0 %4 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %5 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %4, i32 0, i32 0 %6 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %5 - %7 = call i64 @diff.445(%"RawPtr[LocString]" %3, %"RawPtr[LocString]" %6) - store i64 %7, i64* %tmp.v - %8 = load i64, i64* %tmp.v + %7 = call i64 @diff.442(%"RawPtr[LocString]" %3, %"RawPtr[LocString]" %6) + store i64 %7, i64* %tmp.this + %8 = load i64, i64* %tmp.this ret i64 %8 } ; Function Attrs: inlinehint nounwind -define internal void @reallocPtr.449(%"RawPtr[LocString]"* %this, i64 %n) #4 { +define internal void @reallocPtr.446(%"RawPtr[LocString]"* %this, i64 %n) #4 { %this.addr = alloca %"RawPtr[LocString]"* store %"RawPtr[LocString]"* %this, %"RawPtr[LocString]"** %this.addr %n.addr = alloca i64 @@ -22608,7 +22456,7 @@ define internal void @reallocPtr.449(%"RawPtr[LocString]"* %this, i64 %n) #4 { code: ; preds = %0 %1 = load %"RawPtr[LocString]"*, %"RawPtr[LocString]"** %this.addr %2 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %1 - %3 = call i8* @bytePtr.446(%"RawPtr[LocString]" %2) + %3 = call i8* @bytePtr.443(%"RawPtr[LocString]" %2) %4 = load i64, i64* %n.addr %5 = mul i64 %4, 48 %6 = call i8* @realloc(i8* %3, i64 %5) @@ -22620,7 +22468,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.450"(%"RawPtr[LocString]"* %this, %"RawPtr[LocString]"* %other) #3 { +define internal void @"=.447"(%"RawPtr[LocString]"* %this, %"RawPtr[LocString]"* %other) #3 { %this.addr = alloca %"RawPtr[LocString]"* store %"RawPtr[LocString]"* %this, %"RawPtr[LocString]"** %this.addr %other.addr = alloca %"RawPtr[LocString]"* @@ -22638,7 +22486,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @advance.451(%"RawPtr[LocString]"* sret %_result, %"RawPtr[LocString]" %this, i64 %n) #4 { +define internal void @advance.448(%"RawPtr[LocString]"* sret %_result, %"RawPtr[LocString]" %this, i64 %n) #4 { %_result.addr = alloca %"RawPtr[LocString]"* store %"RawPtr[LocString]"* %_result, %"RawPtr[LocString]"** %_result.addr %this.addr = alloca %"RawPtr[LocString]" @@ -22650,16 +22498,16 @@ define internal void @advance.451(%"RawPtr[LocString]"* sret %_result, %"RawPtr[ code: ; preds = %0 %1 = load %"RawPtr[LocString]"*, %"RawPtr[LocString]"** %_result.addr %2 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %this.addr - %3 = call i8* @bytePtr.446(%"RawPtr[LocString]" %2) + %3 = call i8* @bytePtr.443(%"RawPtr[LocString]" %2) %4 = load i64, i64* %n.addr %5 = mul i64 %4, 48 %6 = call i8* @ptrAdd(i8* %3, i64 %5) - call void @ctor.452(%"RawPtr[LocString]"* %1, i8* %6) + call void @ctor.449(%"RawPtr[LocString]"* %1, i8* %6) ret void } ; Function Attrs: inlinehint nounwind -define internal void @ctor.452(%"RawPtr[LocString]"* %this, i8* %byteRef) #4 { +define internal void @ctor.449(%"RawPtr[LocString]"* %this, i8* %byteRef) #4 { %this.addr = alloca %"RawPtr[LocString]"* store %"RawPtr[LocString]"* %this, %"RawPtr[LocString]"** %this.addr %byteRef.addr = alloca i8* @@ -22679,7 +22527,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.453(%LocString* %this, %LocString* %other) #3 { +define internal void @ctor.450(%LocString* %this, %LocString* %other) #3 { %this.addr = alloca %LocString* store %LocString* %this, %LocString** %this.addr %other.addr = alloca %LocString* @@ -22691,12 +22539,12 @@ code: ; preds = %0 %2 = getelementptr inbounds %LocString, %LocString* %1, i32 0, i32 0 %3 = load %LocString*, %LocString** %other.addr %4 = getelementptr inbounds %LocString, %LocString* %3, i32 0, i32 0 - call void @ctor.454(%"Tuple[Location, String]"* %2, %"Tuple[Location, String]"* %4) + call void @ctor.451(%"Tuple[Location, String]"* %2, %"Tuple[Location, String]"* %4) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.454(%"Tuple[Location, String]"* %this, %"Tuple[Location, String]"* %other) #3 { +define internal void @ctor.451(%"Tuple[Location, String]"* %this, %"Tuple[Location, String]"* %other) #3 { %this.addr = alloca %"Tuple[Location, String]"* store %"Tuple[Location, String]"* %this, %"Tuple[Location, String]"** %this.addr %other.addr = alloca %"Tuple[Location, String]"* @@ -22708,17 +22556,17 @@ code: ; preds = %0 %2 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %1, i32 0, i32 0 %3 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %other.addr %4 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %3, i32 0, i32 0 - call void @ctor.177(%Location* %2, %Location* %4) + call void @ctor.171(%Location* %2, %Location* %4) %5 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %this.addr %6 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %5, i32 0, i32 1 %7 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %other.addr %8 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %7, i32 0, i32 1 - call void @ctor.192(%String* %6, %String* %8) + call void @ctor.184(%String* %6, %String* %8) ret void } ; Function Attrs: inlinehint nounwind -define internal %LocString* @value.455(%"RawPtr[LocString]" %this) #4 { +define internal %LocString* @value.452(%"RawPtr[LocString]" %this) #4 { %this.addr = alloca %"RawPtr[LocString]" store %"RawPtr[LocString]" %this, %"RawPtr[LocString]"* %this.addr br label %code @@ -22730,7 +22578,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @advance.456(%"RawPtr[LocString]"* sret %_result, %"RawPtr[LocString]" %this) #4 { +define internal void @advance.453(%"RawPtr[LocString]"* sret %_result, %"RawPtr[LocString]" %this) #4 { %_result.addr = alloca %"RawPtr[LocString]"* store %"RawPtr[LocString]"* %_result, %"RawPtr[LocString]"** %_result.addr %this.addr = alloca %"RawPtr[LocString]" @@ -22740,14 +22588,14 @@ define internal void @advance.456(%"RawPtr[LocString]"* sret %_result, %"RawPtr[ code: ; preds = %0 %1 = load %"RawPtr[LocString]"*, %"RawPtr[LocString]"** %_result.addr %2 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %this.addr - %3 = call i8* @bytePtr.446(%"RawPtr[LocString]" %2) + %3 = call i8* @bytePtr.443(%"RawPtr[LocString]" %2) %4 = call i8* @ptrAdd(i8* %3, i64 48) - call void @ctor.452(%"RawPtr[LocString]"* %1, i8* %4) + call void @ctor.449(%"RawPtr[LocString]"* %1, i8* %4) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.457(%LocString* %this, %"Tuple[Location, String]" %fdata) #3 { +define internal void @ctor.454(%LocString* %this, %"Tuple[Location, String]" %fdata) #3 { %this.addr = alloca %LocString* store %LocString* %this, %LocString** %this.addr %fdata.addr = alloca %"Tuple[Location, String]" @@ -22757,7 +22605,7 @@ define internal void @ctor.457(%LocString* %this, %"Tuple[Location, String]" %fd code: ; preds = %0 %1 = load %LocString*, %LocString** %this.addr %2 = getelementptr inbounds %LocString, %LocString* %1, i32 0, i32 0 - call void @ctor.454(%"Tuple[Location, String]"* %2, %"Tuple[Location, String]"* %fdata.addr) + call void @ctor.451(%"Tuple[Location, String]"* %2, %"Tuple[Location, String]"* %fdata.addr) ret void } @@ -22793,12 +22641,12 @@ code: ; preds = %0 %1 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %_result.addr %2 = load %Location, %Location* %v1.addr %3 = load %String, %String* %v2.addr - call void @ctor.458(%"Tuple[Location, String]"* %1, %Location %2, %String %3) + call void @ctor.455(%"Tuple[Location, String]"* %1, %Location %2, %String %3) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.458(%"Tuple[Location, String]"* %this, %Location %fv1, %String %fv2) #3 { +define internal void @ctor.455(%"Tuple[Location, String]"* %this, %Location %fv1, %String %fv2) #3 { %this.addr = alloca %"Tuple[Location, String]"* store %"Tuple[Location, String]"* %this, %"Tuple[Location, String]"** %this.addr %fv1.addr = alloca %Location @@ -22810,15 +22658,15 @@ define internal void @ctor.458(%"Tuple[Location, String]"* %this, %Location %fv1 code: ; preds = %0 %1 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %this.addr %2 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %1, i32 0, i32 0 - call void @ctor.177(%Location* %2, %Location* %fv1.addr) + call void @ctor.171(%Location* %2, %Location* %fv1.addr) %3 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %this.addr %4 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %3, i32 0, i32 1 - call void @ctor.192(%String* %4, %String* %fv2.addr) + call void @ctor.184(%String* %4, %String* %fv2.addr) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.459(%LocString* %this) #3 { +define internal void @dtor.456(%LocString* %this) #3 { %this.addr = alloca %LocString* store %LocString* %this, %LocString** %this.addr br label %code @@ -22826,12 +22674,12 @@ define internal void @dtor.459(%LocString* %this) #3 { code: ; preds = %0 %1 = load %LocString*, %LocString** %this.addr %2 = getelementptr inbounds %LocString, %LocString* %1, i32 0, i32 0 - call void @dtor.460(%"Tuple[Location, String]"* %2) + call void @dtor.457(%"Tuple[Location, String]"* %2) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.460(%"Tuple[Location, String]"* %this) #3 { +define internal void @dtor.457(%"Tuple[Location, String]"* %this) #3 { %this.addr = alloca %"Tuple[Location, String]"* store %"Tuple[Location, String]"* %this, %"Tuple[Location, String]"** %this.addr br label %code @@ -22839,12 +22687,12 @@ define internal void @dtor.460(%"Tuple[Location, String]"* %this) #3 { code: ; preds = %0 %1 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %this.addr %2 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %1, i32 0, i32 1 - call void @dtor.229(%String* %2) + call void @dtor.218(%String* %2) ret void } ; Function Attrs: inlinehint nounwind -define internal void @ctor.461(%"Vector[LocString]"* %this, %"Vector[LocString]"* %other) #4 { +define internal void @ctor.458(%"Vector[LocString]"* %this, %"Vector[LocString]"* %other) #4 { %this.addr = alloca %"Vector[LocString]"* store %"Vector[LocString]"* %this, %"Vector[LocString]"** %this.addr %other.addr = alloca %"Vector[LocString]"* @@ -22861,61 +22709,61 @@ define internal void @ctor.461(%"Vector[LocString]"* %this, %"Vector[LocString]" code: ; preds = %0 %1 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %2 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %1, i32 0, i32 0 - call void @ctor.440(%"RawPtr[LocString]"* %2) + call void @ctor.437(%"RawPtr[LocString]"* %2) %3 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %4 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %3, i32 0, i32 1 - call void @ctor.440(%"RawPtr[LocString]"* %4) + call void @ctor.437(%"RawPtr[LocString]"* %4) %5 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %6 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %5, i32 0, i32 2 - call void @ctor.440(%"RawPtr[LocString]"* %6) + call void @ctor.437(%"RawPtr[LocString]"* %6) %7 = load %"Vector[LocString]"*, %"Vector[LocString]"** %other.addr - %8 = call i64 @size.448(%"Vector[LocString]"* %7) + %8 = call i64 @size.445(%"Vector[LocString]"* %7) store i64 %8, i64* %size %9 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %10 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %9, i32 0, i32 0 %11 = load i64, i64* %size - call void @allocRawPtr.462(%"RawPtr[LocString]"* %"$tmpC", i64 %11) - call void @"=.450"(%"RawPtr[LocString]"* %10, %"RawPtr[LocString]"* %"$tmpC") + call void @allocRawPtr.459(%"RawPtr[LocString]"* %"$tmpC", i64 %11) + call void @"=.447"(%"RawPtr[LocString]"* %10, %"RawPtr[LocString]"* %"$tmpC") %12 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %13 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %12, i32 0, i32 1 %14 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %15 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %14, i32 0, i32 0 %16 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %15 %17 = load i64, i64* %size - call void @advance.451(%"RawPtr[LocString]"* %"$tmpC1", %"RawPtr[LocString]" %16, i64 %17) - call void @"=.450"(%"RawPtr[LocString]"* %13, %"RawPtr[LocString]"* %"$tmpC1") + call void @advance.448(%"RawPtr[LocString]"* %"$tmpC1", %"RawPtr[LocString]" %16, i64 %17) + call void @"=.447"(%"RawPtr[LocString]"* %13, %"RawPtr[LocString]"* %"$tmpC1") %18 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %19 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %18, i32 0, i32 2 %20 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %21 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %20, i32 0, i32 1 - call void @"=.450"(%"RawPtr[LocString]"* %19, %"RawPtr[LocString]"* %21) + call void @"=.447"(%"RawPtr[LocString]"* %19, %"RawPtr[LocString]"* %21) %22 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %23 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %22, i32 0, i32 0 - call void @ctor.464(%"RawPtr[LocString]"* %dst, %"RawPtr[LocString]"* %23) + call void @ctor.461(%"RawPtr[LocString]"* %dst, %"RawPtr[LocString]"* %23) %24 = load %"Vector[LocString]"*, %"Vector[LocString]"** %other.addr %25 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %24, i32 0, i32 0 - call void @ctor.464(%"RawPtr[LocString]"* %src, %"RawPtr[LocString]"* %25) + call void @ctor.461(%"RawPtr[LocString]"* %src, %"RawPtr[LocString]"* %25) br label %while_block while_block: ; preds = %while_step, %code %26 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %27 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %26, i32 0, i32 1 - %28 = call i1 @"==.443"(%"RawPtr[LocString]"* %dst, %"RawPtr[LocString]"* %27) + %28 = call i1 @"==.440"(%"RawPtr[LocString]"* %dst, %"RawPtr[LocString]"* %27) %29 = xor i1 true, %28 br i1 %29, label %while_body, label %while_end while_body: ; preds = %while_block %30 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %dst - %31 = call %LocString* @value.455(%"RawPtr[LocString]" %30) + %31 = call %LocString* @value.452(%"RawPtr[LocString]" %30) %32 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %src - %33 = call %LocString* @value.455(%"RawPtr[LocString]" %32) - call void @ctor.453(%LocString* %31, %LocString* %33) + %33 = call %LocString* @value.452(%"RawPtr[LocString]" %32) + call void @ctor.450(%LocString* %31, %LocString* %33) %34 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %dst - call void @advance.456(%"RawPtr[LocString]"* %"$tmpC2", %"RawPtr[LocString]" %34) - call void @"=.450"(%"RawPtr[LocString]"* %dst, %"RawPtr[LocString]"* %"$tmpC2") + call void @advance.453(%"RawPtr[LocString]"* %"$tmpC2", %"RawPtr[LocString]" %34) + call void @"=.447"(%"RawPtr[LocString]"* %dst, %"RawPtr[LocString]"* %"$tmpC2") %35 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %src - call void @advance.456(%"RawPtr[LocString]"* %"$tmpC3", %"RawPtr[LocString]" %35) - call void @"=.450"(%"RawPtr[LocString]"* %src, %"RawPtr[LocString]"* %"$tmpC3") + call void @advance.453(%"RawPtr[LocString]"* %"$tmpC3", %"RawPtr[LocString]" %35) + call void @"=.447"(%"RawPtr[LocString]"* %src, %"RawPtr[LocString]"* %"$tmpC3") br label %while_step while_step: ; preds = %while_body @@ -22926,7 +22774,7 @@ while_end: ; preds = %while_block } ; Function Attrs: inlinehint nounwind -define internal void @allocRawPtr.462(%"RawPtr[LocString]"* sret %_result, i64 %num) #4 { +define internal void @allocRawPtr.459(%"RawPtr[LocString]"* sret %_result, i64 %num) #4 { %_result.addr = alloca %"RawPtr[LocString]"* store %"RawPtr[LocString]"* %_result, %"RawPtr[LocString]"** %_result.addr %num.addr = alloca i64 @@ -22939,12 +22787,12 @@ code: ; preds = %0 %3 = mul i64 %2, 48 %4 = call i8* @malloc(i64 %3) %5 = bitcast i8* %4 to %LocString* - call void @ctor.463(%"RawPtr[LocString]"* %1, %LocString* %5) + call void @ctor.460(%"RawPtr[LocString]"* %1, %LocString* %5) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.463(%"RawPtr[LocString]"* %this, %LocString* %f_ptr) #3 { +define internal void @ctor.460(%"RawPtr[LocString]"* %this, %LocString* %f_ptr) #3 { %this.addr = alloca %"RawPtr[LocString]"* store %"RawPtr[LocString]"* %this, %"RawPtr[LocString]"** %this.addr %f_ptr.addr = alloca %LocString* @@ -22960,7 +22808,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.464(%"RawPtr[LocString]"* %this, %"RawPtr[LocString]"* %other) #3 { +define internal void @ctor.461(%"RawPtr[LocString]"* %this, %"RawPtr[LocString]"* %other) #3 { %this.addr = alloca %"RawPtr[LocString]"* store %"RawPtr[LocString]"* %this, %"RawPtr[LocString]"** %this.addr %other.addr = alloca %"RawPtr[LocString]"* @@ -22978,7 +22826,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @dtor.465(%"Vector[LocString]"* %this) #4 { +define internal void @dtor.462(%"Vector[LocString]"* %this) #4 { %this.addr = alloca %"Vector[LocString]"* store %"Vector[LocString]"* %this, %"Vector[LocString]"** %this.addr %p = alloca %"RawPtr[LocString]" @@ -22988,38 +22836,38 @@ define internal void @dtor.465(%"Vector[LocString]"* %this) #4 { code: ; preds = %0 %1 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %2 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %1, i32 0, i32 0 - call void @ctor.464(%"RawPtr[LocString]"* %p, %"RawPtr[LocString]"* %2) + call void @ctor.461(%"RawPtr[LocString]"* %p, %"RawPtr[LocString]"* %2) br label %while_block while_block: ; preds = %while_step, %code %3 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %4 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %3, i32 0, i32 1 - %5 = call i1 @"==.443"(%"RawPtr[LocString]"* %p, %"RawPtr[LocString]"* %4) + %5 = call i1 @"==.440"(%"RawPtr[LocString]"* %p, %"RawPtr[LocString]"* %4) %6 = xor i1 true, %5 br i1 %6, label %while_body, label %while_end while_body: ; preds = %while_block %7 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %p - %8 = call %LocString* @value.455(%"RawPtr[LocString]" %7) - call void @dtor.459(%LocString* %8) + %8 = call %LocString* @value.452(%"RawPtr[LocString]" %7) + call void @dtor.456(%LocString* %8) br label %while_step while_step: ; preds = %while_body %9 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %p - call void @advance.456(%"RawPtr[LocString]"* %"$tmpC", %"RawPtr[LocString]" %9) - call void @"=.450"(%"RawPtr[LocString]"* %p, %"RawPtr[LocString]"* %"$tmpC") + call void @advance.453(%"RawPtr[LocString]"* %"$tmpC", %"RawPtr[LocString]" %9) + call void @"=.447"(%"RawPtr[LocString]"* %p, %"RawPtr[LocString]"* %"$tmpC") br label %while_block while_end: ; preds = %while_block %10 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %11 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %10, i32 0, i32 0 %12 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %11 - call void @freePtr.466(%"RawPtr[LocString]" %12) + call void @freePtr.463(%"RawPtr[LocString]" %12) ret void } ; Function Attrs: inlinehint nounwind -define internal void @freePtr.466(%"RawPtr[LocString]" %this) #4 { +define internal void @freePtr.463(%"RawPtr[LocString]" %this) #4 { %this.addr = alloca %"RawPtr[LocString]" store %"RawPtr[LocString]" %this, %"RawPtr[LocString]"* %this.addr br label %code @@ -23029,12 +22877,12 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %this.addr - %2 = call i1 @isSet.467(%"RawPtr[LocString]" %1) + %2 = call i1 @isSet.464(%"RawPtr[LocString]" %1) br i1 %2, label %if_then, label %if_end if_then: ; preds = %if_block %3 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %this.addr - %4 = call i8* @bytePtr.446(%"RawPtr[LocString]" %3) + %4 = call i8* @bytePtr.443(%"RawPtr[LocString]" %3) call void @free(i8* %4) br label %if_end @@ -23043,7 +22891,7 @@ if_end: ; preds = %if_then, %if_block } ; Function Attrs: inlinehint nounwind -define internal i1 @isSet.467(%"RawPtr[LocString]" %this) #4 { +define internal i1 @isSet.464(%"RawPtr[LocString]" %this) #4 { %this.addr = alloca %"RawPtr[LocString]" store %"RawPtr[LocString]" %this, %"RawPtr[LocString]"* %this.addr br label %code @@ -23072,14 +22920,12 @@ define internal void @createFormals(%"Vector[LocString]"* %ids, %Node %typeNode, %id = alloca %LocString* %v = alloca %Node %"$tmpForRef" = alloca %Node - %"$tmpC" = alloca %StringRef %"$tmpForRef1" = alloca %Node %"$rangeVar2" = alloca %"ContiguousMemoryRange[LocString]" %id7 = alloca %LocString* %p = alloca %Node %"$tmpForRef8" = alloca %Node - %"$tmpC9" = alloca %StringRef - %"$tmpForRef10" = alloca %Node + %"$tmpForRef9" = alloca %Node br label %code code: ; preds = %0 @@ -23091,12 +22937,12 @@ if_block: ; preds = %code if_then: ; preds = %if_block %2 = load %"Vector[LocString]"*, %"Vector[LocString]"** %ids.addr - call void @all.468(%"ContiguousMemoryRange[LocString]"* %"$rangeVar", %"Vector[LocString]"* %2) + call void @all.465(%"ContiguousMemoryRange[LocString]"* %"$rangeVar", %"Vector[LocString]"* %2) br label %while_block if_else: ; preds = %if_block %3 = load %"Vector[LocString]"*, %"Vector[LocString]"** %ids.addr - call void @all.468(%"ContiguousMemoryRange[LocString]"* %"$rangeVar2", %"Vector[LocString]"* %3) + call void @all.465(%"ContiguousMemoryRange[LocString]"* %"$rangeVar2", %"Vector[LocString]"* %3) br label %while_block3 if_end: ; preds = %while_end6, %while_end @@ -23104,13 +22950,13 @@ if_end: ; preds = %while_end6, %while_ while_block: ; preds = %while_step, %if_then %4 = load %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %"$rangeVar" - %5 = call i1 @isEmpty.470(%"ContiguousMemoryRange[LocString]" %4) + %5 = call i1 @isEmpty.467(%"ContiguousMemoryRange[LocString]" %4) %6 = xor i1 true, %5 br i1 %6, label %while_body, label %while_end while_body: ; preds = %while_block %7 = load %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %"$rangeVar" - %8 = call %LocString* @front.471(%"ContiguousMemoryRange[LocString]" %7) + %8 = call %LocString* @front.468(%"ContiguousMemoryRange[LocString]" %7) store %LocString* %8, %LocString** %id %9 = load %LocString*, %LocString** %id %10 = getelementptr inbounds %LocString, %LocString* %9, i32 0, i32 0 @@ -23118,24 +22964,23 @@ while_body: ; preds = %while_block %12 = load %LocString*, %LocString** %id %13 = getelementptr inbounds %LocString, %LocString* %12, i32 0, i32 0 %14 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %13, i32 0, i32 1 - call void @asStringRef(%StringRef* %"$tmpC", %String* %14) - %15 = load %StringRef, %StringRef* %"$tmpC" + %15 = call %StringRef @asStringRef(%String* %14) %16 = load %Node, %Node* %typeNode.addr %17 = load %Node, %Node* %init.addr %18 = call %Node @comp_parser_mkVar(%Location* %11, %StringRef %15, %Node %16, %Node %17) store %Node %18, %Node* %"$tmpForRef" - call void @ctor.434(%Node* %v, %Node* %"$tmpForRef") + call void @ctor.428(%Node* %v, %Node* %"$tmpForRef") %19 = load %Node*, %Node** %res.addr %20 = load %Node*, %Node** %res.addr %21 = load %Node, %Node* %20 %22 = load %Node, %Node* %v %23 = call %Node @comp_parser_addToNodeList(%Node %21, %Node %22) store %Node %23, %Node* %"$tmpForRef1" - call void @"=.435"(%Node* %19, %Node* %"$tmpForRef1") + call void @"=.430"(%Node* %19, %Node* %"$tmpForRef1") br label %while_step while_step: ; preds = %while_body - call void @popFront.472(%"ContiguousMemoryRange[LocString]"* %"$rangeVar") + call void @popFront.469(%"ContiguousMemoryRange[LocString]"* %"$rangeVar") br label %while_block while_end: ; preds = %while_block @@ -23143,13 +22988,13 @@ while_end: ; preds = %while_block while_block3: ; preds = %while_step5, %if_else %24 = load %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %"$rangeVar2" - %25 = call i1 @isEmpty.470(%"ContiguousMemoryRange[LocString]" %24) + %25 = call i1 @isEmpty.467(%"ContiguousMemoryRange[LocString]" %24) %26 = xor i1 true, %25 br i1 %26, label %while_body4, label %while_end6 while_body4: ; preds = %while_block3 %27 = load %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %"$rangeVar2" - %28 = call %LocString* @front.471(%"ContiguousMemoryRange[LocString]" %27) + %28 = call %LocString* @front.468(%"ContiguousMemoryRange[LocString]" %27) store %LocString* %28, %LocString** %id7 %29 = load %LocString*, %LocString** %id7 %30 = getelementptr inbounds %LocString, %LocString* %29, i32 0, i32 0 @@ -23157,24 +23002,23 @@ while_body4: ; preds = %while_block3 %32 = load %LocString*, %LocString** %id7 %33 = getelementptr inbounds %LocString, %LocString* %32, i32 0, i32 0 %34 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %33, i32 0, i32 1 - call void @asStringRef(%StringRef* %"$tmpC9", %String* %34) - %35 = load %StringRef, %StringRef* %"$tmpC9" + %35 = call %StringRef @asStringRef(%String* %34) %36 = load %Node, %Node* %typeNode.addr %37 = load %Node, %Node* %init.addr %38 = call %Node @comp_parser_mkParameter(%Location* %31, %StringRef %35, %Node %36, %Node %37) store %Node %38, %Node* %"$tmpForRef8" - call void @ctor.434(%Node* %p, %Node* %"$tmpForRef8") + call void @ctor.428(%Node* %p, %Node* %"$tmpForRef8") %39 = load %Node*, %Node** %res.addr %40 = load %Node*, %Node** %res.addr %41 = load %Node, %Node* %40 %42 = load %Node, %Node* %p %43 = call %Node @comp_parser_addToNodeList(%Node %41, %Node %42) - store %Node %43, %Node* %"$tmpForRef10" - call void @"=.435"(%Node* %39, %Node* %"$tmpForRef10") + store %Node %43, %Node* %"$tmpForRef9" + call void @"=.430"(%Node* %39, %Node* %"$tmpForRef9") br label %while_step5 while_step5: ; preds = %while_body4 - call void @popFront.472(%"ContiguousMemoryRange[LocString]"* %"$rangeVar2") + call void @popFront.469(%"ContiguousMemoryRange[LocString]"* %"$rangeVar2") br label %while_block3 while_end6: ; preds = %while_block3 @@ -23182,7 +23026,7 @@ while_end6: ; preds = %while_block3 } ; Function Attrs: inlinehint nounwind -define internal void @all.468(%"ContiguousMemoryRange[LocString]"* sret %_result, %"Vector[LocString]"* %this) #4 { +define internal void @all.465(%"ContiguousMemoryRange[LocString]"* sret %_result, %"Vector[LocString]"* %this) #4 { %_result.addr = alloca %"ContiguousMemoryRange[LocString]"* store %"ContiguousMemoryRange[LocString]"* %_result, %"ContiguousMemoryRange[LocString]"** %_result.addr %this.addr = alloca %"Vector[LocString]"* @@ -23197,12 +23041,12 @@ code: ; preds = %0 %5 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %6 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %5, i32 0, i32 1 %7 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %6 - call void @ctor.469(%"ContiguousMemoryRange[LocString]"* %1, %"RawPtr[LocString]" %4, %"RawPtr[LocString]" %7) + call void @ctor.466(%"ContiguousMemoryRange[LocString]"* %1, %"RawPtr[LocString]" %4, %"RawPtr[LocString]" %7) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.469(%"ContiguousMemoryRange[LocString]"* %this, %"RawPtr[LocString]" %f_begin, %"RawPtr[LocString]" %f_end) #3 { +define internal void @ctor.466(%"ContiguousMemoryRange[LocString]"* %this, %"RawPtr[LocString]" %f_begin, %"RawPtr[LocString]" %f_end) #3 { %this.addr = alloca %"ContiguousMemoryRange[LocString]"* store %"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"** %this.addr %f_begin.addr = alloca %"RawPtr[LocString]" @@ -23214,18 +23058,18 @@ define internal void @ctor.469(%"ContiguousMemoryRange[LocString]"* %this, %"Raw code: ; preds = %0 %1 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %this.addr %2 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %1, i32 0, i32 0 - call void @ctor.464(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %f_begin.addr) + call void @ctor.461(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %f_begin.addr) %3 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %this.addr %4 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %3, i32 0, i32 1 - call void @ctor.464(%"RawPtr[LocString]"* %4, %"RawPtr[LocString]"* %f_end.addr) + call void @ctor.461(%"RawPtr[LocString]"* %4, %"RawPtr[LocString]"* %f_end.addr) ret void } ; Function Attrs: inlinehint nounwind -define internal i1 @isEmpty.470(%"ContiguousMemoryRange[LocString]" %this) #4 { +define internal i1 @isEmpty.467(%"ContiguousMemoryRange[LocString]" %this) #4 { %this.addr = alloca %"ContiguousMemoryRange[LocString]" store %"ContiguousMemoryRange[LocString]" %this, %"ContiguousMemoryRange[LocString]"* %this.addr - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -23233,15 +23077,15 @@ code: ; preds = %0 %2 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %1 %3 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %this.addr, i32 0, i32 0 %4 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %3 - %5 = call i64 @diff.445(%"RawPtr[LocString]" %2, %"RawPtr[LocString]" %4) - store i64 0, i64* %tmp.v - %6 = load i64, i64* %tmp.v + %5 = call i64 @diff.442(%"RawPtr[LocString]" %2, %"RawPtr[LocString]" %4) + store i64 0, i64* %tmp.this + %6 = load i64, i64* %tmp.this %7 = icmp sle i64 %5, %6 ret i1 %7 } ; Function Attrs: inlinehint nounwind -define internal %LocString* @front.471(%"ContiguousMemoryRange[LocString]" %this) #4 { +define internal %LocString* @front.468(%"ContiguousMemoryRange[LocString]" %this) #4 { %this.addr = alloca %"ContiguousMemoryRange[LocString]" store %"ContiguousMemoryRange[LocString]" %this, %"ContiguousMemoryRange[LocString]"* %this.addr br label %code @@ -23249,14 +23093,14 @@ define internal %LocString* @front.471(%"ContiguousMemoryRange[LocString]" %this code: ; preds = %0 %1 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %this.addr, i32 0, i32 0 %2 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %1 - %3 = call %LocString* @value.455(%"RawPtr[LocString]" %2) + %3 = call %LocString* @value.452(%"RawPtr[LocString]" %2) ret %LocString* %3 } declare %Node @comp_parser_mkVar(%Location*, %StringRef, %Node, %Node) ; Function Attrs: alwaysinline nounwind -define internal void @popFront.472(%"ContiguousMemoryRange[LocString]"* %this) #3 { +define internal void @popFront.469(%"ContiguousMemoryRange[LocString]"* %this) #3 { %this.addr = alloca %"ContiguousMemoryRange[LocString]"* store %"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"** %this.addr %"$tmpC" = alloca %"RawPtr[LocString]" @@ -23268,8 +23112,8 @@ code: ; preds = %0 %3 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %this.addr %4 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %3, i32 0, i32 0 %5 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %4 - call void @advance.456(%"RawPtr[LocString]"* %"$tmpC", %"RawPtr[LocString]" %5) - call void @"=.450"(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %"$tmpC") + call void @advance.453(%"RawPtr[LocString]"* %"$tmpC", %"RawPtr[LocString]" %5) + call void @"=.447"(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %"$tmpC") ret void } @@ -23281,7 +23125,7 @@ define internal void @parseTypeNode(%Node* sret %_result, %"SparrowParser[Sparro store %Node* %_result, %Node** %_result.addr %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType br label %code code: ; preds = %0 @@ -23289,8 +23133,8 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 30) - %2 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 30) + %2 = load %TokenType, %TokenType* %tmp.this %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_end @@ -23302,7 +23146,7 @@ if_then: ; preds = %if_block if_end: ; preds = %dumy_block, %if_block %6 = load %Node*, %Node** %_result.addr - call void @ctor.436(%Node* %6) + call void @ctor.432(%Node* %6) ret void dumy_block: ; No predecessors! @@ -23315,7 +23159,7 @@ define internal void @parseFunBody(%Node* sret %_result, %"SparrowParser[Sparrow store %Node* %_result, %Node** %_result.addr %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %res = alloca %Node %"$tmpC" = alloca %String %tmp.StringRef = alloca %StringRef @@ -23328,18 +23172,18 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 31) - %2 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 31) + %2 = load %TokenType, %TokenType* %tmp.this %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_end if_then: ; preds = %if_block %4 = load %Node*, %Node** %_result.addr - call void @ctor.436(%Node* %4) + call void @ctor.432(%Node* %4) ret void if_end: ; preds = %dumy_block, %if_block - call void @ctor.436(%Node* %res) + call void @ctor.432(%Node* %res) br label %if_block1 dumy_block: ; No predecessors! @@ -23360,7 +23204,7 @@ if_then2: ; preds = %if_block1 %11 = load %StringRef, %StringRef* %tmp.StringRef %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %13 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %12, i32 0, i32 0 - call void @"pre_*.425"(%Token* %"$tmpC4", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %13) + call void @"pre_*.419"(%Token* %"$tmpC4", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %13) %14 = getelementptr inbounds %Token, %Token* %"$tmpC4", i32 0, i32 1 %15 = load %TokenType, %TokenType* %14 %16 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef5, i32 0, i32 0 @@ -23368,15 +23212,15 @@ if_then2: ; preds = %if_block1 store i8* getelementptr inbounds ([28 x i8], [28 x i8]* @str.94, i32 0, i32 0), i8** %16 store i8* getelementptr inbounds ([28 x i8], [28 x i8]* @str.94, i32 0, i32 27), i8** %17 %18 = load %StringRef, %StringRef* %tmp.StringRef5 - call void @toString.474(%String* %"$tmpC", %StringRef %11, %TokenType %15, %StringRef %18) - call void @reportError.429(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8, %String* %"$tmpC") - call void @dtor.229(%String* %"$tmpC") - call void @dtor.228(%Token* %"$tmpC4") + call void @toString.471(%String* %"$tmpC", %StringRef %11, %TokenType %15, %StringRef %18) + call void @reportError.423(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8, %String* %"$tmpC") + call void @dtor.218(%String* %"$tmpC") + call void @dtor.217(%Token* %"$tmpC4") br label %if_end3 if_end3: ; preds = %if_then2, %if_block1 %19 = load %Node*, %Node** %_result.addr - call void @ctor.434(%Node* %19, %Node* %res) + call void @ctor.428(%Node* %19, %Node* %res) ret void } @@ -23389,12 +23233,12 @@ define internal i1 @parseBlockStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowS %topLevel.addr = alloca i1 store i1 %topLevel, i1* %topLevel.addr %loc = alloca %Location - %tmp.v = alloca %TokenType - %tmp.v1 = alloca %Node - %tmp.v2 = alloca %TokenType + %tmp.this = alloca %TokenType + %tmp.this1 = alloca %Node + %tmp.this2 = alloca %TokenType %s = alloca %Node %"$tmpForRef" = alloca %Node - %tmp.v6 = alloca %TokenType + %tmp.this6 = alloca %TokenType %"$tmpForRef10" = alloca %Node %"$tmpC" = alloca %Location %"$tmpC11" = alloca %Location @@ -23407,15 +23251,15 @@ code: ; preds = %0 if_block: ; preds = %code %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 24) - %3 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 24) + %3 = load %TokenType, %TokenType* %tmp.this %4 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, %TokenType %3) br i1 %4, label %if_then, label %if_end if_then: ; preds = %if_block %5 = load %Node*, %Node** %res.addr - call void @ctor.436(%Node* %tmp.v1) - call void @"=.435"(%Node* %5, %Node* %tmp.v1) + call void @ctor.432(%Node* %tmp.this1) + call void @"=.430"(%Node* %5, %Node* %tmp.this1) br label %while_block if_end: ; preds = %dumy_block12, %if_block @@ -23423,8 +23267,8 @@ if_end: ; preds = %dumy_block12, %if_b while_block: ; preds = %while_step, %if_then %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v2, i32 25) - %7 = load %TokenType, %TokenType* %tmp.v2 + call void @ctor.313(%TokenType* %tmp.this2, i32 25) + %7 = load %TokenType, %TokenType* %tmp.this2 %8 = call i1 @nextIs(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %6, %TokenType %7) %9 = xor i1 true, %8 br i1 %9, label %cond.true, label %cond.false @@ -23440,8 +23284,8 @@ while_step: ; preds = %if_end5 while_end: ; preds = %if_else, %cond.end %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v6, i32 25) - %13 = load %TokenType, %TokenType* %tmp.v6 + call void @ctor.313(%TokenType* %tmp.this6, i32 25) + %13 = load %TokenType, %TokenType* %tmp.this6 %14 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %12, %TokenType %13) br label %if_block7 @@ -23461,7 +23305,7 @@ cond.end: ; preds = %cond.false, %cond.t if_block3: ; preds = %while_body %19 = load %Node, %Node* %s - %20 = call i1 @isSet.473(%Node %19) + %20 = call i1 @isSet.470(%Node %19) br i1 %20, label %if_then4, label %if_else if_then4: ; preds = %if_block3 @@ -23471,7 +23315,7 @@ if_then4: ; preds = %if_block3 %24 = load %Node, %Node* %s %25 = call %Node @comp_parser_addToNodeList(%Node %23, %Node %24) store %Node %25, %Node* %"$tmpForRef" - call void @"=.435"(%Node* %21, %Node* %"$tmpForRef") + call void @"=.430"(%Node* %21, %Node* %"$tmpForRef") br label %if_end5 if_else: ; preds = %if_block3 @@ -23497,7 +23341,7 @@ if_then8: ; preds = %if_block7 %31 = load %Node, %Node* %30 %32 = call %Node @comp_parser_mkBlockStmt(%Location* %"$tmpC", %Node %31) store %Node %32, %Node* %"$tmpForRef10" - call void @"=.435"(%Node* %28, %Node* %"$tmpForRef10") + call void @"=.430"(%Node* %28, %Node* %"$tmpForRef10") br label %if_end9 if_end9: ; preds = %if_then8, %if_block7 @@ -23508,7 +23352,7 @@ dumy_block12: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal i1 @isSet.473(%Node %n) #4 { +define internal i1 @isSet.470(%Node %n) #4 { %n.addr = alloca %Node store %Node %n, %Node* %n.addr br label %code @@ -23524,7 +23368,7 @@ code: ; preds = %0 declare %Node @comp_parser_mkBlockStmt(%Location*, %Node) ; Function Attrs: inlinehint nounwind -define internal void @toString.474(%String* sret %_result, %StringRef %a1, %TokenType %a2, %StringRef %a3) #4 { +define internal void @toString.471(%String* sret %_result, %StringRef %a1, %TokenType %a2, %StringRef %a3) #4 { %_result.addr = alloca %String* store %String* %_result, %String** %_result.addr %a1.addr = alloca %StringRef @@ -23537,18 +23381,18 @@ define internal void @toString.474(%String* sret %_result, %StringRef %a1, %Toke br label %code code: ; preds = %0 - call void @ctor.295(%StringOutputStream* %s) + call void @ctor.289(%StringOutputStream* %s) %1 = call %StringOutputStream* @"<<"(%StringOutputStream* %s, %StringRef* %a1.addr) - %2 = call %StringOutputStream* @"<<.431"(%StringOutputStream* %1, %TokenType* %a2.addr) + %2 = call %StringOutputStream* @"<<.425"(%StringOutputStream* %1, %TokenType* %a2.addr) %3 = call %StringOutputStream* @"<<"(%StringOutputStream* %2, %StringRef* %a3.addr) %4 = load %String*, %String** %_result.addr %5 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %s, i32 0, i32 0 - call void @ctor.192(%String* %4, %String* %5) - call void @dtor.297(%StringOutputStream* %s) + call void @ctor.184(%String* %4, %String* %5) + call void @dtor.291(%StringOutputStream* %s) ret void dumy_block: ; No predecessors! - call void @dtor.297(%StringOutputStream* %s) + call void @dtor.291(%StringOutputStream* %s) ret void } @@ -23599,14 +23443,14 @@ define internal void @parseExprListOpt(%Node* sret %_result, %"SparrowParser[Spa %res = alloca %Node %expr = alloca %Node %"$tmpForRef" = alloca %Node - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %"$tmpC" = alloca %Node %"$tmpForRef1" = alloca %Node br label %code code: ; preds = %0 - call void @ctor.436(%Node* %res) - call void @ctor.436(%Node* %expr) + call void @ctor.432(%Node* %res) + call void @ctor.432(%Node* %expr) br label %if_block if_block: ; preds = %code @@ -23617,7 +23461,7 @@ if_block: ; preds = %code if_then: ; preds = %if_block %4 = load %Node*, %Node** %_result.addr - call void @ctor.434(%Node* %4, %Node* %res) + call void @ctor.428(%Node* %4, %Node* %res) ret void if_end: ; preds = %dumy_block, %if_block @@ -23625,7 +23469,7 @@ if_end: ; preds = %dumy_block, %if_blo %6 = load %Node, %Node* %expr %7 = call %Node @comp_parser_addToNodeList(%Node %5, %Node %6) store %Node %7, %Node* %"$tmpForRef" - call void @"=.435"(%Node* %res, %Node* %"$tmpForRef") + call void @"=.430"(%Node* %res, %Node* %"$tmpForRef") br label %while_block dumy_block: ; No predecessors! @@ -23633,20 +23477,20 @@ dumy_block: ; No predecessors! while_block: ; preds = %while_step, %if_end %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 32) - %9 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 32) + %9 = load %TokenType, %TokenType* %tmp.this %10 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8, %TokenType %9) br i1 %10, label %while_body, label %while_end while_body: ; preds = %while_block %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseExpr(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11, i1 true) - call void @"=.435"(%Node* %expr, %Node* %"$tmpC") + call void @"=.430"(%Node* %expr, %Node* %"$tmpC") %12 = load %Node, %Node* %res %13 = load %Node, %Node* %expr %14 = call %Node @comp_parser_addToNodeList(%Node %12, %Node %13) store %Node %14, %Node* %"$tmpForRef1" - call void @"=.435"(%Node* %res, %Node* %"$tmpForRef1") + call void @"=.430"(%Node* %res, %Node* %"$tmpForRef1") br label %while_step while_step: ; preds = %while_body @@ -23654,7 +23498,7 @@ while_step: ; preds = %while_body while_end: ; preds = %while_block %15 = load %Node*, %Node** %_result.addr - call void @ctor.434(%Node* %15, %Node* %res) + call void @ctor.428(%Node* %15, %Node* %res) ret void } @@ -23681,7 +23525,7 @@ if_then: ; preds = %if_block %3 = load %Node*, %Node** %res.addr %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseExpr(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %4, i1 true) - call void @"=.435"(%Node* %3, %Node* %"$tmpC") + call void @"=.430"(%Node* %3, %Node* %"$tmpC") br label %if_block1 if_end: ; preds = %dumy_block, %if_block @@ -23711,36 +23555,36 @@ define internal i1 @nextIsExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScann store i1 %withEqual, i1* %withEqual.addr %t = alloca %TokenType %"$tmpC" = alloca %Token - %tmp.v = alloca %TokenType - %tmp.v40 = alloca %TokenType - %tmp.v41 = alloca %TokenType - %tmp.v42 = alloca %TokenType - %tmp.v44 = alloca %TokenType - %tmp.v46 = alloca %TokenType - %tmp.v48 = alloca %TokenType - %tmp.v50 = alloca %TokenType - %tmp.v52 = alloca %TokenType - %tmp.v54 = alloca %TokenType - %tmp.v56 = alloca %TokenType - %tmp.v58 = alloca %TokenType - %tmp.v60 = alloca %TokenType - %tmp.v62 = alloca %TokenType - %tmp.v64 = alloca %TokenType - %tmp.v66 = alloca %TokenType + %tmp.this = alloca %TokenType + %tmp.this40 = alloca %TokenType + %tmp.this41 = alloca %TokenType + %tmp.this42 = alloca %TokenType + %tmp.this44 = alloca %TokenType + %tmp.this46 = alloca %TokenType + %tmp.this48 = alloca %TokenType + %tmp.this50 = alloca %TokenType + %tmp.this52 = alloca %TokenType + %tmp.this54 = alloca %TokenType + %tmp.this56 = alloca %TokenType + %tmp.this58 = alloca %TokenType + %tmp.this60 = alloca %TokenType + %tmp.this62 = alloca %TokenType + %tmp.this64 = alloca %TokenType + %tmp.this66 = alloca %TokenType br label %code code: ; preds = %0 %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 0 - call void @"pre_*.425"(%Token* %"$tmpC", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %2) + call void @"pre_*.419"(%Token* %"$tmpC", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %2) %3 = getelementptr inbounds %Token, %Token* %"$tmpC", i32 0, i32 1 - call void @ctor.191(%TokenType* %t, %TokenType* %3) - call void @dtor.228(%Token* %"$tmpC") + call void @ctor.183(%TokenType* %t, %TokenType* %3) + call void @dtor.217(%Token* %"$tmpC") br label %if_block if_block: ; preds = %code - call void @ctor.319(%TokenType* %tmp.v, i32 35) - %4 = call i1 @"==.279"(%TokenType* %t, %TokenType* %tmp.v) + call void @ctor.313(%TokenType* %tmp.this, i32 35) + %4 = call i1 @"==.273"(%TokenType* %t, %TokenType* %tmp.this) br i1 %4, label %if_then, label %if_end if_then: ; preds = %if_block @@ -23748,8 +23592,8 @@ if_then: ; preds = %if_block ret i1 %5 if_end: ; preds = %dumy_block, %if_block - call void @ctor.319(%TokenType* %tmp.v40, i32 36) - %6 = call i1 @"==.279"(%TokenType* %t, %TokenType* %tmp.v40) + call void @ctor.313(%TokenType* %tmp.this40, i32 36) + %6 = call i1 @"==.273"(%TokenType* %t, %TokenType* %tmp.this40) br i1 %6, label %cond.true37, label %cond.false38 dumy_block: ; No predecessors! @@ -23759,8 +23603,8 @@ cond.true: ; preds = %cond.end3 br label %cond.end cond.false: ; preds = %cond.end3 - call void @ctor.319(%TokenType* %tmp.v66, i32 45) - %7 = call i1 @"==.279"(%TokenType* %t, %TokenType* %tmp.v66) + call void @ctor.313(%TokenType* %tmp.this66, i32 45) + %7 = call i1 @"==.273"(%TokenType* %t, %TokenType* %tmp.this66) br label %cond.end cond.end: ; preds = %cond.false, %cond.true @@ -23771,8 +23615,8 @@ cond.true1: ; preds = %cond.end6 br label %cond.end3 cond.false2: ; preds = %cond.end6 - call void @ctor.319(%TokenType* %tmp.v64, i32 44) - %8 = call i1 @"==.279"(%TokenType* %t, %TokenType* %tmp.v64) + call void @ctor.313(%TokenType* %tmp.this64, i32 44) + %8 = call i1 @"==.273"(%TokenType* %t, %TokenType* %tmp.this64) br label %cond.end3 cond.end3: ; preds = %cond.false2, %cond.true1 @@ -23783,8 +23627,8 @@ cond.true4: ; preds = %cond.end9 br label %cond.end6 cond.false5: ; preds = %cond.end9 - call void @ctor.319(%TokenType* %tmp.v62, i32 43) - %9 = call i1 @"==.279"(%TokenType* %t, %TokenType* %tmp.v62) + call void @ctor.313(%TokenType* %tmp.this62, i32 43) + %9 = call i1 @"==.273"(%TokenType* %t, %TokenType* %tmp.this62) br label %cond.end6 cond.end6: ; preds = %cond.false5, %cond.true4 @@ -23795,8 +23639,8 @@ cond.true7: ; preds = %cond.end12 br label %cond.end9 cond.false8: ; preds = %cond.end12 - call void @ctor.319(%TokenType* %tmp.v60, i32 42) - %10 = call i1 @"==.279"(%TokenType* %t, %TokenType* %tmp.v60) + call void @ctor.313(%TokenType* %tmp.this60, i32 42) + %10 = call i1 @"==.273"(%TokenType* %t, %TokenType* %tmp.this60) br label %cond.end9 cond.end9: ; preds = %cond.false8, %cond.true7 @@ -23807,8 +23651,8 @@ cond.true10: ; preds = %cond.end15 br label %cond.end12 cond.false11: ; preds = %cond.end15 - call void @ctor.319(%TokenType* %tmp.v58, i32 41) - %11 = call i1 @"==.279"(%TokenType* %t, %TokenType* %tmp.v58) + call void @ctor.313(%TokenType* %tmp.this58, i32 41) + %11 = call i1 @"==.273"(%TokenType* %t, %TokenType* %tmp.this58) br label %cond.end12 cond.end12: ; preds = %cond.false11, %cond.true10 @@ -23819,8 +23663,8 @@ cond.true13: ; preds = %cond.end18 br label %cond.end15 cond.false14: ; preds = %cond.end18 - call void @ctor.319(%TokenType* %tmp.v56, i32 40) - %12 = call i1 @"==.279"(%TokenType* %t, %TokenType* %tmp.v56) + call void @ctor.313(%TokenType* %tmp.this56, i32 40) + %12 = call i1 @"==.273"(%TokenType* %t, %TokenType* %tmp.this56) br label %cond.end15 cond.end15: ; preds = %cond.false14, %cond.true13 @@ -23831,8 +23675,8 @@ cond.true16: ; preds = %cond.end21 br label %cond.end18 cond.false17: ; preds = %cond.end21 - call void @ctor.319(%TokenType* %tmp.v54, i32 39) - %13 = call i1 @"==.279"(%TokenType* %t, %TokenType* %tmp.v54) + call void @ctor.313(%TokenType* %tmp.this54, i32 39) + %13 = call i1 @"==.273"(%TokenType* %t, %TokenType* %tmp.this54) br label %cond.end18 cond.end18: ; preds = %cond.false17, %cond.true16 @@ -23843,8 +23687,8 @@ cond.true19: ; preds = %cond.end24 br label %cond.end21 cond.false20: ; preds = %cond.end24 - call void @ctor.319(%TokenType* %tmp.v52, i32 38) - %14 = call i1 @"==.279"(%TokenType* %t, %TokenType* %tmp.v52) + call void @ctor.313(%TokenType* %tmp.this52, i32 38) + %14 = call i1 @"==.273"(%TokenType* %t, %TokenType* %tmp.this52) br label %cond.end21 cond.end21: ; preds = %cond.false20, %cond.true19 @@ -23855,8 +23699,8 @@ cond.true22: ; preds = %cond.end27 br label %cond.end24 cond.false23: ; preds = %cond.end27 - call void @ctor.319(%TokenType* %tmp.v50, i32 20) - %15 = call i1 @"==.279"(%TokenType* %t, %TokenType* %tmp.v50) + call void @ctor.313(%TokenType* %tmp.this50, i32 20) + %15 = call i1 @"==.273"(%TokenType* %t, %TokenType* %tmp.this50) br label %cond.end24 cond.end24: ; preds = %cond.false23, %cond.true22 @@ -23867,8 +23711,8 @@ cond.true25: ; preds = %cond.end30 br label %cond.end27 cond.false26: ; preds = %cond.end30 - call void @ctor.319(%TokenType* %tmp.v48, i32 22) - %16 = call i1 @"==.279"(%TokenType* %t, %TokenType* %tmp.v48) + call void @ctor.313(%TokenType* %tmp.this48, i32 22) + %16 = call i1 @"==.273"(%TokenType* %t, %TokenType* %tmp.this48) br label %cond.end27 cond.end27: ; preds = %cond.false26, %cond.true25 @@ -23879,8 +23723,8 @@ cond.true28: ; preds = %cond.end33 br label %cond.end30 cond.false29: ; preds = %cond.end33 - call void @ctor.319(%TokenType* %tmp.v46, i32 21) - %17 = call i1 @"==.279"(%TokenType* %t, %TokenType* %tmp.v46) + call void @ctor.313(%TokenType* %tmp.this46, i32 21) + %17 = call i1 @"==.273"(%TokenType* %t, %TokenType* %tmp.this46) br label %cond.end30 cond.end30: ; preds = %cond.false29, %cond.true28 @@ -23891,8 +23735,8 @@ cond.true31: ; preds = %cond.end36 br label %cond.end33 cond.false32: ; preds = %cond.end36 - call void @ctor.319(%TokenType* %tmp.v44, i32 28) - %18 = call i1 @"==.279"(%TokenType* %t, %TokenType* %tmp.v44) + call void @ctor.313(%TokenType* %tmp.this44, i32 28) + %18 = call i1 @"==.273"(%TokenType* %t, %TokenType* %tmp.this44) br label %cond.end33 cond.end33: ; preds = %cond.false32, %cond.true31 @@ -23903,8 +23747,8 @@ cond.true34: ; preds = %cond.end39 br label %cond.end36 cond.false35: ; preds = %cond.end39 - call void @ctor.319(%TokenType* %tmp.v42, i32 34) - %19 = call i1 @"==.279"(%TokenType* %t, %TokenType* %tmp.v42) + call void @ctor.313(%TokenType* %tmp.this42, i32 34) + %19 = call i1 @"==.273"(%TokenType* %t, %TokenType* %tmp.this42) br label %cond.end36 cond.end36: ; preds = %cond.false35, %cond.true34 @@ -23915,8 +23759,8 @@ cond.true37: ; preds = %if_end br label %cond.end39 cond.false38: ; preds = %if_end - call void @ctor.319(%TokenType* %tmp.v41, i32 37) - %20 = call i1 @"==.279"(%TokenType* %t, %TokenType* %tmp.v41) + call void @ctor.313(%TokenType* %tmp.this41, i32 37) + %20 = call i1 @"==.273"(%TokenType* %t, %TokenType* %tmp.this41) br label %cond.end39 cond.end39: ; preds = %cond.false38, %cond.true37 @@ -24191,9 +24035,9 @@ define internal void @parseIdOrOper(%String* sret %_result, %"SparrowParser[Spar store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %withEqual.addr = alloca i1 store i1 %withEqual, i1* %withEqual.addr - %tmp.v = alloca %TokenType - %tmp.v5 = alloca %TokenType - %tmp.v10 = alloca %TokenType + %tmp.this = alloca %TokenType + %tmp.this5 = alloca %TokenType + %tmp.this10 = alloca %TokenType %"$tmpForRef" = alloca %StringRef %tmp.StringRef = alloca %StringRef %"$tmpC" = alloca %String @@ -24207,8 +24051,8 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 36) - %2 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 36) + %2 = load %TokenType, %TokenType* %tmp.this %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_else @@ -24217,7 +24061,7 @@ if_then: ; preds = %if_block %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 1 %7 = getelementptr inbounds %Token, %Token* %6, i32 0, i32 2 - call void @ctor.192(%String* %4, %String* %7) + call void @ctor.184(%String* %4, %String* %7) ret void if_else: ; preds = %if_block @@ -24232,7 +24076,7 @@ if_end: ; preds = %if_end4, %dumy_bloc %11 = load %StringRef, %StringRef* %tmp.StringRef15 %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %13 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %12, i32 0, i32 0 - call void @"pre_*.425"(%Token* %"$tmpC16", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %13) + call void @"pre_*.419"(%Token* %"$tmpC16", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %13) %14 = getelementptr inbounds %Token, %Token* %"$tmpC16", i32 0, i32 1 %15 = load %TokenType, %TokenType* %14 %16 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef17, i32 0, i32 0 @@ -24240,10 +24084,10 @@ if_end: ; preds = %if_end4, %dumy_bloc store i8* getelementptr inbounds ([35 x i8], [35 x i8]* @str.100, i32 0, i32 0), i8** %16 store i8* getelementptr inbounds ([35 x i8], [35 x i8]* @str.100, i32 0, i32 34), i8** %17 %18 = load %StringRef, %StringRef* %tmp.StringRef17 - call void @toString.474(%String* %"$tmpC", %StringRef %11, %TokenType %15, %StringRef %18) - call void @reportError.429(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8, %String* %"$tmpC") - call void @dtor.229(%String* %"$tmpC") - call void @dtor.228(%Token* %"$tmpC16") + call void @toString.471(%String* %"$tmpC", %StringRef %11, %TokenType %15, %StringRef %18) + call void @reportError.423(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8, %String* %"$tmpC") + call void @dtor.218(%String* %"$tmpC") + call void @dtor.217(%Token* %"$tmpC16") ret void dumy_block: ; No predecessors! @@ -24251,8 +24095,8 @@ dumy_block: ; No predecessors! if_block1: ; preds = %if_else %19 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v5, i32 37) - %20 = load %TokenType, %TokenType* %tmp.v5 + call void @ctor.313(%TokenType* %tmp.this5, i32 37) + %20 = load %TokenType, %TokenType* %tmp.this5 %21 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %19, %TokenType %20) br i1 %21, label %if_then2, label %if_else3 @@ -24261,7 +24105,7 @@ if_then2: ; preds = %if_block1 %23 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %24 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %23, i32 0, i32 1 %25 = getelementptr inbounds %Token, %Token* %24, i32 0, i32 2 - call void @ctor.192(%String* %22, %String* %25) + call void @ctor.184(%String* %22, %String* %25) ret void if_else3: ; preds = %if_block1 @@ -24285,7 +24129,7 @@ if_then8: ; preds = %cond.end store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.98, i32 0, i32 1), i8** %29 %30 = load %StringRef, %StringRef* %tmp.StringRef store %StringRef %30, %StringRef* %"$tmpForRef" - call void @ctor.370(%String* %27, %StringRef* %"$tmpForRef") + call void @ctor.364(%String* %27, %StringRef* %"$tmpForRef") br i1 %26, label %cond_destruct_alt1, label %cond_destruct_alt2 if_end9: ; preds = %dumy_block11, %cond.end @@ -24293,8 +24137,8 @@ if_end9: ; preds = %dumy_block11, %cond cond.true: ; preds = %if_block7 %31 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v10, i32 35) - %32 = load %TokenType, %TokenType* %tmp.v10 + call void @ctor.313(%TokenType* %tmp.this10, i32 35) + %32 = load %TokenType, %TokenType* %tmp.this10 %33 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %31, %TokenType %32) br label %cond.end @@ -24337,9 +24181,9 @@ define internal void @parseIdOrOperOpt(%String* sret %_result, %"SparrowParser[S store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %withEqual.addr = alloca i1 store i1 %withEqual, i1* %withEqual.addr - %tmp.v = alloca %TokenType - %tmp.v5 = alloca %TokenType - %tmp.v11 = alloca %TokenType + %tmp.this = alloca %TokenType + %tmp.this5 = alloca %TokenType + %tmp.this11 = alloca %TokenType %"$tmpForRef" = alloca %StringRef %tmp.StringRef = alloca %StringRef br label %code @@ -24349,8 +24193,8 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 36) - %2 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 36) + %2 = load %TokenType, %TokenType* %tmp.this %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_else @@ -24359,7 +24203,7 @@ if_then: ; preds = %if_block %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 1 %7 = getelementptr inbounds %Token, %Token* %6, i32 0, i32 2 - call void @ctor.192(%String* %4, %String* %7) + call void @ctor.184(%String* %4, %String* %7) ret void if_else: ; preds = %if_block @@ -24373,8 +24217,8 @@ dumy_block: ; No predecessors! if_block1: ; preds = %if_else %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v5, i32 37) - %9 = load %TokenType, %TokenType* %tmp.v5 + call void @ctor.313(%TokenType* %tmp.this5, i32 37) + %9 = load %TokenType, %TokenType* %tmp.this5 %10 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8, %TokenType %9) br i1 %10, label %if_then2, label %if_else3 @@ -24383,7 +24227,7 @@ if_then2: ; preds = %if_block1 %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %13 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %12, i32 0, i32 1 %14 = getelementptr inbounds %Token, %Token* %13, i32 0, i32 2 - call void @ctor.192(%String* %11, %String* %14) + call void @ctor.184(%String* %11, %String* %14) ret void if_else3: ; preds = %if_block1 @@ -24407,12 +24251,12 @@ if_then8: ; preds = %cond.end store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.101, i32 0, i32 1), i8** %18 %19 = load %StringRef, %StringRef* %tmp.StringRef store %StringRef %19, %StringRef* %"$tmpForRef" - call void @ctor.370(%String* %16, %StringRef* %"$tmpForRef") + call void @ctor.364(%String* %16, %StringRef* %"$tmpForRef") br i1 %15, label %cond_destruct_alt1, label %cond_destruct_alt2 if_else9: ; preds = %cond.end %20 = load %String*, %String** %_result.addr - call void @ctor.164(%String* %20) + call void @ctor.158(%String* %20) br i1 %15, label %cond_destruct_alt113, label %cond_destruct_alt214 if_end10: ; preds = %dumy_block16, %dumy_block12 @@ -24420,8 +24264,8 @@ if_end10: ; preds = %dumy_block16, %dumy cond.true: ; preds = %if_block7 %21 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v11, i32 35) - %22 = load %TokenType, %TokenType* %tmp.v11 + call void @ctor.313(%TokenType* %tmp.this11, i32 35) + %22 = load %TokenType, %TokenType* %tmp.this11 %23 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %21, %TokenType %22) br label %cond.end @@ -24476,9 +24320,9 @@ define internal i1 @parseImportLineOpt(%"SparrowParser[SparrowLayoutDecoder[Spar store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %res.addr = alloca %Node* store %Node* %res, %Node** %res.addr - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %"$tmpC" = alloca %Node - %tmp.v1 = alloca %TokenType + %tmp.this1 = alloca %TokenType br label %code code: ; preds = %0 @@ -24486,8 +24330,8 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 3) - %2 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 3) + %2 = load %TokenType, %TokenType* %tmp.this %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_end @@ -24495,10 +24339,10 @@ if_then: ; preds = %if_block %4 = load %Node*, %Node** %res.addr %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseImportNames(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5) - call void @"=.435"(%Node* %4, %Node* %"$tmpC") + call void @"=.430"(%Node* %4, %Node* %"$tmpC") %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v1, i32 31) - %7 = load %TokenType, %TokenType* %tmp.v1 + call void @ctor.313(%TokenType* %tmp.this1, i32 31) + %7 = load %TokenType, %TokenType* %tmp.this1 %8 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %6, %TokenType %7) ret i1 true @@ -24518,26 +24362,26 @@ define internal void @parseImportNames(%Node* sret %_result, %"SparrowParser[Spa %res = alloca %Node %"$tmpForRef" = alloca %Node %"$tmpC" = alloca %Node - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %"$tmpForRef1" = alloca %Node %"$tmpC2" = alloca %Node br label %code code: ; preds = %0 - call void @ctor.436(%Node* %res) + call void @ctor.432(%Node* %res) %1 = load %Node, %Node* %res %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseImportName(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2) %3 = load %Node, %Node* %"$tmpC" %4 = call %Node @comp_parser_addToNodeList(%Node %1, %Node %3) store %Node %4, %Node* %"$tmpForRef" - call void @"=.435"(%Node* %res, %Node* %"$tmpForRef") + call void @"=.430"(%Node* %res, %Node* %"$tmpForRef") br label %while_block while_block: ; preds = %while_step, %code %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 32) - %6 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 32) + %6 = load %TokenType, %TokenType* %tmp.this %7 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, %TokenType %6) br i1 %7, label %while_body, label %while_end @@ -24548,7 +24392,7 @@ while_body: ; preds = %while_block %10 = load %Node, %Node* %"$tmpC2" %11 = call %Node @comp_parser_addToNodeList(%Node %8, %Node %10) store %Node %11, %Node* %"$tmpForRef1" - call void @"=.435"(%Node* %res, %Node* %"$tmpForRef1") + call void @"=.430"(%Node* %res, %Node* %"$tmpForRef1") br label %while_step while_step: ; preds = %while_body @@ -24556,7 +24400,7 @@ while_step: ; preds = %while_body while_end: ; preds = %while_block %12 = load %Node*, %Node** %_result.addr - call void @ctor.434(%Node* %12, %Node* %res) + call void @ctor.428(%Node* %12, %Node* %res) ret void } @@ -24573,7 +24417,6 @@ define internal void @parseImportName(%Node* sret %_result, %"SparrowParser[Spar %"$tmpForRef" = alloca %Node %"$tmpC" = alloca %Location %"$tmpC1" = alloca %Location - %"$tmpC2" = alloca %StringRef br label %code code: ; preds = %0 @@ -24589,18 +24432,17 @@ code: ; preds = %0 %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @lastLoc(%Location* %"$tmpC1", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %6) call void @span(%Location* %"$tmpC", %Location* %loc, %Location* %"$tmpC1") - call void @asStringRef(%StringRef* %"$tmpC2", %String* %id) - %7 = load %StringRef, %StringRef* %"$tmpC2" + %7 = call %StringRef @asStringRef(%String* %id) %8 = load %Node, %Node* %toImport %9 = load %Node, %Node* %declNames %10 = call %Node @comp_parser_mkImportName(%Location* %"$tmpC", %StringRef %7, %Node %8, %Node %9) store %Node %10, %Node* %"$tmpForRef" - call void @ctor.434(%Node* %5, %Node* %"$tmpForRef") - call void @dtor.229(%String* %id) + call void @ctor.428(%Node* %5, %Node* %"$tmpForRef") + call void @dtor.218(%String* %id) ret void dumy_block: ; No predecessors! - call void @dtor.229(%String* %id) + call void @dtor.218(%String* %id) ret void } @@ -24611,35 +24453,35 @@ define internal void @parseIdEqualOpt(%String* sret %_result, %"SparrowParser[Sp %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %id = alloca %String - %tmp.v = alloca %TokenType - %tmp.v1 = alloca %TokenType - %tmp.v2 = alloca %TokenType - %tmp.v3 = alloca %TokenType + %tmp.this = alloca %TokenType + %tmp.this1 = alloca %TokenType + %tmp.this2 = alloca %TokenType + %tmp.this3 = alloca %TokenType br label %code code: ; preds = %0 - call void @ctor.164(%String* %id) + call void @ctor.158(%String* %id) br label %if_block if_block: ; preds = %code %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 36) - %2 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 36) + %2 = load %TokenType, %TokenType* %tmp.this %3 = call i1 @nextIs(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) br i1 %3, label %cond.true, label %cond.false if_then: ; preds = %cond.end %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v2, i32 36) - %5 = load %TokenType, %TokenType* %tmp.v2 + call void @ctor.313(%TokenType* %tmp.this2, i32 36) + %5 = load %TokenType, %TokenType* %tmp.this2 %6 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %4, %TokenType %5) %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %8 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %7, i32 0, i32 1 %9 = getelementptr inbounds %Token, %Token* %8, i32 0, i32 2 - %10 = call %String* @"=.256"(%String* %id, %String* %9) + %10 = call %String* @"=.250"(%String* %id, %String* %9) %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v3, i32 35) - %12 = load %TokenType, %TokenType* %tmp.v3 + call void @ctor.313(%TokenType* %tmp.this3, i32 35) + %12 = load %TokenType, %TokenType* %tmp.this3 %13 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11, %TokenType %12) br label %if_end @@ -24648,8 +24490,8 @@ if_end: ; preds = %if_then, %cond.end cond.true: ; preds = %if_block %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v1, i32 35) - %15 = load %TokenType, %TokenType* %tmp.v1 + call void @ctor.313(%TokenType* %tmp.this1, i32 35) + %15 = load %TokenType, %TokenType* %tmp.this1 %16 = call i1 @next2Is(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %14, %TokenType %15) br label %cond.end @@ -24668,12 +24510,12 @@ cond_destruct_alt2: ; preds = %if_end cond_destruct_end: ; preds = %cond_destruct_alt2, %cond_destruct_alt1 %17 = load %String*, %String** %_result.addr - call void @ctor.192(%String* %17, %String* %id) - call void @dtor.229(%String* %id) + call void @ctor.184(%String* %17, %String* %id) + call void @dtor.218(%String* %id) ret void dumy_block: ; No predecessors! - call void @dtor.229(%String* %id) + call void @dtor.218(%String* %id) ret void } @@ -24683,9 +24525,8 @@ define internal void @parseQidOrString(%Node* sret %_result, %"SparrowParser[Spa store %Node* %_result, %Node** %_result.addr %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %"$tmpForRef" = alloca %Node - %"$tmpC" = alloca %StringRef br label %code code: ; preds = %0 @@ -24693,8 +24534,8 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 39) - %2 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 39) + %2 = load %TokenType, %TokenType* %tmp.this %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_end @@ -24706,11 +24547,10 @@ if_then: ; preds = %if_block %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %9 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8, i32 0, i32 1 %10 = getelementptr inbounds %Token, %Token* %9, i32 0, i32 2 - call void @asStringRef(%StringRef* %"$tmpC", %String* %10) - %11 = load %StringRef, %StringRef* %"$tmpC" + %11 = call %StringRef @asStringRef(%String* %10) %12 = call %Node @comp_parser_mkStringLiteral(%Location* %7, %StringRef %11) store %Node %12, %Node* %"$tmpForRef" - call void @ctor.434(%Node* %4, %Node* %"$tmpForRef") + call void @ctor.428(%Node* %4, %Node* %"$tmpForRef") ret void if_end: ; preds = %dumy_block, %if_block @@ -24730,35 +24570,35 @@ define internal void @parseImportDeclNamesOpt(%Node* sret %_result, %"SparrowPar %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %res = alloca %Node - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %"$tmpC" = alloca %Node - %tmp.v1 = alloca %TokenType + %tmp.this1 = alloca %TokenType br label %code code: ; preds = %0 - call void @ctor.436(%Node* %res) + call void @ctor.432(%Node* %res) br label %if_block if_block: ; preds = %code %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 28) - %2 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 28) + %2 = load %TokenType, %TokenType* %tmp.this %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_end if_then: ; preds = %if_block %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseIdOrOperListNode(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %4) - call void @"=.435"(%Node* %res, %Node* %"$tmpC") + call void @"=.430"(%Node* %res, %Node* %"$tmpC") %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v1, i32 29) - %6 = load %TokenType, %TokenType* %tmp.v1 + call void @ctor.313(%TokenType* %tmp.this1, i32 29) + %6 = load %TokenType, %TokenType* %tmp.this1 %7 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, %TokenType %6) br label %if_end if_end: ; preds = %if_then, %if_block %8 = load %Node*, %Node** %_result.addr - call void @ctor.434(%Node* %8, %Node* %res) + call void @ctor.428(%Node* %8, %Node* %res) ret void } @@ -24771,51 +24611,47 @@ define internal void @parseIdOrOperListNode(%Node* sret %_result, %"SparrowParse %res = alloca %Node %id = alloca %String %"$tmpForRef" = alloca %Node - %"$tmpC" = alloca %StringRef - %tmp.v = alloca %TokenType - %"$tmpC1" = alloca %String - %"$tmpForRef2" = alloca %Node - %"$tmpC3" = alloca %StringRef + %tmp.this = alloca %TokenType + %"$tmpC" = alloca %String + %"$tmpForRef1" = alloca %Node br label %code code: ; preds = %0 - call void @ctor.436(%Node* %res) + call void @ctor.432(%Node* %res) %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseIdOrOper(%String* %id, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, i1 true) %2 = load %Node, %Node* %res %3 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %4 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %3, i32 0, i32 1 %5 = getelementptr inbounds %Token, %Token* %4, i32 0, i32 0 - call void @asStringRef(%StringRef* %"$tmpC", %String* %id) - %6 = load %StringRef, %StringRef* %"$tmpC" + %6 = call %StringRef @asStringRef(%String* %id) %7 = call %Node @comp_parser_mkIdentifier(%Location* %5, %StringRef %6) %8 = call %Node @comp_parser_addToNodeList(%Node %2, %Node %7) store %Node %8, %Node* %"$tmpForRef" - call void @"=.435"(%Node* %res, %Node* %"$tmpForRef") + call void @"=.430"(%Node* %res, %Node* %"$tmpForRef") br label %while_block while_block: ; preds = %while_step, %code %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 32) - %10 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 32) + %10 = load %TokenType, %TokenType* %tmp.this %11 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9, %TokenType %10) br i1 %11, label %while_body, label %while_end while_body: ; preds = %while_block %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseIdOrOper(%String* %"$tmpC1", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %12, i1 true) - %13 = call %String* @"=.256"(%String* %id, %String* %"$tmpC1") - call void @dtor.229(%String* %"$tmpC1") + call void @parseIdOrOper(%String* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %12, i1 true) + %13 = call %String* @"=.250"(%String* %id, %String* %"$tmpC") + call void @dtor.218(%String* %"$tmpC") %14 = load %Node, %Node* %res %15 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %16 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %15, i32 0, i32 1 %17 = getelementptr inbounds %Token, %Token* %16, i32 0, i32 0 - call void @asStringRef(%StringRef* %"$tmpC3", %String* %id) - %18 = load %StringRef, %StringRef* %"$tmpC3" + %18 = call %StringRef @asStringRef(%String* %id) %19 = call %Node @comp_parser_mkIdentifier(%Location* %17, %StringRef %18) %20 = call %Node @comp_parser_addToNodeList(%Node %14, %Node %19) - store %Node %20, %Node* %"$tmpForRef2" - call void @"=.435"(%Node* %res, %Node* %"$tmpForRef2") + store %Node %20, %Node* %"$tmpForRef1" + call void @"=.430"(%Node* %res, %Node* %"$tmpForRef1") br label %while_step while_step: ; preds = %while_body @@ -24823,12 +24659,12 @@ while_step: ; preds = %while_body while_end: ; preds = %while_block %21 = load %Node*, %Node** %_result.addr - call void @ctor.434(%Node* %21, %Node* %res) - call void @dtor.229(%String* %id) + call void @ctor.428(%Node* %21, %Node* %res) + call void @dtor.218(%String* %id) ret void dumy_block: ; No predecessors! - call void @dtor.229(%String* %id) + call void @dtor.218(%String* %id) ret void } @@ -24840,15 +24676,14 @@ define internal i1 @parseUsingDecl(%"SparrowParser[SparrowLayoutDecoder[SparrowS store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %res.addr = alloca %Node* store %Node* %res, %Node** %res.addr - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %loc = alloca %Location %id = alloca %String %usingNode = alloca %Node %"$tmpC" = alloca %Node %"$tmpC4" = alloca %Node - %tmp.v5 = alloca %TokenType + %tmp.this5 = alloca %TokenType %"$tmpForRef" = alloca %Node - %"$tmpC6" = alloca %StringRef br label %code code: ; preds = %0 @@ -24856,8 +24691,8 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 8) - %2 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 8) + %2 = load %TokenType, %TokenType* %tmp.this %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) %4 = xor i1 true, %3 br i1 %4, label %if_then, label %if_end @@ -24869,29 +24704,29 @@ if_end: ; preds = %dumy_block, %if_blo %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 1 %7 = getelementptr inbounds %Token, %Token* %6, i32 0, i32 0 - call void @ctor.177(%Location* %loc, %Location* %7) + call void @ctor.171(%Location* %loc, %Location* %7) %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseIdEqualOpt(%String* %id, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8) - call void @ctor.436(%Node* %usingNode) + call void @ctor.432(%Node* %usingNode) br label %if_block1 dumy_block: ; No predecessors! br label %if_end if_block1: ; preds = %if_end - %9 = call i1 @isEmpty.376(%String* %id) + %9 = call i1 @isEmpty.370(%String* %id) br i1 %9, label %if_then2, label %if_else if_then2: ; preds = %if_block1 %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseQualifiedName(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %10, i1 true) - call void @"=.435"(%Node* %usingNode, %Node* %"$tmpC") + call void @"=.430"(%Node* %usingNode, %Node* %"$tmpC") br label %if_end3 if_else: ; preds = %if_block1 %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseExpr(%Node* %"$tmpC4", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11, i1 true) - call void @"=.435"(%Node* %usingNode, %Node* %"$tmpC4") + call void @"=.430"(%Node* %usingNode, %Node* %"$tmpC4") br label %if_end3 if_end3: ; preds = %if_else, %if_then2 @@ -24900,21 +24735,20 @@ if_end3: ; preds = %if_else, %if_then2 %14 = getelementptr inbounds %Token, %Token* %13, i32 0, i32 0 call void @copyEnd(%Location* %loc, %Location* %14) %15 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v5, i32 31) - %16 = load %TokenType, %TokenType* %tmp.v5 + call void @ctor.313(%TokenType* %tmp.this5, i32 31) + %16 = load %TokenType, %TokenType* %tmp.this5 %17 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %15, %TokenType %16) %18 = load %Node*, %Node** %res.addr - call void @asStringRef(%StringRef* %"$tmpC6", %String* %id) - %19 = load %StringRef, %StringRef* %"$tmpC6" + %19 = call %StringRef @asStringRef(%String* %id) %20 = load %Node, %Node* %usingNode %21 = call %Node @comp_parser_mkUsing(%Location* %loc, %StringRef %19, %Node %20) store %Node %21, %Node* %"$tmpForRef" - call void @"=.435"(%Node* %18, %Node* %"$tmpForRef") - call void @dtor.229(%String* %id) + call void @"=.430"(%Node* %18, %Node* %"$tmpForRef") + call void @dtor.218(%String* %id) ret i1 true -dumy_block7: ; No predecessors! - call void @dtor.229(%String* %id) +dumy_block6: ; No predecessors! + call void @dtor.218(%String* %id) unreachable } @@ -24926,16 +24760,15 @@ define internal i1 @parsePackageDecl(%"SparrowParser[SparrowLayoutDecoder[Sparro store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %res.addr = alloca %Node* store %Node* %res, %Node** %res.addr - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %loc = alloca %Location %id = alloca %String %formals = alloca %Node %ifClause = alloca %Node - %tmp.v1 = alloca %TokenType + %tmp.this1 = alloca %TokenType %children = alloca %Node - %tmp.v2 = alloca %TokenType + %tmp.this2 = alloca %TokenType %"$tmpForRef" = alloca %Node - %"$tmpC" = alloca %StringRef br label %code code: ; preds = %0 @@ -24943,8 +24776,8 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 7) - %2 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 7) + %2 = load %TokenType, %TokenType* %tmp.this %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) %4 = xor i1 true, %3 br i1 %4, label %if_then, label %if_end @@ -24956,7 +24789,7 @@ if_end: ; preds = %dumy_block, %if_blo %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 1 %7 = getelementptr inbounds %Token, %Token* %6, i32 0, i32 0 - call void @ctor.177(%Location* %loc, %Location* %7) + call void @ctor.171(%Location* %loc, %Location* %7) %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseId(%String* %id, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8) %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr @@ -24964,37 +24797,36 @@ if_end: ; preds = %dumy_block, %if_blo %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseIfClauseOpt(%Node* %ifClause, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %10) %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v1, i32 24) - %12 = load %TokenType, %TokenType* %tmp.v1 + call void @ctor.313(%TokenType* %tmp.this1, i32 24) + %12 = load %TokenType, %TokenType* %tmp.this1 %13 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11, %TokenType %12) - call void @ctor.436(%Node* %children) + call void @ctor.432(%Node* %children) %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseStmts(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %14, i1 true, %Node* %children) %15 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v2, i32 25) - %16 = load %TokenType, %TokenType* %tmp.v2 + call void @ctor.313(%TokenType* %tmp.this2, i32 25) + %16 = load %TokenType, %TokenType* %tmp.this2 %17 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %15, %TokenType %16) %18 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %19 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %18, i32 0, i32 1 %20 = getelementptr inbounds %Token, %Token* %19, i32 0, i32 0 call void @copyEnd(%Location* %loc, %Location* %20) %21 = load %Node*, %Node** %res.addr - call void @asStringRef(%StringRef* %"$tmpC", %String* %id) - %22 = load %StringRef, %StringRef* %"$tmpC" + %22 = call %StringRef @asStringRef(%String* %id) %23 = load %Node, %Node* %children %24 = load %Node, %Node* %formals %25 = load %Node, %Node* %ifClause %26 = call %Node @comp_parser_mkPackage(%Location* %loc, %StringRef %22, %Node %23, %Node %24, %Node %25) store %Node %26, %Node* %"$tmpForRef" - call void @"=.435"(%Node* %21, %Node* %"$tmpForRef") - call void @dtor.229(%String* %id) + call void @"=.430"(%Node* %21, %Node* %"$tmpForRef") + call void @dtor.218(%String* %id) ret i1 true dumy_block: ; No predecessors! br label %if_end dumy_block3: ; No predecessors! - call void @dtor.229(%String* %id) + call void @dtor.218(%String* %id) unreachable } @@ -25004,7 +24836,7 @@ define internal void @parseIfClauseOpt(%Node* sret %_result, %"SparrowParser[Spa store %Node* %_result, %Node** %_result.addr %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType br label %code code: ; preds = %0 @@ -25012,8 +24844,8 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 15) - %2 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 15) + %2 = load %TokenType, %TokenType* %tmp.this %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_end @@ -25025,7 +24857,7 @@ if_then: ; preds = %if_block if_end: ; preds = %dumy_block, %if_block %6 = load %Node*, %Node** %_result.addr - call void @ctor.436(%Node* %6) + call void @ctor.432(%Node* %6) ret void dumy_block: ; No predecessors! @@ -25040,33 +24872,31 @@ define i1 @parseDatatypeDecl(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %res.addr = alloca %Node* store %Node* %res, %Node** %res.addr - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %loc = alloca %Location %id = alloca %String %formals = alloca %Node - %tmp.v4 = alloca %TokenType + %tmp.this4 = alloca %TokenType %underlyingData = alloca %Node %ifClause = alloca %Node - %tmp.v5 = alloca %TokenType + %tmp.this5 = alloca %TokenType %"$tmpForRef" = alloca %Node - %"$tmpC" = alloca %StringRef - %tmp.v6 = alloca %Node + %tmp.this6 = alloca %Node %ifClause7 = alloca %Node %children = alloca %Node - %tmp.v12 = alloca %TokenType - %tmp.v13 = alloca %TokenType - %tmp.v14 = alloca %TokenType - %tmp.v22 = alloca %TokenType - %tmp.v23 = alloca %TokenType - %tmp.v28 = alloca %TokenType + %tmp.this12 = alloca %TokenType + %tmp.this13 = alloca %TokenType + %tmp.this14 = alloca %TokenType + %tmp.this22 = alloca %TokenType + %tmp.this23 = alloca %TokenType + %tmp.this28 = alloca %TokenType %usingNode = alloca %Node %"$tmpForRef34" = alloca %Node - %tmp.v42 = alloca %TokenType - %tmp.v43 = alloca %TokenType - %tmp.v48 = alloca %TokenType + %tmp.this42 = alloca %TokenType + %tmp.this43 = alloca %TokenType + %tmp.this48 = alloca %TokenType %"$tmpForRef49" = alloca %Node - %"$tmpC50" = alloca %StringRef - %tmp.v51 = alloca %Node + %tmp.this50 = alloca %Node br label %code code: ; preds = %0 @@ -25074,8 +24904,8 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 5) - %2 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 5) + %2 = load %TokenType, %TokenType* %tmp.this %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) %4 = xor i1 true, %3 br i1 %4, label %if_then, label %if_end @@ -25087,7 +24917,7 @@ if_end: ; preds = %dumy_block, %if_blo %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 1 %7 = getelementptr inbounds %Token, %Token* %6, i32 0, i32 0 - call void @ctor.177(%Location* %loc, %Location* %7) + call void @ctor.171(%Location* %loc, %Location* %7) %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseId(%String* %id, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8) %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr @@ -25099,8 +24929,8 @@ dumy_block: ; No predecessors! if_block1: ; preds = %if_end %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v4, i32 35) - %11 = load %TokenType, %TokenType* %tmp.v4 + call void @ctor.313(%TokenType* %tmp.this4, i32 35) + %11 = load %TokenType, %TokenType* %tmp.this4 %12 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %10, %TokenType %11) br i1 %12, label %if_then2, label %if_else @@ -25110,40 +24940,39 @@ if_then2: ; preds = %if_block1 %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseIfClauseOpt(%Node* %ifClause, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %14) %15 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v5, i32 31) - %16 = load %TokenType, %TokenType* %tmp.v5 + call void @ctor.313(%TokenType* %tmp.this5, i32 31) + %16 = load %TokenType, %TokenType* %tmp.this5 %17 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %15, %TokenType %16) %18 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %19 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %18, i32 0, i32 1 %20 = getelementptr inbounds %Token, %Token* %19, i32 0, i32 0 call void @copyEnd(%Location* %loc, %Location* %20) %21 = load %Node*, %Node** %res.addr - call void @asStringRef(%StringRef* %"$tmpC", %String* %id) - %22 = load %StringRef, %StringRef* %"$tmpC" + %22 = call %StringRef @asStringRef(%String* %id) %23 = load %Node, %Node* %formals %24 = load %Node, %Node* %underlyingData %25 = load %Node, %Node* %ifClause - call void @ctor.436(%Node* %tmp.v6) - %26 = load %Node, %Node* %tmp.v6 + call void @ctor.432(%Node* %tmp.this6) + %26 = load %Node, %Node* %tmp.this6 %27 = call %Node @comp_parser_mkDatatype(%Location* %loc, %StringRef %22, %Node %23, %Node %24, %Node %25, %Node %26) store %Node %27, %Node* %"$tmpForRef" - call void @"=.435"(%Node* %21, %Node* %"$tmpForRef") + call void @"=.430"(%Node* %21, %Node* %"$tmpForRef") br label %if_end3 if_else: ; preds = %if_block1 %28 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseIfClauseOpt(%Node* %ifClause7, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %28) - call void @ctor.436(%Node* %children) + call void @ctor.432(%Node* %children) br label %if_block8 if_end3: ; preds = %if_end11, %if_then2 - call void @dtor.229(%String* %id) + call void @dtor.218(%String* %id) ret i1 true if_block8: ; preds = %if_else %29 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v12, i32 31) - %30 = load %TokenType, %TokenType* %tmp.v12 + call void @ctor.313(%TokenType* %tmp.this12, i32 31) + %30 = load %TokenType, %TokenType* %tmp.this12 %31 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %29, %TokenType %30) br i1 %31, label %if_then9, label %if_else10 @@ -25152,8 +24981,8 @@ if_then9: ; preds = %if_block8 if_else10: ; preds = %if_block8 %32 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v13, i32 24) - %33 = load %TokenType, %TokenType* %tmp.v13 + call void @ctor.313(%TokenType* %tmp.this13, i32 24) + %33 = load %TokenType, %TokenType* %tmp.this13 %34 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %32, %TokenType %33) br label %while_block @@ -25163,22 +24992,21 @@ if_end11: ; preds = %while_end, %if_then %37 = getelementptr inbounds %Token, %Token* %36, i32 0, i32 0 call void @copyEnd(%Location* %loc, %Location* %37) %38 = load %Node*, %Node** %res.addr - call void @asStringRef(%StringRef* %"$tmpC50", %String* %id) - %39 = load %StringRef, %StringRef* %"$tmpC50" + %39 = call %StringRef @asStringRef(%String* %id) %40 = load %Node, %Node* %formals - call void @ctor.436(%Node* %tmp.v51) - %41 = load %Node, %Node* %tmp.v51 + call void @ctor.432(%Node* %tmp.this50) + %41 = load %Node, %Node* %tmp.this50 %42 = load %Node, %Node* %ifClause7 %43 = load %Node, %Node* %children %44 = call %Node @comp_parser_mkDatatype(%Location* %loc, %StringRef %39, %Node %40, %Node %41, %Node %42, %Node %43) store %Node %44, %Node* %"$tmpForRef49" - call void @"=.435"(%Node* %38, %Node* %"$tmpForRef49") + call void @"=.430"(%Node* %38, %Node* %"$tmpForRef49") br label %if_end3 while_block: ; preds = %while_step, %if_else10 %45 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v14, i32 25) - %46 = load %TokenType, %TokenType* %tmp.v14 + call void @ctor.313(%TokenType* %tmp.this14, i32 25) + %46 = load %TokenType, %TokenType* %tmp.this14 %47 = call i1 @nextIs(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %45, %TokenType %46) %48 = xor i1 true, %47 br i1 %48, label %cond.true, label %cond.false @@ -25191,8 +25019,8 @@ while_step: ; preds = %cond_destruct_end47 while_end: ; preds = %if_then26, %cond.end %49 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v48, i32 25) - %50 = load %TokenType, %TokenType* %tmp.v48 + call void @ctor.313(%TokenType* %tmp.this48, i32 25) + %50 = load %TokenType, %TokenType* %tmp.this48 %51 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %49, %TokenType %50) br label %if_end11 @@ -25212,8 +25040,8 @@ cond.end: ; preds = %cond.false, %cond.t while_block15: ; preds = %while_step17, %while_body %56 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v22, i32 32) - %57 = load %TokenType, %TokenType* %tmp.v22 + call void @ctor.313(%TokenType* %tmp.this22, i32 32) + %57 = load %TokenType, %TokenType* %tmp.this22 %58 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %56, %TokenType %57) br i1 %58, label %cond.true19, label %cond.false20 @@ -25231,8 +25059,8 @@ cond.true19: ; preds = %while_block15 cond.false20: ; preds = %while_block15 %59 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v23, i32 31) - %60 = load %TokenType, %TokenType* %tmp.v23 + call void @ctor.313(%TokenType* %tmp.this23, i32 31) + %60 = load %TokenType, %TokenType* %tmp.this23 %61 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %59, %TokenType %60) br label %cond.end21 @@ -25251,8 +25079,8 @@ cond_destruct_end: ; preds = %cond_destruct_alt2, if_block25: ; preds = %cond_destruct_end %62 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v28, i32 25) - %63 = load %TokenType, %TokenType* %tmp.v28 + call void @ctor.313(%TokenType* %tmp.this28, i32 25) + %63 = load %TokenType, %TokenType* %tmp.this28 %64 = call i1 @nextIs(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %62, %TokenType %63) br i1 %64, label %if_then26, label %if_end27 @@ -25260,7 +25088,7 @@ if_then26: ; preds = %if_block25 br label %while_end if_end27: ; preds = %dumy_block29, %if_block25 - call void @ctor.436(%Node* %usingNode) + call void @ctor.432(%Node* %usingNode) br label %if_block30 dumy_block29: ; No predecessors! @@ -25276,7 +25104,7 @@ if_then31: ; preds = %if_block30 %68 = load %Node, %Node* %usingNode %69 = call %Node @comp_parser_addToNodeList(%Node %67, %Node %68) store %Node %69, %Node* %"$tmpForRef34" - call void @"=.435"(%Node* %children, %Node* %"$tmpForRef34") + call void @"=.430"(%Node* %children, %Node* %"$tmpForRef34") br label %if_end33 if_else32: ; preds = %if_block30 @@ -25289,8 +25117,8 @@ if_end33: ; preds = %if_else32, %if_then while_block35: ; preds = %while_step37, %if_end33 %71 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v42, i32 32) - %72 = load %TokenType, %TokenType* %tmp.v42 + call void @ctor.313(%TokenType* %tmp.this42, i32 32) + %72 = load %TokenType, %TokenType* %tmp.this42 %73 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %71, %TokenType %72) br i1 %73, label %cond.true39, label %cond.false40 @@ -25308,8 +25136,8 @@ cond.true39: ; preds = %while_block35 cond.false40: ; preds = %while_block35 %74 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v43, i32 31) - %75 = load %TokenType, %TokenType* %tmp.v43 + call void @ctor.313(%TokenType* %tmp.this43, i32 31) + %75 = load %TokenType, %TokenType* %tmp.this43 %76 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %74, %TokenType %75) br label %cond.end41 @@ -25326,8 +25154,8 @@ cond_destruct_alt246: ; preds = %while_end38 cond_destruct_end47: ; preds = %cond_destruct_alt246, %cond_destruct_alt145 br label %while_step -dumy_block52: ; No predecessors! - call void @dtor.229(%String* %id) +dumy_block51: ; No predecessors! + call void @dtor.218(%String* %id) unreachable } @@ -25340,57 +25168,56 @@ define internal void @parseFieldsLine(%"SparrowParser[SparrowLayoutDecoder[Sparr %res.addr = alloca %Node* store %Node* %res, %Node** %res.addr %ids = alloca %"Vector[LocString]" - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %typeNode = alloca %Node %init = alloca %Node - %tmp.v1 = alloca %TokenType + %tmp.this1 = alloca %TokenType %"$tmpC" = alloca %Node %"$rangeVar" = alloca %"ContiguousMemoryRange[LocString]" %id = alloca %LocString* %v = alloca %Node %"$tmpForRef" = alloca %Node - %"$tmpC2" = alloca %StringRef - %"$tmpForRef3" = alloca %Node + %"$tmpForRef2" = alloca %Node br label %code code: ; preds = %0 %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseIdList(%"Vector[LocString]"* %ids, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1) %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 30) - %3 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 30) + %3 = load %TokenType, %TokenType* %tmp.this %4 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, %TokenType %3) %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseExpr(%Node* %typeNode, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i1 false) - call void @ctor.436(%Node* %init) + call void @ctor.432(%Node* %init) br label %if_block if_block: ; preds = %code %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v1, i32 35) - %7 = load %TokenType, %TokenType* %tmp.v1 + call void @ctor.313(%TokenType* %tmp.this1, i32 35) + %7 = load %TokenType, %TokenType* %tmp.this1 %8 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %6, %TokenType %7) br i1 %8, label %if_then, label %if_end if_then: ; preds = %if_block %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseExpr(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9, i1 true) - call void @"=.435"(%Node* %init, %Node* %"$tmpC") + call void @"=.430"(%Node* %init, %Node* %"$tmpC") br label %if_end if_end: ; preds = %if_then, %if_block - call void @all.468(%"ContiguousMemoryRange[LocString]"* %"$rangeVar", %"Vector[LocString]"* %ids) + call void @all.465(%"ContiguousMemoryRange[LocString]"* %"$rangeVar", %"Vector[LocString]"* %ids) br label %while_block while_block: ; preds = %while_step, %if_end %10 = load %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %"$rangeVar" - %11 = call i1 @isEmpty.470(%"ContiguousMemoryRange[LocString]" %10) + %11 = call i1 @isEmpty.467(%"ContiguousMemoryRange[LocString]" %10) %12 = xor i1 true, %11 br i1 %12, label %while_body, label %while_end while_body: ; preds = %while_block %13 = load %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %"$rangeVar" - %14 = call %LocString* @front.471(%"ContiguousMemoryRange[LocString]" %13) + %14 = call %LocString* @front.468(%"ContiguousMemoryRange[LocString]" %13) store %LocString* %14, %LocString** %id %15 = load %LocString*, %LocString** %id %16 = getelementptr inbounds %LocString, %LocString* %15, i32 0, i32 0 @@ -25398,28 +25225,27 @@ while_body: ; preds = %while_block %18 = load %LocString*, %LocString** %id %19 = getelementptr inbounds %LocString, %LocString* %18, i32 0, i32 0 %20 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %19, i32 0, i32 1 - call void @asStringRef(%StringRef* %"$tmpC2", %String* %20) - %21 = load %StringRef, %StringRef* %"$tmpC2" + %21 = call %StringRef @asStringRef(%String* %20) %22 = load %Node, %Node* %typeNode %23 = load %Node, %Node* %init %24 = call %Node @comp_parser_mkField(%Location* %17, %StringRef %21, %Node %22, %Node %23) store %Node %24, %Node* %"$tmpForRef" - call void @ctor.434(%Node* %v, %Node* %"$tmpForRef") + call void @ctor.428(%Node* %v, %Node* %"$tmpForRef") %25 = load %Node*, %Node** %res.addr %26 = load %Node*, %Node** %res.addr %27 = load %Node, %Node* %26 %28 = load %Node, %Node* %v %29 = call %Node @comp_parser_addToNodeList(%Node %27, %Node %28) - store %Node %29, %Node* %"$tmpForRef3" - call void @"=.435"(%Node* %25, %Node* %"$tmpForRef3") + store %Node %29, %Node* %"$tmpForRef2" + call void @"=.430"(%Node* %25, %Node* %"$tmpForRef2") br label %while_step while_step: ; preds = %while_body - call void @popFront.472(%"ContiguousMemoryRange[LocString]"* %"$rangeVar") + call void @popFront.469(%"ContiguousMemoryRange[LocString]"* %"$rangeVar") br label %while_block while_end: ; preds = %while_block - call void @dtor.465(%"Vector[LocString]"* %ids) + call void @dtor.462(%"Vector[LocString]"* %ids) ret void } @@ -25431,18 +25257,16 @@ define internal i1 @parseConceptDecl(%"SparrowParser[SparrowLayoutDecoder[Sparro store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %res.addr = alloca %Node* store %Node* %res, %Node** %res.addr - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %loc = alloca %Location %id = alloca %String - %tmp.v1 = alloca %TokenType + %tmp.this1 = alloca %TokenType %paramName = alloca %String %baseConcept = alloca %Node - %tmp.v2 = alloca %TokenType + %tmp.this2 = alloca %TokenType %ifClause = alloca %Node - %tmp.v3 = alloca %TokenType + %tmp.this3 = alloca %TokenType %"$tmpForRef" = alloca %Node - %"$tmpC" = alloca %StringRef - %"$tmpC4" = alloca %StringRef br label %code code: ; preds = %0 @@ -25450,8 +25274,8 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 4) - %2 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 4) + %2 = load %TokenType, %TokenType* %tmp.this %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) %4 = xor i1 true, %3 br i1 %4, label %if_then, label %if_end @@ -25463,51 +25287,49 @@ if_end: ; preds = %dumy_block, %if_blo %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 1 %7 = getelementptr inbounds %Token, %Token* %6, i32 0, i32 0 - call void @ctor.177(%Location* %loc, %Location* %7) + call void @ctor.171(%Location* %loc, %Location* %7) %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseId(%String* %id, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8) %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v1, i32 28) - %10 = load %TokenType, %TokenType* %tmp.v1 + call void @ctor.313(%TokenType* %tmp.this1, i32 28) + %10 = load %TokenType, %TokenType* %tmp.this1 %11 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9, %TokenType %10) %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseId(%String* %paramName, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %12) %13 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseTypeNode(%Node* %baseConcept, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %13) %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v2, i32 29) - %15 = load %TokenType, %TokenType* %tmp.v2 + call void @ctor.313(%TokenType* %tmp.this2, i32 29) + %15 = load %TokenType, %TokenType* %tmp.this2 %16 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %14, %TokenType %15) %17 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseIfClauseOpt(%Node* %ifClause, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %17) %18 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v3, i32 31) - %19 = load %TokenType, %TokenType* %tmp.v3 + call void @ctor.313(%TokenType* %tmp.this3, i32 31) + %19 = load %TokenType, %TokenType* %tmp.this3 %20 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %18, %TokenType %19) %21 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %22 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %21, i32 0, i32 1 %23 = getelementptr inbounds %Token, %Token* %22, i32 0, i32 0 call void @copyEnd(%Location* %loc, %Location* %23) %24 = load %Node*, %Node** %res.addr - call void @asStringRef(%StringRef* %"$tmpC", %String* %id) - %25 = load %StringRef, %StringRef* %"$tmpC" - call void @asStringRef(%StringRef* %"$tmpC4", %String* %paramName) - %26 = load %StringRef, %StringRef* %"$tmpC4" + %25 = call %StringRef @asStringRef(%String* %id) + %26 = call %StringRef @asStringRef(%String* %paramName) %27 = load %Node, %Node* %baseConcept %28 = load %Node, %Node* %ifClause %29 = call %Node @comp_parser_mkConcept(%Location* %loc, %StringRef %25, %StringRef %26, %Node %27, %Node %28) store %Node %29, %Node* %"$tmpForRef" - call void @"=.435"(%Node* %24, %Node* %"$tmpForRef") - call void @dtor.229(%String* %paramName) - call void @dtor.229(%String* %id) + call void @"=.430"(%Node* %24, %Node* %"$tmpForRef") + call void @dtor.218(%String* %paramName) + call void @dtor.218(%String* %id) ret i1 true dumy_block: ; No predecessors! br label %if_end -dumy_block5: ; No predecessors! - call void @dtor.229(%String* %paramName) - call void @dtor.229(%String* %id) +dumy_block4: ; No predecessors! + call void @dtor.218(%String* %paramName) + call void @dtor.218(%String* %id) unreachable } @@ -25519,17 +25341,17 @@ define internal i1 @parseVarDecl(%"SparrowParser[SparrowLayoutDecoder[SparrowSca store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %res.addr = alloca %Node* store %Node* %res, %Node** %res.addr - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %ids = alloca %"Vector[LocString]" %typeNode = alloca %Node %init = alloca %Node - %tmp.v4 = alloca %TokenType + %tmp.this4 = alloca %TokenType %"$tmpC" = alloca %Node - %tmp.v8 = alloca %TokenType + %tmp.this8 = alloca %TokenType %"$tmpC9" = alloca %Node - %tmp.v10 = alloca %TokenType + %tmp.this10 = alloca %TokenType %"$tmpC11" = alloca %Node - %tmp.v12 = alloca %TokenType + %tmp.this12 = alloca %TokenType br label %code code: ; preds = %0 @@ -25537,8 +25359,8 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 9) - %2 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 9) + %2 = load %TokenType, %TokenType* %tmp.this %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) %4 = xor i1 true, %3 br i1 %4, label %if_then, label %if_end @@ -25549,8 +25371,8 @@ if_then: ; preds = %if_block if_end: ; preds = %dumy_block, %if_block %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseIdList(%"Vector[LocString]"* %ids, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5) - call void @ctor.436(%Node* %typeNode) - call void @ctor.436(%Node* %init) + call void @ctor.432(%Node* %typeNode) + call void @ctor.432(%Node* %init) br label %if_block1 dumy_block: ; No predecessors! @@ -25558,57 +25380,57 @@ dumy_block: ; No predecessors! if_block1: ; preds = %if_end %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v4, i32 30) - %7 = load %TokenType, %TokenType* %tmp.v4 + call void @ctor.313(%TokenType* %tmp.this4, i32 30) + %7 = load %TokenType, %TokenType* %tmp.this4 %8 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %6, %TokenType %7) br i1 %8, label %if_then2, label %if_else if_then2: ; preds = %if_block1 %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseExpr(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9, i1 false) - call void @"=.435"(%Node* %typeNode, %Node* %"$tmpC") + call void @"=.430"(%Node* %typeNode, %Node* %"$tmpC") br label %if_block5 if_else: ; preds = %if_block1 %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v10, i32 35) - %11 = load %TokenType, %TokenType* %tmp.v10 + call void @ctor.313(%TokenType* %tmp.this10, i32 35) + %11 = load %TokenType, %TokenType* %tmp.this10 %12 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %10, %TokenType %11) %13 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseExpr(%Node* %"$tmpC11", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %13, i1 true) - call void @"=.435"(%Node* %init, %Node* %"$tmpC11") + call void @"=.430"(%Node* %init, %Node* %"$tmpC11") br label %if_end3 if_end3: ; preds = %if_else, %if_end7 %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v12, i32 31) - %15 = load %TokenType, %TokenType* %tmp.v12 + call void @ctor.313(%TokenType* %tmp.this12, i32 31) + %15 = load %TokenType, %TokenType* %tmp.this12 %16 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %14, %TokenType %15) %17 = load %Node, %Node* %typeNode %18 = load %Node, %Node* %init %19 = load %Node*, %Node** %res.addr call void @createFormals(%"Vector[LocString]"* %ids, %Node %17, %Node %18, i1 true, %Node* %19) - call void @dtor.465(%"Vector[LocString]"* %ids) + call void @dtor.462(%"Vector[LocString]"* %ids) ret i1 true if_block5: ; preds = %if_then2 %20 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v8, i32 35) - %21 = load %TokenType, %TokenType* %tmp.v8 + call void @ctor.313(%TokenType* %tmp.this8, i32 35) + %21 = load %TokenType, %TokenType* %tmp.this8 %22 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %20, %TokenType %21) br i1 %22, label %if_then6, label %if_end7 if_then6: ; preds = %if_block5 %23 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseExpr(%Node* %"$tmpC9", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %23, i1 true) - call void @"=.435"(%Node* %init, %Node* %"$tmpC9") + call void @"=.430"(%Node* %init, %Node* %"$tmpC9") br label %if_end7 if_end7: ; preds = %if_then6, %if_block5 br label %if_end3 dumy_block13: ; No predecessors! - call void @dtor.465(%"Vector[LocString]"* %ids) + call void @dtor.462(%"Vector[LocString]"* %ids) unreachable } @@ -25618,7 +25440,7 @@ define internal i1 @parseFunDecl(%"SparrowParser[SparrowLayoutDecoder[SparrowSca store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %res.addr = alloca %Node* store %Node* %res, %Node** %res.addr - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %loc = alloca %Location %id = alloca %String %formals = alloca %Node @@ -25626,14 +25448,13 @@ define internal i1 @parseFunDecl(%"SparrowParser[SparrowLayoutDecoder[SparrowSca %body = alloca %Node %bodyExp = alloca %Node %ifClause = alloca %Node - %tmp.v4 = alloca %TokenType + %tmp.this4 = alloca %TokenType %"$tmpC" = alloca %Node %"$tmpC5" = alloca %Node - %tmp.v6 = alloca %TokenType + %tmp.this6 = alloca %TokenType %"$tmpC7" = alloca %Node %"$tmpC8" = alloca %Node %"$tmpForRef" = alloca %Node - %"$tmpC9" = alloca %StringRef br label %code code: ; preds = %0 @@ -25641,8 +25462,8 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 6) - %2 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 6) + %2 = load %TokenType, %TokenType* %tmp.this %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) %4 = xor i1 true, %3 br i1 %4, label %if_then, label %if_end @@ -25654,16 +25475,16 @@ if_end: ; preds = %dumy_block, %if_blo %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 1 %7 = getelementptr inbounds %Token, %Token* %6, i32 0, i32 0 - call void @ctor.177(%Location* %loc, %Location* %7) + call void @ctor.171(%Location* %loc, %Location* %7) %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseFunNameString(%String* %id, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8) %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseFormalsOpt(%Node* %formals, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9, i1 false) %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseTypeNode(%Node* %retType, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %10) - call void @ctor.436(%Node* %body) - call void @ctor.436(%Node* %bodyExp) - call void @ctor.436(%Node* %ifClause) + call void @ctor.432(%Node* %body) + call void @ctor.432(%Node* %bodyExp) + call void @ctor.432(%Node* %ifClause) br label %if_block1 dumy_block: ; No predecessors! @@ -25671,31 +25492,31 @@ dumy_block: ; No predecessors! if_block1: ; preds = %if_end %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v4, i32 35) - %12 = load %TokenType, %TokenType* %tmp.v4 + call void @ctor.313(%TokenType* %tmp.this4, i32 35) + %12 = load %TokenType, %TokenType* %tmp.this4 %13 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11, %TokenType %12) br i1 %13, label %if_then2, label %if_else if_then2: ; preds = %if_block1 %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseExpr(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %14, i1 true) - call void @"=.435"(%Node* %bodyExp, %Node* %"$tmpC") + call void @"=.430"(%Node* %bodyExp, %Node* %"$tmpC") %15 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseIfClauseOpt(%Node* %"$tmpC5", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %15) - call void @"=.435"(%Node* %ifClause, %Node* %"$tmpC5") + call void @"=.430"(%Node* %ifClause, %Node* %"$tmpC5") %16 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v6, i32 31) - %17 = load %TokenType, %TokenType* %tmp.v6 + call void @ctor.313(%TokenType* %tmp.this6, i32 31) + %17 = load %TokenType, %TokenType* %tmp.this6 %18 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %16, %TokenType %17) br label %if_end3 if_else: ; preds = %if_block1 %19 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseIfClauseOpt(%Node* %"$tmpC7", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %19) - call void @"=.435"(%Node* %ifClause, %Node* %"$tmpC7") + call void @"=.430"(%Node* %ifClause, %Node* %"$tmpC7") %20 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseFunBody(%Node* %"$tmpC8", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %20) - call void @"=.435"(%Node* %body, %Node* %"$tmpC8") + call void @"=.430"(%Node* %body, %Node* %"$tmpC8") br label %if_end3 if_end3: ; preds = %if_else, %if_then2 @@ -25704,8 +25525,7 @@ if_end3: ; preds = %if_else, %if_then2 %23 = getelementptr inbounds %Token, %Token* %22, i32 0, i32 0 call void @copyEnd(%Location* %loc, %Location* %23) %24 = load %Node*, %Node** %res.addr - call void @asStringRef(%StringRef* %"$tmpC9", %String* %id) - %25 = load %StringRef, %StringRef* %"$tmpC9" + %25 = call %StringRef @asStringRef(%String* %id) %26 = load %Node, %Node* %formals %27 = load %Node, %Node* %retType %28 = load %Node, %Node* %body @@ -25713,12 +25533,12 @@ if_end3: ; preds = %if_else, %if_then2 %30 = load %Node, %Node* %ifClause %31 = call %Node @comp_parser_mkFun(%Location* %loc, %StringRef %25, %Node %26, %Node %27, %Node %28, %Node %29, %Node %30) store %Node %31, %Node* %"$tmpForRef" - call void @"=.435"(%Node* %24, %Node* %"$tmpForRef") - call void @dtor.229(%String* %id) + call void @"=.430"(%Node* %24, %Node* %"$tmpForRef") + call void @dtor.218(%String* %id) ret i1 true -dumy_block10: ; No predecessors! - call void @dtor.229(%String* %id) +dumy_block9: ; No predecessors! + call void @dtor.218(%String* %id) unreachable } @@ -25728,11 +25548,11 @@ define internal void @parseFunNameString(%String* sret %_result, %"SparrowParser store %String* %_result, %String** %_result.addr %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %"$tmpForRef" = alloca %StringRef %tmp.StringRef = alloca %StringRef - %tmp.v4 = alloca %TokenType - %tmp.v5 = alloca %TokenType + %tmp.this4 = alloca %TokenType + %tmp.this5 = alloca %TokenType %"$tmpForRef6" = alloca %StringRef %tmp.StringRef7 = alloca %StringRef br label %code @@ -25742,8 +25562,8 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 33) - %2 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 33) + %2 = load %TokenType, %TokenType* %tmp.this %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_end @@ -25755,7 +25575,7 @@ if_then: ; preds = %if_block store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.102, i32 0, i32 1), i8** %6 %7 = load %StringRef, %StringRef* %tmp.StringRef store %StringRef %7, %StringRef* %"$tmpForRef" - call void @ctor.370(%String* %4, %StringRef* %"$tmpForRef") + call void @ctor.364(%String* %4, %StringRef* %"$tmpForRef") ret void if_end: ; preds = %dumy_block, %if_block @@ -25766,15 +25586,15 @@ dumy_block: ; No predecessors! if_block1: ; preds = %if_end %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v4, i32 28) - %9 = load %TokenType, %TokenType* %tmp.v4 + call void @ctor.313(%TokenType* %tmp.this4, i32 28) + %9 = load %TokenType, %TokenType* %tmp.this4 %10 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8, %TokenType %9) br i1 %10, label %if_then2, label %if_end3 if_then2: ; preds = %if_block1 %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v5, i32 29) - %12 = load %TokenType, %TokenType* %tmp.v5 + call void @ctor.313(%TokenType* %tmp.this5, i32 29) + %12 = load %TokenType, %TokenType* %tmp.this5 %13 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11, %TokenType %12) %14 = load %String*, %String** %_result.addr %15 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef7, i32 0, i32 0 @@ -25783,7 +25603,7 @@ if_then2: ; preds = %if_block1 store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @str.103, i32 0, i32 2), i8** %16 %17 = load %StringRef, %StringRef* %tmp.StringRef7 store %StringRef %17, %StringRef* %"$tmpForRef6" - call void @ctor.370(%String* %14, %StringRef* %"$tmpForRef6") + call void @ctor.364(%String* %14, %StringRef* %"$tmpForRef6") ret void if_end3: ; preds = %dumy_block8, %if_block1 @@ -25822,11 +25642,11 @@ define internal i1 @parseIfStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScan %topLevel.addr = alloca i1 store i1 %topLevel, i1* %topLevel.addr %loc = alloca %Location - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %expr = alloca %Node %thenClause = alloca %Node %elseClause = alloca %Node - %tmp.v4 = alloca %TokenType + %tmp.this4 = alloca %TokenType %"$tmpC" = alloca %Node %"$tmpForRef" = alloca %Node br label %code @@ -25838,8 +25658,8 @@ code: ; preds = %0 if_block: ; preds = %code %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 15) - %3 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 15) + %3 = load %TokenType, %TokenType* %tmp.this %4 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, %TokenType %3) br i1 %4, label %if_then, label %if_end @@ -25849,7 +25669,7 @@ if_then: ; preds = %if_block %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %7 = load i1, i1* %topLevel.addr call void @parseStmt(%Node* %thenClause, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %6, i1 %7) - call void @ctor.436(%Node* %elseClause) + call void @ctor.432(%Node* %elseClause) br label %if_block1 if_end: ; preds = %dumy_block, %if_block @@ -25857,8 +25677,8 @@ if_end: ; preds = %dumy_block, %if_blo if_block1: ; preds = %if_then %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v4, i32 23) - %9 = load %TokenType, %TokenType* %tmp.v4 + call void @ctor.313(%TokenType* %tmp.this4, i32 23) + %9 = load %TokenType, %TokenType* %tmp.this4 %10 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8, %TokenType %9) br i1 %10, label %if_then2, label %if_end3 @@ -25866,7 +25686,7 @@ if_then2: ; preds = %if_block1 %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %12 = load i1, i1* %topLevel.addr call void @parseStmt(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11, i1 %12) - call void @"=.435"(%Node* %elseClause, %Node* %"$tmpC") + call void @"=.430"(%Node* %elseClause, %Node* %"$tmpC") br label %if_end3 if_end3: ; preds = %if_then2, %if_block1 @@ -25880,7 +25700,7 @@ if_end3: ; preds = %if_then2, %if_block %19 = load %Node, %Node* %elseClause %20 = call %Node @comp_parser_mkIfStmt(%Location* %loc, %Node %17, %Node %18, %Node %19) store %Node %20, %Node* %"$tmpForRef" - call void @"=.435"(%Node* %16, %Node* %"$tmpForRef") + call void @"=.430"(%Node* %16, %Node* %"$tmpForRef") ret i1 true dumy_block: ; No predecessors! @@ -25898,16 +25718,15 @@ define internal i1 @parseForStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowSca %topLevel.addr = alloca i1 store i1 %topLevel, i1* %topLevel.addr %loc = alloca %Location - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %id = alloca %String %typeNode = alloca %Node - %tmp.v4 = alloca %TokenType + %tmp.this4 = alloca %TokenType %"$tmpC" = alloca %Node - %tmp.v5 = alloca %TokenType + %tmp.this5 = alloca %TokenType %range = alloca %Node %action = alloca %Node %"$tmpForRef" = alloca %Node - %"$tmpC6" = alloca %StringRef br label %code code: ; preds = %0 @@ -25917,15 +25736,15 @@ code: ; preds = %0 if_block: ; preds = %code %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 14) - %3 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 14) + %3 = load %TokenType, %TokenType* %tmp.this %4 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, %TokenType %3) br i1 %4, label %if_then, label %if_end if_then: ; preds = %if_block %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseId(%String* %id, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5) - call void @ctor.436(%Node* %typeNode) + call void @ctor.432(%Node* %typeNode) br label %if_block1 if_end: ; preds = %dumy_block, %if_block @@ -25933,21 +25752,21 @@ if_end: ; preds = %dumy_block, %if_blo if_block1: ; preds = %if_then %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v4, i32 30) - %7 = load %TokenType, %TokenType* %tmp.v4 + call void @ctor.313(%TokenType* %tmp.this4, i32 30) + %7 = load %TokenType, %TokenType* %tmp.this4 %8 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %6, %TokenType %7) br i1 %8, label %if_then2, label %if_end3 if_then2: ; preds = %if_block1 %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseExpr(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9, i1 false) - call void @"=.435"(%Node* %typeNode, %Node* %"$tmpC") + call void @"=.430"(%Node* %typeNode, %Node* %"$tmpC") br label %if_end3 if_end3: ; preds = %if_then2, %if_block1 %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v5, i32 35) - %11 = load %TokenType, %TokenType* %tmp.v5 + call void @ctor.313(%TokenType* %tmp.this5, i32 35) + %11 = load %TokenType, %TokenType* %tmp.this5 %12 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %10, %TokenType %11) %13 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseExpr(%Node* %range, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %13, i1 true) @@ -25959,19 +25778,18 @@ if_end3: ; preds = %if_then2, %if_block %18 = getelementptr inbounds %Token, %Token* %17, i32 0, i32 0 call void @copyEnd(%Location* %loc, %Location* %18) %19 = load %Node*, %Node** %res.addr - call void @asStringRef(%StringRef* %"$tmpC6", %String* %id) - %20 = load %StringRef, %StringRef* %"$tmpC6" + %20 = call %StringRef @asStringRef(%String* %id) %21 = load %Node, %Node* %typeNode %22 = load %Node, %Node* %range %23 = load %Node, %Node* %action %24 = call %Node @comp_parser_mkForStmt(%Location* %loc, %StringRef %20, %Node %21, %Node %22, %Node %23) store %Node %24, %Node* %"$tmpForRef" - call void @"=.435"(%Node* %19, %Node* %"$tmpForRef") - call void @dtor.229(%String* %id) + call void @"=.430"(%Node* %19, %Node* %"$tmpForRef") + call void @dtor.218(%String* %id) ret i1 true dumy_block: ; No predecessors! - call void @dtor.229(%String* %id) + call void @dtor.218(%String* %id) br label %if_end } @@ -25986,10 +25804,10 @@ define internal i1 @parseWhileStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowS %topLevel.addr = alloca i1 store i1 %topLevel, i1* %topLevel.addr %loc = alloca %Location - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %expr = alloca %Node %stepAction = alloca %Node - %tmp.v4 = alloca %TokenType + %tmp.this4 = alloca %TokenType %"$tmpC" = alloca %String %tmp.StringRef = alloca %StringRef %"$tmpC8" = alloca %Token @@ -26005,15 +25823,15 @@ code: ; preds = %0 if_block: ; preds = %code %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 19) - %3 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 19) + %3 = load %TokenType, %TokenType* %tmp.this %4 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, %TokenType %3) br i1 %4, label %if_then, label %if_end if_then: ; preds = %if_block %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseExpr(%Node* %expr, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i1 true) - call void @ctor.436(%Node* %stepAction) + call void @ctor.432(%Node* %stepAction) br label %if_block1 if_end: ; preds = %dumy_block, %if_block @@ -26021,8 +25839,8 @@ if_end: ; preds = %dumy_block, %if_blo if_block1: ; preds = %if_then %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v4, i32 31) - %7 = load %TokenType, %TokenType* %tmp.v4 + call void @ctor.313(%TokenType* %tmp.this4, i32 31) + %7 = load %TokenType, %TokenType* %tmp.this4 %8 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %6, %TokenType %7) br i1 %8, label %if_then2, label %if_end3 @@ -26043,7 +25861,7 @@ if_end3: ; preds = %if_end7, %if_block1 %17 = load %Node, %Node* %body %18 = call %Node @comp_parser_mkWhileStmt(%Location* %loc, %Node %15, %Node %16, %Node %17) store %Node %18, %Node* %"$tmpForRef" - call void @"=.435"(%Node* %14, %Node* %"$tmpForRef") + call void @"=.430"(%Node* %14, %Node* %"$tmpForRef") ret i1 true if_block5: ; preds = %if_then2 @@ -26061,7 +25879,7 @@ if_then6: ; preds = %cond.end %25 = load %StringRef, %StringRef* %tmp.StringRef %26 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %27 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %26, i32 0, i32 0 - call void @"pre_*.425"(%Token* %"$tmpC8", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %27) + call void @"pre_*.419"(%Token* %"$tmpC8", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %27) %28 = getelementptr inbounds %Token, %Token* %"$tmpC8", i32 0, i32 1 %29 = load %TokenType, %TokenType* %28 %30 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef9, i32 0, i32 0 @@ -26069,10 +25887,10 @@ if_then6: ; preds = %cond.end store i8* getelementptr inbounds ([42 x i8], [42 x i8]* @str.105, i32 0, i32 0), i8** %30 store i8* getelementptr inbounds ([42 x i8], [42 x i8]* @str.105, i32 0, i32 41), i8** %31 %32 = load %StringRef, %StringRef* %tmp.StringRef9 - call void @toString.474(%String* %"$tmpC", %StringRef %25, %TokenType %29, %StringRef %32) - call void @reportError.429(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %22, %String* %"$tmpC") - call void @dtor.229(%String* %"$tmpC") - call void @dtor.228(%Token* %"$tmpC8") + call void @toString.471(%String* %"$tmpC", %StringRef %25, %TokenType %29, %StringRef %32) + call void @reportError.423(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %22, %String* %"$tmpC") + call void @dtor.218(%String* %"$tmpC") + call void @dtor.217(%Token* %"$tmpC8") br label %if_end7 if_end7: ; preds = %if_then6, %cond.end @@ -26104,9 +25922,9 @@ define internal i1 @parseBreakStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowS store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %res.addr = alloca %Node* store %Node* %res, %Node** %res.addr - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %loc = alloca %Location - %tmp.v1 = alloca %TokenType + %tmp.this1 = alloca %TokenType %"$tmpForRef" = alloca %Node br label %code @@ -26115,8 +25933,8 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 10) - %2 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 10) + %2 = load %TokenType, %TokenType* %tmp.this %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_end @@ -26124,15 +25942,15 @@ if_then: ; preds = %if_block %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %5 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %4, i32 0, i32 1 %6 = getelementptr inbounds %Token, %Token* %5, i32 0, i32 0 - call void @ctor.177(%Location* %loc, %Location* %6) + call void @ctor.171(%Location* %loc, %Location* %6) %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v1, i32 31) - %8 = load %TokenType, %TokenType* %tmp.v1 + call void @ctor.313(%TokenType* %tmp.this1, i32 31) + %8 = load %TokenType, %TokenType* %tmp.this1 %9 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %7, %TokenType %8) %10 = load %Node*, %Node** %res.addr %11 = call %Node @comp_parser_mkBreakStmt(%Location* %loc) store %Node %11, %Node* %"$tmpForRef" - call void @"=.435"(%Node* %10, %Node* %"$tmpForRef") + call void @"=.430"(%Node* %10, %Node* %"$tmpForRef") ret i1 true if_end: ; preds = %dumy_block, %if_block @@ -26150,9 +25968,9 @@ define internal i1 @parseContinueStmt(%"SparrowParser[SparrowLayoutDecoder[Sparr store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %res.addr = alloca %Node* store %Node* %res, %Node** %res.addr - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %loc = alloca %Location - %tmp.v1 = alloca %TokenType + %tmp.this1 = alloca %TokenType %"$tmpForRef" = alloca %Node br label %code @@ -26161,8 +25979,8 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 12) - %2 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 12) + %2 = load %TokenType, %TokenType* %tmp.this %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_end @@ -26170,15 +25988,15 @@ if_then: ; preds = %if_block %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %5 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %4, i32 0, i32 1 %6 = getelementptr inbounds %Token, %Token* %5, i32 0, i32 0 - call void @ctor.177(%Location* %loc, %Location* %6) + call void @ctor.171(%Location* %loc, %Location* %6) %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v1, i32 31) - %8 = load %TokenType, %TokenType* %tmp.v1 + call void @ctor.313(%TokenType* %tmp.this1, i32 31) + %8 = load %TokenType, %TokenType* %tmp.this1 %9 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %7, %TokenType %8) %10 = load %Node*, %Node** %res.addr %11 = call %Node @comp_parser_mkContinueStmt(%Location* %loc) store %Node %11, %Node* %"$tmpForRef" - call void @"=.435"(%Node* %10, %Node* %"$tmpForRef") + call void @"=.430"(%Node* %10, %Node* %"$tmpForRef") ret i1 true if_end: ; preds = %dumy_block, %if_block @@ -26196,12 +26014,12 @@ define internal i1 @parseReturnStmt(%"SparrowParser[SparrowLayoutDecoder[Sparrow store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %res.addr = alloca %Node* store %Node* %res, %Node** %res.addr - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %loc = alloca %Location %expr = alloca %Node - %tmp.v3 = alloca %TokenType + %tmp.this3 = alloca %TokenType %"$tmpC" = alloca %Node - %tmp.v4 = alloca %TokenType + %tmp.this4 = alloca %TokenType %"$tmpForRef" = alloca %Node br label %code @@ -26210,8 +26028,8 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 16) - %2 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 16) + %2 = load %TokenType, %TokenType* %tmp.this %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_end @@ -26219,8 +26037,8 @@ if_then: ; preds = %if_block %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %5 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %4, i32 0, i32 1 %6 = getelementptr inbounds %Token, %Token* %5, i32 0, i32 0 - call void @ctor.177(%Location* %loc, %Location* %6) - call void @ctor.436(%Node* %expr) + call void @ctor.171(%Location* %loc, %Location* %6) + call void @ctor.432(%Node* %expr) br label %if_block1 if_end: ; preds = %dumy_block, %if_block @@ -26228,18 +26046,18 @@ if_end: ; preds = %dumy_block, %if_blo if_block1: ; preds = %if_then %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v3, i32 31) - %8 = load %TokenType, %TokenType* %tmp.v3 + call void @ctor.313(%TokenType* %tmp.this3, i32 31) + %8 = load %TokenType, %TokenType* %tmp.this3 %9 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %7, %TokenType %8) br i1 %9, label %if_end2, label %if_else if_else: ; preds = %if_block1 %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseExpr(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %10, i1 true) - call void @"=.435"(%Node* %expr, %Node* %"$tmpC") + call void @"=.430"(%Node* %expr, %Node* %"$tmpC") %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v4, i32 31) - %12 = load %TokenType, %TokenType* %tmp.v4 + call void @ctor.313(%TokenType* %tmp.this4, i32 31) + %12 = load %TokenType, %TokenType* %tmp.this4 %13 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11, %TokenType %12) br label %if_end2 @@ -26248,7 +26066,7 @@ if_end2: ; preds = %if_else, %if_block1 %15 = load %Node, %Node* %expr %16 = call %Node @comp_parser_mkReturnStmt(%Location* %loc, %Node %15) store %Node %16, %Node* %"$tmpForRef" - call void @"=.435"(%Node* %14, %Node* %"$tmpForRef") + call void @"=.430"(%Node* %14, %Node* %"$tmpForRef") ret i1 true dumy_block: ; No predecessors! @@ -26262,7 +26080,7 @@ declare %Node @comp_parser_mkModifiers(%Location*, %Node, %Node) declare %Node @comp_parser_mkModule(%Location*, %Node, %Node) ; Function Attrs: alwaysinline nounwind -define internal void @dtor.475(%Node* %this) #3 { +define internal void @dtor.472(%Node* %this) #3 { %this.addr = alloca %Node* store %Node* %this, %Node** %this.addr br label %code @@ -26293,23 +26111,23 @@ define internal void @parseExpression(%Node* sret %_result, %"SparrowParser[Spar %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr %res = alloca %Node - %tmp.v = alloca %TokenType - %tmp.v1 = alloca %TokenType + %tmp.this = alloca %TokenType + %tmp.this1 = alloca %TokenType br label %code code: ; preds = %0 %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr call void @parseExpr(%Node* %res, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, i1 true) %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v, i32 31) - %3 = load %TokenType, %TokenType* %tmp.v + call void @ctor.313(%TokenType* %tmp.this, i32 31) + %3 = load %TokenType, %TokenType* %tmp.this %4 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, %TokenType %3) %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.319(%TokenType* %tmp.v1, i32 0) - %6 = load %TokenType, %TokenType* %tmp.v1 + call void @ctor.313(%TokenType* %tmp.this1, i32 0) + %6 = load %TokenType, %TokenType* %tmp.this1 %7 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, %TokenType %6) %8 = load %Node*, %Node** %_result.addr - call void @ctor.434(%Node* %8, %Node* %res) + call void @ctor.428(%Node* %8, %Node* %res) ret void } @@ -26362,7 +26180,7 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.476(%LocString* %this) #3 { +define internal void @ctor.473(%LocString* %this) #3 { %this.addr = alloca %LocString* store %LocString* %this, %LocString** %this.addr br label %code @@ -26370,12 +26188,12 @@ define internal void @ctor.476(%LocString* %this) #3 { code: ; preds = %0 %1 = load %LocString*, %LocString** %this.addr %2 = getelementptr inbounds %LocString, %LocString* %1, i32 0, i32 0 - call void @ctor.477(%"Tuple[Location, String]"* %2) + call void @ctor.474(%"Tuple[Location, String]"* %2) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.477(%"Tuple[Location, String]"* %this) #3 { +define internal void @ctor.474(%"Tuple[Location, String]"* %this) #3 { %this.addr = alloca %"Tuple[Location, String]"* store %"Tuple[Location, String]"* %this, %"Tuple[Location, String]"** %this.addr br label %code @@ -26383,15 +26201,15 @@ define internal void @ctor.477(%"Tuple[Location, String]"* %this) #3 { code: ; preds = %0 %1 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %this.addr %2 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %1, i32 0, i32 0 - call void @ctor.155(%Location* %2) + call void @ctor.149(%Location* %2) %3 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %this.addr %4 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %3, i32 0, i32 1 - call void @ctor.164(%String* %4) + call void @ctor.158(%String* %4) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @"=.478"(%LocString* %this, %LocString* %other) #3 { +define internal void @"=.475"(%LocString* %this, %LocString* %other) #3 { %this.addr = alloca %LocString* store %LocString* %this, %LocString** %this.addr %other.addr = alloca %LocString* @@ -26403,12 +26221,12 @@ code: ; preds = %0 %2 = getelementptr inbounds %LocString, %LocString* %1, i32 0, i32 0 %3 = load %LocString*, %LocString** %other.addr %4 = getelementptr inbounds %LocString, %LocString* %3, i32 0, i32 0 - call void @"=.479"(%"Tuple[Location, String]"* %2, %"Tuple[Location, String]"* %4) + call void @"=.476"(%"Tuple[Location, String]"* %2, %"Tuple[Location, String]"* %4) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @"=.479"(%"Tuple[Location, String]"* %this, %"Tuple[Location, String]"* %other) #3 { +define internal void @"=.476"(%"Tuple[Location, String]"* %this, %"Tuple[Location, String]"* %other) #3 { %this.addr = alloca %"Tuple[Location, String]"* store %"Tuple[Location, String]"* %this, %"Tuple[Location, String]"** %this.addr %other.addr = alloca %"Tuple[Location, String]"* @@ -26420,17 +26238,17 @@ code: ; preds = %0 %2 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %1, i32 0, i32 0 %3 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %other.addr %4 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %3, i32 0, i32 0 - call void @"=.248"(%Location* %2, %Location* %4) + call void @"=.242"(%Location* %2, %Location* %4) %5 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %this.addr %6 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %5, i32 0, i32 1 %7 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %other.addr %8 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %7, i32 0, i32 1 - %9 = call %String* @"=.256"(%String* %6, %String* %8) + %9 = call %String* @"=.250"(%String* %6, %String* %8) ret void } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.480"(%LocString* %this, %LocString* %other) #3 { +define internal i1 @"==.477"(%LocString* %this, %LocString* %other) #3 { %this.addr = alloca %LocString* store %LocString* %this, %LocString** %this.addr %other.addr = alloca %LocString* @@ -26442,12 +26260,12 @@ code: ; preds = %0 %2 = getelementptr inbounds %LocString, %LocString* %1, i32 0, i32 0 %3 = load %LocString*, %LocString** %other.addr %4 = getelementptr inbounds %LocString, %LocString* %3, i32 0, i32 0 - %5 = call i1 @"==.481"(%"Tuple[Location, String]"* %2, %"Tuple[Location, String]"* %4) + %5 = call i1 @"==.478"(%"Tuple[Location, String]"* %2, %"Tuple[Location, String]"* %4) ret i1 %5 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.481"(%"Tuple[Location, String]"* %this, %"Tuple[Location, String]"* %other) #3 { +define internal i1 @"==.478"(%"Tuple[Location, String]"* %this, %"Tuple[Location, String]"* %other) #3 { %this.addr = alloca %"Tuple[Location, String]"* store %"Tuple[Location, String]"* %this, %"Tuple[Location, String]"** %this.addr %other.addr = alloca %"Tuple[Location, String]"* @@ -26459,7 +26277,7 @@ code: ; preds = %0 %2 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %1, i32 0, i32 0 %3 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %other.addr %4 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %3, i32 0, i32 0 - %5 = call i1 @"==.271"(%Location* %2, %Location* %4) + %5 = call i1 @"==.265"(%Location* %2, %Location* %4) br i1 %5, label %cond.true, label %cond.false cond.true: ; preds = %code @@ -26467,7 +26285,7 @@ cond.true: ; preds = %code %7 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %6, i32 0, i32 1 %8 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %other.addr %9 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %8, i32 0, i32 1 - %10 = call i1 @"==.280"(%String* %7, %String* %9) + %10 = call i1 @"==.274"(%String* %7, %String* %9) br label %cond.end cond.false: ; preds = %code @@ -26479,7 +26297,7 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.482(%Node* %this, %UntypedPtr %fdata) #3 { +define internal void @ctor.479(%Node* %this, %UntypedPtr %fdata) #3 { %this.addr = alloca %Node* store %Node* %this, %Node** %this.addr %fdata.addr = alloca %UntypedPtr @@ -26489,12 +26307,12 @@ define internal void @ctor.482(%Node* %this, %UntypedPtr %fdata) #3 { code: ; preds = %0 %1 = load %Node*, %Node** %this.addr %2 = getelementptr inbounds %Node, %Node* %1, i32 0, i32 0 - call void @ctor.65(%UntypedPtr* %2, %UntypedPtr* %fdata.addr) + call void @ctor.429(%UntypedPtr* %2, %UntypedPtr* %fdata.addr) ret void } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.483"(%Node* %this, %Node* %other) #3 { +define internal i1 @"==.480"(%Node* %this, %Node* %other) #3 { %this.addr = alloca %Node* store %Node* %this, %Node** %this.addr %other.addr = alloca %Node* @@ -26506,12 +26324,31 @@ code: ; preds = %0 %2 = getelementptr inbounds %Node, %Node* %1, i32 0, i32 0 %3 = load %Node*, %Node** %other.addr %4 = getelementptr inbounds %Node, %Node* %3, i32 0, i32 0 - %5 = call i1 @"==.68"(%UntypedPtr* %2, %UntypedPtr* %4) + %5 = call i1 @"==.481"(%UntypedPtr* %2, %UntypedPtr* %4) ret i1 %5 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.484(%LineCol* %this) #3 { +define internal i1 @"==.481"(%UntypedPtr* %this, %UntypedPtr* %other) #3 { + %this.addr = alloca %UntypedPtr* + store %UntypedPtr* %this, %UntypedPtr** %this.addr + %other.addr = alloca %UntypedPtr* + store %UntypedPtr* %other, %UntypedPtr** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %UntypedPtr*, %UntypedPtr** %this.addr + %2 = getelementptr inbounds %UntypedPtr, %UntypedPtr* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %UntypedPtr*, %UntypedPtr** %other.addr + %5 = getelementptr inbounds %UntypedPtr, %UntypedPtr* %4, i32 0, i32 0 + %6 = load i8*, i8** %5 + %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) + ret i1 %7 +} + +; Function Attrs: alwaysinline nounwind +define internal void @dtor.482(%LineCol* %this) #3 { %this.addr = alloca %LineCol* store %LineCol* %this, %LineCol** %this.addr br label %code @@ -26521,7 +26358,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.485(%SourceCode* %this, i8* %fdata) #3 { +define internal void @ctor.483(%SourceCode* %this, i8* %fdata) #3 { %this.addr = alloca %SourceCode* store %SourceCode* %this, %SourceCode** %this.addr %fdata.addr = alloca i8* @@ -26537,7 +26374,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.486(%SourceCode* %this) #3 { +define internal void @dtor.484(%SourceCode* %this) #3 { %this.addr = alloca %SourceCode* store %SourceCode* %this, %SourceCode** %this.addr br label %code @@ -26547,7 +26384,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.487(%Location* %this) #3 { +define internal void @dtor.485(%Location* %this) #3 { %this.addr = alloca %Location* store %Location* %this, %Location** %this.addr br label %code @@ -26568,7 +26405,7 @@ define internal void @mkLineCol(%LineCol* sret %_result, i32 %line, i32 %col) #4 br label %code code: ; preds = %0 - call void @ctor.157(%LineCol* %res) + call void @ctor.151(%LineCol* %res) %1 = load i32, i32* %line.addr %2 = getelementptr inbounds %LineCol, %LineCol* %res, i32 0, i32 0 store i32 %1, i32* %2 @@ -26576,7 +26413,7 @@ code: ; preds = %0 %4 = getelementptr inbounds %LineCol, %LineCol* %res, i32 0, i32 1 store i32 %3, i32* %4 %5 = load %LineCol*, %LineCol** %_result.addr - call void @ctor.179(%LineCol* %5, %LineCol* %res) + call void @ctor.173(%LineCol* %5, %LineCol* %res) ret void } @@ -26588,10 +26425,10 @@ define internal void @mkLocation(%Location* sret %_result) #4 { br label %code code: ; preds = %0 - call void @ctor.155(%Location* %res) + call void @ctor.149(%Location* %res) call void @setOne(%Location* %res) %1 = load %Location*, %Location** %_result.addr - call void @ctor.177(%Location* %1, %Location* %res) + call void @ctor.171(%Location* %1, %Location* %res) ret void } @@ -26599,33 +26436,33 @@ code: ; preds = %0 define internal void @setOne(%Location* %l) #4 { %l.addr = alloca %Location* store %Location* %l, %Location** %l.addr - %tmp.v = alloca i32 - %tmp.v1 = alloca i32 - %tmp.v2 = alloca i32 - %tmp.v3 = alloca i32 + %tmp.this = alloca i32 + %tmp.this1 = alloca i32 + %tmp.this2 = alloca i32 + %tmp.this3 = alloca i32 br label %code code: ; preds = %0 - store i32 1, i32* %tmp.v - %1 = load i32, i32* %tmp.v + store i32 1, i32* %tmp.this + %1 = load i32, i32* %tmp.this %2 = load %Location*, %Location** %l.addr %3 = getelementptr inbounds %Location, %Location* %2, i32 0, i32 1 %4 = getelementptr inbounds %LineCol, %LineCol* %3, i32 0, i32 0 store i32 %1, i32* %4 - store i32 1, i32* %tmp.v1 - %5 = load i32, i32* %tmp.v1 + store i32 1, i32* %tmp.this1 + %5 = load i32, i32* %tmp.this1 %6 = load %Location*, %Location** %l.addr %7 = getelementptr inbounds %Location, %Location* %6, i32 0, i32 1 %8 = getelementptr inbounds %LineCol, %LineCol* %7, i32 0, i32 1 store i32 %5, i32* %8 - store i32 1, i32* %tmp.v2 - %9 = load i32, i32* %tmp.v2 + store i32 1, i32* %tmp.this2 + %9 = load i32, i32* %tmp.this2 %10 = load %Location*, %Location** %l.addr %11 = getelementptr inbounds %Location, %Location* %10, i32 0, i32 2 %12 = getelementptr inbounds %LineCol, %LineCol* %11, i32 0, i32 0 store i32 %9, i32* %12 - store i32 1, i32* %tmp.v3 - %13 = load i32, i32* %tmp.v3 + store i32 1, i32* %tmp.this3 + %13 = load i32, i32* %tmp.this3 %14 = load %Location*, %Location** %l.addr %15 = getelementptr inbounds %Location, %Location* %14, i32 0, i32 2 %16 = getelementptr inbounds %LineCol, %LineCol* %15, i32 0, i32 1 @@ -26634,7 +26471,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @mkLocation.488(%Location* sret %_result, %SourceCode %sourceCode) #4 { +define internal void @mkLocation.486(%Location* sret %_result, %SourceCode %sourceCode) #4 { %_result.addr = alloca %Location* store %Location* %_result, %Location** %_result.addr %sourceCode.addr = alloca %SourceCode @@ -26643,17 +26480,17 @@ define internal void @mkLocation.488(%Location* sret %_result, %SourceCode %sour br label %code code: ; preds = %0 - call void @ctor.155(%Location* %res) + call void @ctor.149(%Location* %res) %1 = getelementptr inbounds %Location, %Location* %res, i32 0, i32 0 - call void @"=.249"(%SourceCode* %1, %SourceCode* %sourceCode.addr) + call void @"=.243"(%SourceCode* %1, %SourceCode* %sourceCode.addr) call void @setOne(%Location* %res) %2 = load %Location*, %Location** %_result.addr - call void @ctor.177(%Location* %2, %Location* %res) + call void @ctor.171(%Location* %2, %Location* %res) ret void } ; Function Attrs: inlinehint nounwind -define internal void @mkLocation.489(%Location* sret %_result, %SourceCode %sourceCode, %LineCol %start, %LineCol %end) #4 { +define internal void @mkLocation.487(%Location* sret %_result, %SourceCode %sourceCode, %LineCol %start, %LineCol %end) #4 { %_result.addr = alloca %Location* store %Location* %_result, %Location** %_result.addr %sourceCode.addr = alloca %SourceCode @@ -26666,15 +26503,15 @@ define internal void @mkLocation.489(%Location* sret %_result, %SourceCode %sour br label %code code: ; preds = %0 - call void @ctor.155(%Location* %res) + call void @ctor.149(%Location* %res) %1 = getelementptr inbounds %Location, %Location* %res, i32 0, i32 0 - call void @"=.249"(%SourceCode* %1, %SourceCode* %sourceCode.addr) + call void @"=.243"(%SourceCode* %1, %SourceCode* %sourceCode.addr) %2 = getelementptr inbounds %Location, %Location* %res, i32 0, i32 1 - call void @"=.250"(%LineCol* %2, %LineCol* %start.addr) + call void @"=.244"(%LineCol* %2, %LineCol* %start.addr) %3 = getelementptr inbounds %Location, %Location* %res, i32 0, i32 2 - call void @"=.250"(%LineCol* %3, %LineCol* %end.addr) + call void @"=.244"(%LineCol* %3, %LineCol* %end.addr) %4 = load %Location*, %Location** %_result.addr - call void @ctor.177(%Location* %4, %Location* %res) + call void @ctor.171(%Location* %4, %Location* %res) ret void } @@ -26691,7 +26528,7 @@ code: ; preds = %0 %2 = getelementptr inbounds %Location, %Location* %1, i32 0, i32 1 %3 = load %Location*, %Location** %other.addr %4 = getelementptr inbounds %Location, %Location* %3, i32 0, i32 1 - call void @"=.250"(%LineCol* %2, %LineCol* %4) + call void @"=.244"(%LineCol* %2, %LineCol* %4) ret void } @@ -26708,12 +26545,12 @@ code: ; preds = %0 %2 = getelementptr inbounds %Location, %Location* %1, i32 0, i32 1 %3 = load %Location*, %Location** %other.addr %4 = getelementptr inbounds %Location, %Location* %3, i32 0, i32 1 - call void @"=.250"(%LineCol* %2, %LineCol* %4) + call void @"=.244"(%LineCol* %2, %LineCol* %4) %5 = load %Location*, %Location** %l.addr %6 = getelementptr inbounds %Location, %Location* %5, i32 0, i32 2 %7 = load %Location*, %Location** %other.addr %8 = getelementptr inbounds %Location, %Location* %7, i32 0, i32 1 - call void @"=.250"(%LineCol* %6, %LineCol* %8) + call void @"=.244"(%LineCol* %6, %LineCol* %8) ret void } @@ -26730,12 +26567,12 @@ code: ; preds = %0 %2 = getelementptr inbounds %Location, %Location* %1, i32 0, i32 1 %3 = load %Location*, %Location** %other.addr %4 = getelementptr inbounds %Location, %Location* %3, i32 0, i32 2 - call void @"=.250"(%LineCol* %2, %LineCol* %4) + call void @"=.244"(%LineCol* %2, %LineCol* %4) %5 = load %Location*, %Location** %l.addr %6 = getelementptr inbounds %Location, %Location* %5, i32 0, i32 2 %7 = load %Location*, %Location** %other.addr %8 = getelementptr inbounds %Location, %Location* %7, i32 0, i32 2 - call void @"=.250"(%LineCol* %6, %LineCol* %8) + call void @"=.244"(%LineCol* %6, %LineCol* %8) ret void } @@ -26886,138 +26723,8 @@ dumy_block20: ; No predecessors! br label %if_end19 } -; Function Attrs: alwaysinline nounwind -define internal void @ctor.490(%String* %this) #3 { - %this.addr = alloca %String* - store %String* %this, %String** %this.addr - br label %code - -code: ; preds = %0 - %1 = load %String*, %String** %this.addr - %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 0 - call void @ctor.161(%"RawPtr[Char]"* %2) - %3 = load %String*, %String** %this.addr - %4 = getelementptr inbounds %String, %String* %3, i32 0, i32 1 - call void @ctor.161(%"RawPtr[Char]"* %4) - %5 = load %String*, %String** %this.addr - %6 = getelementptr inbounds %String, %String* %5, i32 0, i32 2 - call void @ctor.161(%"RawPtr[Char]"* %6) - ret void -} - -; Function Attrs: alwaysinline nounwind -define internal void @ctor.491(%String* %this, %String* %other) #3 { - %this.addr = alloca %String* - store %String* %this, %String** %this.addr - %other.addr = alloca %String* - store %String* %other, %String** %other.addr - br label %code - -code: ; preds = %0 - %1 = load %String*, %String** %this.addr - %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 0 - %3 = load %String*, %String** %other.addr - %4 = getelementptr inbounds %String, %String* %3, i32 0, i32 0 - call void @ctor.187(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) - %5 = load %String*, %String** %this.addr - %6 = getelementptr inbounds %String, %String* %5, i32 0, i32 1 - %7 = load %String*, %String** %other.addr - %8 = getelementptr inbounds %String, %String* %7, i32 0, i32 1 - call void @ctor.187(%"RawPtr[Char]"* %6, %"RawPtr[Char]"* %8) - %9 = load %String*, %String** %this.addr - %10 = getelementptr inbounds %String, %String* %9, i32 0, i32 2 - %11 = load %String*, %String** %other.addr - %12 = getelementptr inbounds %String, %String* %11, i32 0, i32 2 - call void @ctor.187(%"RawPtr[Char]"* %10, %"RawPtr[Char]"* %12) - ret void -} - -; Function Attrs: alwaysinline nounwind -define internal void @dtor.492(%String* %this) #3 { - %this.addr = alloca %String* - store %String* %this, %String** %this.addr - br label %code - -code: ; preds = %0 - ret void -} - -; Function Attrs: alwaysinline nounwind -define internal void @"=.493"(%String* %this, %String* %other) #3 { - %this.addr = alloca %String* - store %String* %this, %String** %this.addr - %other.addr = alloca %String* - store %String* %other, %String** %other.addr - br label %code - -code: ; preds = %0 - %1 = load %String*, %String** %this.addr - %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 0 - %3 = load %String*, %String** %other.addr - %4 = getelementptr inbounds %String, %String* %3, i32 0, i32 0 - call void @"=.184"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) - %5 = load %String*, %String** %this.addr - %6 = getelementptr inbounds %String, %String* %5, i32 0, i32 1 - %7 = load %String*, %String** %other.addr - %8 = getelementptr inbounds %String, %String* %7, i32 0, i32 1 - call void @"=.184"(%"RawPtr[Char]"* %6, %"RawPtr[Char]"* %8) - %9 = load %String*, %String** %this.addr - %10 = getelementptr inbounds %String, %String* %9, i32 0, i32 2 - %11 = load %String*, %String** %other.addr - %12 = getelementptr inbounds %String, %String* %11, i32 0, i32 2 - call void @"=.184"(%"RawPtr[Char]"* %10, %"RawPtr[Char]"* %12) - ret void -} - -; Function Attrs: alwaysinline nounwind -define internal i1 @"==.494"(%String* %this, %String* %other) #3 { - %this.addr = alloca %String* - store %String* %this, %String** %this.addr - %other.addr = alloca %String* - store %String* %other, %String** %other.addr - br label %code - -code: ; preds = %0 - %1 = load %String*, %String** %this.addr - %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 0 - %3 = load %String*, %String** %other.addr - %4 = getelementptr inbounds %String, %String* %3, i32 0, i32 0 - %5 = call i1 @"==.188"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) - br i1 %5, label %cond.true1, label %cond.false2 - -cond.true: ; preds = %cond.end3 - %6 = load %String*, %String** %this.addr - %7 = getelementptr inbounds %String, %String* %6, i32 0, i32 2 - %8 = load %String*, %String** %other.addr - %9 = getelementptr inbounds %String, %String* %8, i32 0, i32 2 - %10 = call i1 @"==.188"(%"RawPtr[Char]"* %7, %"RawPtr[Char]"* %9) - br label %cond.end - -cond.false: ; preds = %cond.end3 - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond.res4 = phi i1 [ %10, %cond.true ], [ false, %cond.false ] - ret i1 %cond.res4 - -cond.true1: ; preds = %code - %11 = load %String*, %String** %this.addr - %12 = getelementptr inbounds %String, %String* %11, i32 0, i32 1 - %13 = load %String*, %String** %other.addr - %14 = getelementptr inbounds %String, %String* %13, i32 0, i32 1 - %15 = call i1 @"==.188"(%"RawPtr[Char]"* %12, %"RawPtr[Char]"* %14) - br label %cond.end3 - -cond.false2: ; preds = %code - br label %cond.end3 - -cond.end3: ; preds = %cond.false2, %cond.true1 - %cond.res = phi i1 [ %15, %cond.true1 ], [ false, %cond.false2 ] - br i1 %cond.res, label %cond.true, label %cond.false -} - ; Function Attrs: inlinehint nounwind -define internal void @ctor.495(%String* %this, i64 %count, i8 %ch) #4 { +define internal void @ctor.488(%String* %this, i64 %count, i8 %ch) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr %count.addr = alloca i64 @@ -27029,7 +26736,7 @@ define internal void @ctor.495(%String* %this, i64 %count, i8 %ch) #4 { code: ; preds = %0 %1 = load %String*, %String** %this.addr %2 = load i64, i64* %count.addr - call void @ctor.194(%String* %1, i64 %2) + call void @ctor.186(%String* %1, i64 %2) %3 = load %String*, %String** %this.addr %4 = getelementptr inbounds %String, %String* %3, i32 0, i32 0 %5 = load %"RawPtr[Char]", %"RawPtr[Char]"* %4 @@ -27041,7 +26748,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @ctor.496(%String* %this, %"RawPtr[Char]" %_begin, %"RawPtr[Char]" %_end) #4 { +define internal void @ctor.489(%String* %this, %"RawPtr[Char]" %_begin, %"RawPtr[Char]" %_end) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr %_begin.addr = alloca %"RawPtr[Char]" @@ -27049,8 +26756,8 @@ define internal void @ctor.496(%String* %this, %"RawPtr[Char]" %_begin, %"RawPtr %_end.addr = alloca %"RawPtr[Char]" store %"RawPtr[Char]" %_end, %"RawPtr[Char]"* %_end.addr %size = alloca i64 - %tmp.v = alloca i64 - %tmp.v1 = alloca i64 + %tmp.this = alloca i64 + %tmp.this1 = alloca i64 br label %code code: ; preds = %0 @@ -27060,9 +26767,9 @@ code: ; preds = %0 store i64 %3, i64* %size %4 = load %String*, %String** %this.addr %5 = load i64, i64* %size - store i64 %5, i64* %tmp.v - %6 = load i64, i64* %tmp.v - call void @ctor.194(%String* %4, i64 %6) + store i64 %5, i64* %tmp.this + %6 = load i64, i64* %tmp.this + call void @ctor.186(%String* %4, i64 %6) %7 = load %String*, %String** %this.addr %8 = getelementptr inbounds %String, %String* %7, i32 0, i32 0 %9 = load %"RawPtr[Char]", %"RawPtr[Char]"* %8 @@ -27070,8 +26777,8 @@ code: ; preds = %0 %11 = load %"RawPtr[Char]", %"RawPtr[Char]"* %_begin.addr %12 = call i8* @bytePtr(%"RawPtr[Char]" %11) %13 = load i64, i64* %size - store i64 %13, i64* %tmp.v1 - %14 = load i64, i64* %tmp.v1 + store i64 %13, i64* %tmp.this1 + %14 = load i64, i64* %tmp.this1 call void @_spr_memcpy(i8* %10, i8* %12, i64 %14) ret void } @@ -27087,19 +26794,19 @@ define internal i1 @"!="(%String* %this, %String* %other) #4 { code: ; preds = %0 %1 = load %String*, %String** %this.addr %2 = load %String*, %String** %other.addr - %3 = call i1 @"==.280"(%String* %1, %String* %2) + %3 = call i1 @"==.274"(%String* %1, %String* %2) %4 = xor i1 true, %3 ret i1 %4 } ; Function Attrs: inlinehint nounwind -define internal i8* @at.497(%String* %this, i64 %index) #4 { +define internal i8* @at.490(%String* %this, i64 %index) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr %index.addr = alloca i64 store i64 %index, i64* %index.addr %"$tmpC" = alloca %"RawPtr[Char]" - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -27107,16 +26814,16 @@ code: ; preds = %0 %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 0 %3 = load %"RawPtr[Char]", %"RawPtr[Char]"* %2 %4 = load i64, i64* %index.addr - store i64 %4, i64* %tmp.v - %5 = load i64, i64* %tmp.v - call void @advance.195(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %3, i64 %5) + store i64 %4, i64* %tmp.this + %5 = load i64, i64* %tmp.this + call void @advance.187(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %3, i64 %5) %6 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC" %7 = call i8* @value(%"RawPtr[Char]" %6) ret i8* %7 } ; Function Attrs: inlinehint nounwind -define internal i8* @front.498(%String* %this) #4 { +define internal i8* @front.491(%String* %this) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr br label %code @@ -27130,65 +26837,64 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i8* @back.499(%String* %this) #4 { +define internal i8* @back.492(%String* %this) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr %"$tmpC" = alloca %"RawPtr[Char]" - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 %1 = load %String*, %String** %this.addr %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 1 %3 = load %"RawPtr[Char]", %"RawPtr[Char]"* %2 - store i64 -1, i64* %tmp.v - %4 = load i64, i64* %tmp.v - call void @advance.195(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %3, i64 %4) + store i64 -1, i64* %tmp.this + %4 = load i64, i64* %tmp.this + call void @advance.187(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %3, i64 %4) %5 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC" %6 = call i8* @value(%"RawPtr[Char]" %5) ret i8* %6 } ; Function Attrs: inlinehint nounwind -define internal void @subrange(%StringRef* sret %_result, %String* %this, i64 %index, i64 %num) #4 { - %_result.addr = alloca %StringRef* - store %StringRef* %_result, %StringRef** %_result.addr +define internal %StringRef @subrange(%String* %this, i64 %index, i64 %num) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr %index.addr = alloca i64 store i64 %index, i64* %index.addr %num.addr = alloca i64 store i64 %num, i64* %num.addr + %tmp.this = alloca %StringRef %"$tmpC" = alloca %"RawPtr[Char]" - %tmp.v = alloca i64 - %"$tmpC1" = alloca %"RawPtr[Char]" - %tmp.v2 = alloca i64 + %tmp.this1 = alloca i64 + %"$tmpC2" = alloca %"RawPtr[Char]" + %tmp.this3 = alloca i64 br label %code code: ; preds = %0 - %1 = load %StringRef*, %StringRef** %_result.addr - %2 = load %String*, %String** %this.addr - %3 = getelementptr inbounds %String, %String* %2, i32 0, i32 0 - %4 = load %"RawPtr[Char]", %"RawPtr[Char]"* %3 - %5 = load i64, i64* %index.addr - store i64 %5, i64* %tmp.v - %6 = load i64, i64* %tmp.v - call void @advance.195(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %4, i64 %6) - %7 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC" - %8 = call i8* @bytePtr(%"RawPtr[Char]" %7) - %9 = load %String*, %String** %this.addr - %10 = getelementptr inbounds %String, %String* %9, i32 0, i32 0 - %11 = load %"RawPtr[Char]", %"RawPtr[Char]"* %10 - %12 = load i64, i64* %index.addr - %13 = load i64, i64* %num.addr - %14 = add i64 %12, %13 - store i64 %14, i64* %tmp.v2 - %15 = load i64, i64* %tmp.v2 - call void @advance.195(%"RawPtr[Char]"* %"$tmpC1", %"RawPtr[Char]" %11, i64 %15) - %16 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC1" - %17 = call i8* @bytePtr(%"RawPtr[Char]" %16) - call void @ctor.57(%StringRef* %1, i8* %8, i8* %17) - ret void + %1 = load %String*, %String** %this.addr + %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 0 + %3 = load %"RawPtr[Char]", %"RawPtr[Char]"* %2 + %4 = load i64, i64* %index.addr + store i64 %4, i64* %tmp.this1 + %5 = load i64, i64* %tmp.this1 + call void @advance.187(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %3, i64 %5) + %6 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC" + %7 = call i8* @bytePtr(%"RawPtr[Char]" %6) + %8 = load %String*, %String** %this.addr + %9 = getelementptr inbounds %String, %String* %8, i32 0, i32 0 + %10 = load %"RawPtr[Char]", %"RawPtr[Char]"* %9 + %11 = load i64, i64* %index.addr + %12 = load i64, i64* %num.addr + %13 = add i64 %11, %12 + store i64 %13, i64* %tmp.this3 + %14 = load i64, i64* %tmp.this3 + call void @advance.187(%"RawPtr[Char]"* %"$tmpC2", %"RawPtr[Char]" %10, i64 %14) + %15 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC2" + %16 = call i8* @bytePtr(%"RawPtr[Char]" %15) + call void @ctor.57(%StringRef* %tmp.this, i8* %7, i8* %16) + %17 = load %StringRef, %StringRef* %tmp.this + ret %StringRef %17 } ; Function Attrs: inlinehint nounwind @@ -27199,17 +26905,17 @@ define internal void @resize(%String* %this, i64 %n) #4 { store i64 %n, i64* %n.addr %oldSize = alloca i64 %newEnd = alloca %"RawPtr[Char]" - %tmp.v = alloca i64 + %tmp.this = alloca i64 %"$tmpC" = alloca %"RawPtr[Char]" - %tmp.v4 = alloca i64 + %tmp.this4 = alloca i64 %newEnd5 = alloca %"RawPtr[Char]" - %tmp.v6 = alloca i64 + %tmp.this6 = alloca i64 %"$tmpC11" = alloca %"RawPtr[Char]" br label %code code: ; preds = %0 %1 = load %String*, %String** %this.addr - %2 = call i64 @size.193(%String* %1) + %2 = call i64 @size.185(%String* %1) store i64 %2, i64* %oldSize br label %if_block @@ -27239,9 +26945,9 @@ if_then2: ; preds = %if_block1 %10 = getelementptr inbounds %String, %String* %9, i32 0, i32 0 %11 = load %"RawPtr[Char]", %"RawPtr[Char]"* %10 %12 = load i64, i64* %n.addr - store i64 %12, i64* %tmp.v - %13 = load i64, i64* %tmp.v - call void @advance.195(%"RawPtr[Char]"* %newEnd, %"RawPtr[Char]" %11, i64 %13) + store i64 %12, i64* %tmp.this + %13 = load i64, i64* %tmp.this + call void @advance.187(%"RawPtr[Char]"* %newEnd, %"RawPtr[Char]" %11, i64 %13) br label %while_block if_else: ; preds = %if_block1 @@ -27252,9 +26958,9 @@ if_else: ; preds = %if_block1 %17 = getelementptr inbounds %String, %String* %16, i32 0, i32 0 %18 = load %"RawPtr[Char]", %"RawPtr[Char]"* %17 %19 = load i64, i64* %n.addr - store i64 %19, i64* %tmp.v6 - %20 = load i64, i64* %tmp.v6 - call void @advance.195(%"RawPtr[Char]"* %newEnd5, %"RawPtr[Char]" %18, i64 %20) + store i64 %19, i64* %tmp.this6 + %20 = load i64, i64* %tmp.this6 + call void @advance.187(%"RawPtr[Char]"* %newEnd5, %"RawPtr[Char]" %18, i64 %20) br label %while_block7 if_end3: ; preds = %while_end10, %while_end @@ -27263,7 +26969,7 @@ if_end3: ; preds = %while_end10, %while while_block: ; preds = %while_step, %if_then2 %21 = load %String*, %String** %this.addr %22 = getelementptr inbounds %String, %String* %21, i32 0, i32 1 - %23 = call i1 @"==.188"(%"RawPtr[Char]"* %22, %"RawPtr[Char]"* %newEnd) + %23 = call i1 @"==.225"(%"RawPtr[Char]"* %22, %"RawPtr[Char]"* %newEnd) %24 = xor i1 true, %23 br i1 %24, label %while_body, label %while_end @@ -27273,10 +26979,10 @@ while_body: ; preds = %while_block %27 = load %String*, %String** %this.addr %28 = getelementptr inbounds %String, %String* %27, i32 0, i32 1 %29 = load %"RawPtr[Char]", %"RawPtr[Char]"* %28 - store i64 -1, i64* %tmp.v4 - %30 = load i64, i64* %tmp.v4 - call void @advance.195(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %29, i64 %30) - call void @"=.184"(%"RawPtr[Char]"* %26, %"RawPtr[Char]"* %"$tmpC") + store i64 -1, i64* %tmp.this4 + %30 = load i64, i64* %tmp.this4 + call void @advance.187(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %29, i64 %30) + call void @"=.178"(%"RawPtr[Char]"* %26, %"RawPtr[Char]"* %"$tmpC") %31 = load %String*, %String** %this.addr %32 = getelementptr inbounds %String, %String* %31, i32 0, i32 1 %33 = load %"RawPtr[Char]", %"RawPtr[Char]"* %32 @@ -27293,7 +26999,7 @@ while_end: ; preds = %while_block while_block7: ; preds = %while_step9, %if_else %36 = load %String*, %String** %this.addr %37 = getelementptr inbounds %String, %String* %36, i32 0, i32 1 - %38 = call i1 @"==.188"(%"RawPtr[Char]"* %37, %"RawPtr[Char]"* %newEnd5) + %38 = call i1 @"==.225"(%"RawPtr[Char]"* %37, %"RawPtr[Char]"* %newEnd5) %39 = xor i1 true, %38 br i1 %39, label %while_body8, label %while_end10 @@ -27308,8 +27014,8 @@ while_body8: ; preds = %while_block7 %46 = load %String*, %String** %this.addr %47 = getelementptr inbounds %String, %String* %46, i32 0, i32 1 %48 = load %"RawPtr[Char]", %"RawPtr[Char]"* %47 - call void @advance.189(%"RawPtr[Char]"* %"$tmpC11", %"RawPtr[Char]" %48) - call void @"=.184"(%"RawPtr[Char]"* %45, %"RawPtr[Char]"* %"$tmpC11") + call void @advance.226(%"RawPtr[Char]"* %"$tmpC11", %"RawPtr[Char]" %48) + call void @"=.178"(%"RawPtr[Char]"* %45, %"RawPtr[Char]"* %"$tmpC11") br label %while_step9 while_step9: ; preds = %while_body8 @@ -27327,7 +27033,7 @@ define internal void @insertAfter(%String* %this, i8 %value, %StringRef %pos) #4 store i8 %value, i8* %value.addr %pos.addr = alloca %StringRef store %StringRef %pos, %StringRef* %pos.addr - %tmp.v = alloca %StringRef + %tmp.this = alloca %StringRef %"$tmpC" = alloca %"RawPtr[Char]" br label %code @@ -27342,9 +27048,9 @@ code: ; preds = %0 %7 = getelementptr inbounds %String, %String* %6, i32 0, i32 1 %8 = load %"RawPtr[Char]", %"RawPtr[Char]"* %7 %9 = call i8* @bytePtr(%"RawPtr[Char]" %8) - call void @ctor.57(%StringRef* %tmp.v, i8* %5, i8* %9) - %10 = load %StringRef, %StringRef* %tmp.v - call void @insertBefore.382(%String* %1, i8 %2, %StringRef %10) + call void @ctor.57(%StringRef* %tmp.this, i8* %5, i8* %9) + %10 = load %StringRef, %StringRef* %tmp.this + call void @insertBefore.376(%String* %1, i8 %2, %StringRef %10) ret void } @@ -27360,41 +27066,42 @@ code: ; preds = %0 %1 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %_result.addr %2 = getelementptr inbounds %StringRef, %StringRef* %s.addr, i32 0, i32 1 %3 = load i8*, i8** %2 - call void @ctor.186(%"RawPtr[Char]"* %1, i8* %3) + call void @ctor.180(%"RawPtr[Char]"* %1, i8* %3) ret void } ; Function Attrs: inlinehint nounwind -define internal void @remove.500(%String* %this, i64 %index) #4 { +define internal void @remove.493(%String* %this, i64 %index) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr %index.addr = alloca i64 store i64 %index, i64* %index.addr %r = alloca %StringRef - %tmp.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 %1 = load %String*, %String** %this.addr - call void @all.385(%StringRef* %r, %String* %1) - %2 = load i64, i64* %index.addr - call void @popFront.60(%StringRef* %r, i64 %2) - %3 = load %String*, %String** %this.addr - %4 = call i64 @size.193(%String* %3) - %5 = load i64, i64* %index.addr - %6 = call i64 @_SizeType_opMinus(i64 %4, i64 %5) - store i64 1, i64* %tmp.v - %7 = load i64, i64* %tmp.v - %8 = call i64 @_SizeType_opMinus(i64 %6, i64 %7) - call void @popBack.61(%StringRef* %r, i64 %8) - %9 = load %String*, %String** %this.addr - %10 = load %StringRef, %StringRef* %r - call void @remove(%String* %9, %StringRef %10) + %2 = call %StringRef @all.379(%String* %1) + call void @ctor.56(%StringRef* %r, %StringRef %2) + %3 = load i64, i64* %index.addr + call void @popFront.60(%StringRef* %r, i64 %3) + %4 = load %String*, %String** %this.addr + %5 = call i64 @size.185(%String* %4) + %6 = load i64, i64* %index.addr + %7 = call i64 @_SizeType_opMinus(i64 %5, i64 %6) + store i64 1, i64* %tmp.this + %8 = load i64, i64* %tmp.this + %9 = call i64 @_SizeType_opMinus(i64 %7, i64 %8) + call void @popBack.61(%StringRef* %r, i64 %9) + %10 = load %String*, %String** %this.addr + %11 = load %StringRef, %StringRef* %r + call void @remove(%String* %10, %StringRef %11) ret void } ; Function Attrs: inlinehint nounwind -define internal void @"+.501"(%String* sret %_result, %String %x, %String %y) #4 { +define internal void @"+.494"(%String* sret %_result, %String %x, %String %y) #4 { %_result.addr = alloca %String* store %String* %_result, %String** %_result.addr %x.addr = alloca %String @@ -27408,14 +27115,14 @@ define internal void @"+.501"(%String* sret %_result, %String %x, %String %y) #4 br label %code code: ; preds = %0 - %1 = call i64 @size.193(%String* %x.addr) + %1 = call i64 @size.185(%String* %x.addr) store i64 %1, i64* %sz1 - %2 = call i64 @size.193(%String* %y.addr) + %2 = call i64 @size.185(%String* %y.addr) store i64 %2, i64* %sz2 %3 = load i64, i64* %sz1 %4 = load i64, i64* %sz2 %5 = add i64 %3, %4 - call void @ctor.194(%String* %res, i64 %5) + call void @ctor.186(%String* %res, i64 %5) %6 = getelementptr inbounds %String, %String* %res, i32 0, i32 0 %7 = load %"RawPtr[Char]", %"RawPtr[Char]"* %6 %8 = call i8* @bytePtr(%"RawPtr[Char]" %7) @@ -27436,17 +27143,17 @@ code: ; preds = %0 %21 = load i64, i64* %sz2 call void @_spr_memcpy(i8* %17, i8* %20, i64 %21) %22 = load %String*, %String** %_result.addr - call void @ctor.192(%String* %22, %String* %res) - call void @dtor.229(%String* %res) + call void @ctor.184(%String* %22, %String* %res) + call void @dtor.218(%String* %res) ret void dumy_block: ; No predecessors! - call void @dtor.229(%String* %res) + call void @dtor.218(%String* %res) ret void } ; Function Attrs: inlinehint nounwind -define internal void @"+.502"(%String* sret %_result, %String %x, %StringRef %y) #4 { +define internal void @"+.495"(%String* sret %_result, %String %x, %StringRef %y) #4 { %_result.addr = alloca %String* store %String* %_result, %String** %_result.addr %x.addr = alloca %String @@ -27460,14 +27167,14 @@ define internal void @"+.502"(%String* sret %_result, %String %x, %StringRef %y) br label %code code: ; preds = %0 - %1 = call i64 @size.193(%String* %x.addr) + %1 = call i64 @size.185(%String* %x.addr) store i64 %1, i64* %sz1 %2 = call i64 @size(%StringRef* %y.addr) store i64 %2, i64* %sz2 %3 = load i64, i64* %sz1 %4 = load i64, i64* %sz2 %5 = add i64 %3, %4 - call void @ctor.194(%String* %res, i64 %5) + call void @ctor.186(%String* %res, i64 %5) %6 = getelementptr inbounds %String, %String* %res, i32 0, i32 0 %7 = load %"RawPtr[Char]", %"RawPtr[Char]"* %6 %8 = call i8* @bytePtr(%"RawPtr[Char]" %7) @@ -27487,17 +27194,17 @@ code: ; preds = %0 %20 = load i64, i64* %sz2 call void @_spr_memcpy(i8* %17, i8* %19, i64 %20) %21 = load %String*, %String** %_result.addr - call void @ctor.192(%String* %21, %String* %res) - call void @dtor.229(%String* %res) + call void @ctor.184(%String* %21, %String* %res) + call void @dtor.218(%String* %res) ret void dumy_block: ; No predecessors! - call void @dtor.229(%String* %res) + call void @dtor.218(%String* %res) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.503(%StringOutputStream* %this, %StringOutputStream* %other) #3 { +define internal void @ctor.496(%StringOutputStream* %this, %StringOutputStream* %other) #3 { %this.addr = alloca %StringOutputStream* store %StringOutputStream* %this, %StringOutputStream** %this.addr %other.addr = alloca %StringOutputStream* @@ -27509,12 +27216,12 @@ code: ; preds = %0 %2 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %1, i32 0, i32 0 %3 = load %StringOutputStream*, %StringOutputStream** %other.addr %4 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %3, i32 0, i32 0 - call void @ctor.192(%String* %2, %String* %4) + call void @ctor.184(%String* %2, %String* %4) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @"=.504"(%StringOutputStream* %this, %StringOutputStream* %other) #3 { +define internal void @"=.497"(%StringOutputStream* %this, %StringOutputStream* %other) #3 { %this.addr = alloca %StringOutputStream* store %StringOutputStream* %this, %StringOutputStream** %this.addr %other.addr = alloca %StringOutputStream* @@ -27526,12 +27233,12 @@ code: ; preds = %0 %2 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %1, i32 0, i32 0 %3 = load %StringOutputStream*, %StringOutputStream** %other.addr %4 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %3, i32 0, i32 0 - %5 = call %String* @"=.256"(%String* %2, %String* %4) + %5 = call %String* @"=.250"(%String* %2, %String* %4) ret void } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.505"(%StringOutputStream* %this, %StringOutputStream* %other) #3 { +define internal i1 @"==.498"(%StringOutputStream* %this, %StringOutputStream* %other) #3 { %this.addr = alloca %StringOutputStream* store %StringOutputStream* %this, %StringOutputStream** %this.addr %other.addr = alloca %StringOutputStream* @@ -27543,38 +27250,35 @@ code: ; preds = %0 %2 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %1, i32 0, i32 0 %3 = load %StringOutputStream*, %StringOutputStream** %other.addr %4 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %3, i32 0, i32 0 - %5 = call i1 @"==.280"(%String* %2, %String* %4) + %5 = call i1 @"==.274"(%String* %2, %String* %4) ret i1 %5 } ; Function Attrs: alwaysinline nounwind -define internal void @"<<<.506"(%StringOutputStream* %this, %String* %s) #3 { +define internal void @"<<<.499"(%StringOutputStream* %this, %String* %s) #3 { %this.addr = alloca %StringOutputStream* store %StringOutputStream* %this, %StringOutputStream** %this.addr %s.addr = alloca %String* store %String* %s, %String** %s.addr - %"$tmpC" = alloca %StringRef br label %code code: ; preds = %0 %1 = load %StringOutputStream*, %StringOutputStream** %this.addr %2 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %1, i32 0, i32 0 %3 = load %String*, %String** %s.addr - call void @all.385(%StringRef* %"$tmpC", %String* %3) - %4 = load %StringRef, %StringRef* %"$tmpC" + %4 = call %StringRef @all.379(%String* %3) call void @append(%String* %2, %StringRef %4) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @"<<<.507"(%StringOutputStream* %this, double %x) #3 { +define internal void @"<<<.500"(%StringOutputStream* %this, double %x) #3 { %this.addr = alloca %StringOutputStream* store %StringOutputStream* %this, %StringOutputStream** %this.addr %x.addr = alloca double store double %x, double* %x.addr - %"$tmpC" = alloca %StringRef - %"$tmpC1" = alloca %String - %tmp.v = alloca i64 + %"$tmpC" = alloca %String + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -27582,30 +27286,29 @@ code: ; preds = %0 %2 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %1, i32 0, i32 0 %3 = load double, double* %x.addr %4 = fptoui double %3 to i64 - store i64 %4, i64* %tmp.v - %5 = load i64, i64* %tmp.v - call void @ulongToString(%String* %"$tmpC1", i64 %5) - call void @all.385(%StringRef* %"$tmpC", %String* %"$tmpC1") - %6 = load %StringRef, %StringRef* %"$tmpC" + store i64 %4, i64* %tmp.this + %5 = load i64, i64* %tmp.this + call void @ulongToString(%String* %"$tmpC", i64 %5) + %6 = call %StringRef @all.379(%String* %"$tmpC") call void @append(%String* %2, %StringRef %6) - call void @dtor.229(%String* %"$tmpC1") + call void @dtor.218(%String* %"$tmpC") ret void } ; Function Attrs: inlinehint nounwind -define internal void @toString.508(%String* sret %_result) #4 { +define internal void @toString.501(%String* sret %_result) #4 { %_result.addr = alloca %String* store %String* %_result, %String** %_result.addr br label %code code: ; preds = %0 %1 = load %String*, %String** %_result.addr - call void @ctor.164(%String* %1) + call void @ctor.158(%String* %1) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.509(%"ContiguousMemoryRange[LocString]"* %this) #3 { +define internal void @ctor.502(%"ContiguousMemoryRange[LocString]"* %this) #3 { %this.addr = alloca %"ContiguousMemoryRange[LocString]"* store %"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"** %this.addr br label %code @@ -27613,15 +27316,15 @@ define internal void @ctor.509(%"ContiguousMemoryRange[LocString]"* %this) #3 { code: ; preds = %0 %1 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %this.addr %2 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %1, i32 0, i32 0 - call void @ctor.440(%"RawPtr[LocString]"* %2) + call void @ctor.437(%"RawPtr[LocString]"* %2) %3 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %this.addr %4 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %3, i32 0, i32 1 - call void @ctor.440(%"RawPtr[LocString]"* %4) + call void @ctor.437(%"RawPtr[LocString]"* %4) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.510(%"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"* %other) #3 { +define internal void @ctor.503(%"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"* %other) #3 { %this.addr = alloca %"ContiguousMemoryRange[LocString]"* store %"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"** %this.addr %other.addr = alloca %"ContiguousMemoryRange[LocString]"* @@ -27633,17 +27336,17 @@ code: ; preds = %0 %2 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %1, i32 0, i32 0 %3 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %other.addr %4 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %3, i32 0, i32 0 - call void @ctor.464(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %4) + call void @ctor.461(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %4) %5 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %this.addr %6 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %5, i32 0, i32 1 %7 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %other.addr %8 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %7, i32 0, i32 1 - call void @ctor.464(%"RawPtr[LocString]"* %6, %"RawPtr[LocString]"* %8) + call void @ctor.461(%"RawPtr[LocString]"* %6, %"RawPtr[LocString]"* %8) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.511(%"ContiguousMemoryRange[LocString]"* %this) #3 { +define internal void @dtor.504(%"ContiguousMemoryRange[LocString]"* %this) #3 { %this.addr = alloca %"ContiguousMemoryRange[LocString]"* store %"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"** %this.addr br label %code @@ -27653,7 +27356,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.512"(%"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"* %other) #3 { +define internal void @"=.505"(%"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"* %other) #3 { %this.addr = alloca %"ContiguousMemoryRange[LocString]"* store %"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"** %this.addr %other.addr = alloca %"ContiguousMemoryRange[LocString]"* @@ -27665,17 +27368,17 @@ code: ; preds = %0 %2 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %1, i32 0, i32 0 %3 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %other.addr %4 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %3, i32 0, i32 0 - call void @"=.450"(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %4) + call void @"=.447"(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %4) %5 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %this.addr %6 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %5, i32 0, i32 1 %7 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %other.addr %8 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %7, i32 0, i32 1 - call void @"=.450"(%"RawPtr[LocString]"* %6, %"RawPtr[LocString]"* %8) + call void @"=.447"(%"RawPtr[LocString]"* %6, %"RawPtr[LocString]"* %8) ret void } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.513"(%"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"* %other) #3 { +define internal i1 @"==.506"(%"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"* %other) #3 { %this.addr = alloca %"ContiguousMemoryRange[LocString]"* store %"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"** %this.addr %other.addr = alloca %"ContiguousMemoryRange[LocString]"* @@ -27687,7 +27390,7 @@ code: ; preds = %0 %2 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %1, i32 0, i32 0 %3 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %other.addr %4 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %3, i32 0, i32 0 - %5 = call i1 @"==.443"(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %4) + %5 = call i1 @"==.440"(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %4) br i1 %5, label %cond.true, label %cond.false cond.true: ; preds = %code @@ -27695,7 +27398,7 @@ cond.true: ; preds = %code %7 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %6, i32 0, i32 1 %8 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %other.addr %9 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %8, i32 0, i32 1 - %10 = call i1 @"==.443"(%"RawPtr[LocString]"* %7, %"RawPtr[LocString]"* %9) + %10 = call i1 @"==.440"(%"RawPtr[LocString]"* %7, %"RawPtr[LocString]"* %9) br label %cond.end cond.false: ; preds = %code @@ -27707,7 +27410,7 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.514(%"ContiguousMemoryRange[Char]"* %this) #3 { +define internal void @ctor.507(%"ContiguousMemoryRange[Char]"* %this) #3 { %this.addr = alloca %"ContiguousMemoryRange[Char]"* store %"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"** %this.addr br label %code @@ -27715,15 +27418,15 @@ define internal void @ctor.514(%"ContiguousMemoryRange[Char]"* %this) #3 { code: ; preds = %0 %1 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %this.addr %2 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %1, i32 0, i32 0 - call void @ctor.161(%"RawPtr[Char]"* %2) + call void @ctor.155(%"RawPtr[Char]"* %2) %3 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %this.addr %4 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %3, i32 0, i32 1 - call void @ctor.161(%"RawPtr[Char]"* %4) + call void @ctor.155(%"RawPtr[Char]"* %4) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.515(%"ContiguousMemoryRange[Char]"* %this) #3 { +define internal void @dtor.508(%"ContiguousMemoryRange[Char]"* %this) #3 { %this.addr = alloca %"ContiguousMemoryRange[Char]"* store %"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"** %this.addr br label %code @@ -27733,7 +27436,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.516"(%"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"* %other) #3 { +define internal void @"=.509"(%"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"* %other) #3 { %this.addr = alloca %"ContiguousMemoryRange[Char]"* store %"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"** %this.addr %other.addr = alloca %"ContiguousMemoryRange[Char]"* @@ -27745,17 +27448,17 @@ code: ; preds = %0 %2 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %1, i32 0, i32 0 %3 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %other.addr %4 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %3, i32 0, i32 0 - call void @"=.184"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) + call void @"=.178"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) %5 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %this.addr %6 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %5, i32 0, i32 1 %7 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %other.addr %8 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %7, i32 0, i32 1 - call void @"=.184"(%"RawPtr[Char]"* %6, %"RawPtr[Char]"* %8) + call void @"=.178"(%"RawPtr[Char]"* %6, %"RawPtr[Char]"* %8) ret void } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.517"(%"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"* %other) #3 { +define internal i1 @"==.510"(%"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"* %other) #3 { %this.addr = alloca %"ContiguousMemoryRange[Char]"* store %"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"** %this.addr %other.addr = alloca %"ContiguousMemoryRange[Char]"* @@ -27767,7 +27470,7 @@ code: ; preds = %0 %2 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %1, i32 0, i32 0 %3 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %other.addr %4 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %3, i32 0, i32 0 - %5 = call i1 @"==.188"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) + %5 = call i1 @"==.225"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) br i1 %5, label %cond.true, label %cond.false cond.true: ; preds = %code @@ -27775,7 +27478,7 @@ cond.true: ; preds = %code %7 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %6, i32 0, i32 1 %8 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %other.addr %9 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %8, i32 0, i32 1 - %10 = call i1 @"==.188"(%"RawPtr[Char]"* %7, %"RawPtr[Char]"* %9) + %10 = call i1 @"==.225"(%"RawPtr[Char]"* %7, %"RawPtr[Char]"* %9) br label %cond.end cond.false: ; preds = %code @@ -27787,7 +27490,7 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.518(%"ContiguousMemoryRange[Token]"* %this) #3 { +define internal void @ctor.511(%"ContiguousMemoryRange[Token]"* %this) #3 { %this.addr = alloca %"ContiguousMemoryRange[Token]"* store %"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"** %this.addr br label %code @@ -27795,15 +27498,15 @@ define internal void @ctor.518(%"ContiguousMemoryRange[Token]"* %this) #3 { code: ; preds = %0 %1 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %this.addr %2 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %1, i32 0, i32 0 - call void @ctor.168(%"RawPtr[Token]"* %2) + call void @ctor.162(%"RawPtr[Token]"* %2) %3 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %this.addr %4 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %3, i32 0, i32 1 - call void @ctor.168(%"RawPtr[Token]"* %4) + call void @ctor.162(%"RawPtr[Token]"* %4) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.519(%"ContiguousMemoryRange[Token]"* %this) #3 { +define internal void @dtor.512(%"ContiguousMemoryRange[Token]"* %this) #3 { %this.addr = alloca %"ContiguousMemoryRange[Token]"* store %"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"** %this.addr br label %code @@ -27813,7 +27516,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.520"(%"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"* %other) #3 { +define internal void @"=.513"(%"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"* %other) #3 { %this.addr = alloca %"ContiguousMemoryRange[Token]"* store %"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"** %this.addr %other.addr = alloca %"ContiguousMemoryRange[Token]"* @@ -27825,17 +27528,17 @@ code: ; preds = %0 %2 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %1, i32 0, i32 0 %3 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %other.addr %4 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %3, i32 0, i32 0 - call void @"=.202"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %4) + call void @"=.194"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %4) %5 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %this.addr %6 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %5, i32 0, i32 1 %7 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %other.addr %8 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %7, i32 0, i32 1 - call void @"=.202"(%"RawPtr[Token]"* %6, %"RawPtr[Token]"* %8) + call void @"=.194"(%"RawPtr[Token]"* %6, %"RawPtr[Token]"* %8) ret void } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.521"(%"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"* %other) #3 { +define internal i1 @"==.514"(%"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"* %other) #3 { %this.addr = alloca %"ContiguousMemoryRange[Token]"* store %"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"** %this.addr %other.addr = alloca %"ContiguousMemoryRange[Token]"* @@ -27847,7 +27550,7 @@ code: ; preds = %0 %2 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %1, i32 0, i32 0 %3 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %other.addr %4 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %3, i32 0, i32 0 - %5 = call i1 @"==.208"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %4) + %5 = call i1 @"==.200"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %4) br i1 %5, label %cond.true, label %cond.false cond.true: ; preds = %code @@ -27855,7 +27558,7 @@ cond.true: ; preds = %code %7 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %6, i32 0, i32 1 %8 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %other.addr %9 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %8, i32 0, i32 1 - %10 = call i1 @"==.208"(%"RawPtr[Token]"* %7, %"RawPtr[Token]"* %9) + %10 = call i1 @"==.200"(%"RawPtr[Token]"* %7, %"RawPtr[Token]"* %9) br label %cond.end cond.false: ; preds = %code @@ -27867,7 +27570,7 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.522(%"ContiguousMemoryRange[UInt]"* %this, %"RawPtr[UInt]" %f_begin, %"RawPtr[UInt]" %f_end) #3 { +define internal void @ctor.515(%"ContiguousMemoryRange[UInt]"* %this, %"RawPtr[UInt]" %f_begin, %"RawPtr[UInt]" %f_end) #3 { %this.addr = alloca %"ContiguousMemoryRange[UInt]"* store %"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"** %this.addr %f_begin.addr = alloca %"RawPtr[UInt]" @@ -27879,15 +27582,15 @@ define internal void @ctor.522(%"ContiguousMemoryRange[UInt]"* %this, %"RawPtr[U code: ; preds = %0 %1 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %this.addr %2 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %1, i32 0, i32 0 - call void @ctor.220(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %f_begin.addr) + call void @ctor.212(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %f_begin.addr) %3 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %this.addr %4 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %3, i32 0, i32 1 - call void @ctor.220(%"RawPtr[UInt]"* %4, %"RawPtr[UInt]"* %f_end.addr) + call void @ctor.212(%"RawPtr[UInt]"* %4, %"RawPtr[UInt]"* %f_end.addr) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.523(%"ContiguousMemoryRange[UInt]"* %this) #3 { +define internal void @ctor.516(%"ContiguousMemoryRange[UInt]"* %this) #3 { %this.addr = alloca %"ContiguousMemoryRange[UInt]"* store %"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"** %this.addr br label %code @@ -27895,15 +27598,15 @@ define internal void @ctor.523(%"ContiguousMemoryRange[UInt]"* %this) #3 { code: ; preds = %0 %1 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %this.addr %2 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %1, i32 0, i32 0 - call void @ctor.170(%"RawPtr[UInt]"* %2) + call void @ctor.164(%"RawPtr[UInt]"* %2) %3 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %this.addr %4 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %3, i32 0, i32 1 - call void @ctor.170(%"RawPtr[UInt]"* %4) + call void @ctor.164(%"RawPtr[UInt]"* %4) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.524(%"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"* %other) #3 { +define internal void @ctor.517(%"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"* %other) #3 { %this.addr = alloca %"ContiguousMemoryRange[UInt]"* store %"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"** %this.addr %other.addr = alloca %"ContiguousMemoryRange[UInt]"* @@ -27915,17 +27618,17 @@ code: ; preds = %0 %2 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %1, i32 0, i32 0 %3 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %other.addr %4 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %3, i32 0, i32 0 - call void @ctor.220(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %4) + call void @ctor.212(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %4) %5 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %this.addr %6 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %5, i32 0, i32 1 %7 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %other.addr %8 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %7, i32 0, i32 1 - call void @ctor.220(%"RawPtr[UInt]"* %6, %"RawPtr[UInt]"* %8) + call void @ctor.212(%"RawPtr[UInt]"* %6, %"RawPtr[UInt]"* %8) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.525(%"ContiguousMemoryRange[UInt]"* %this) #3 { +define internal void @dtor.518(%"ContiguousMemoryRange[UInt]"* %this) #3 { %this.addr = alloca %"ContiguousMemoryRange[UInt]"* store %"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"** %this.addr br label %code @@ -27935,7 +27638,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.526"(%"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"* %other) #3 { +define internal void @"=.519"(%"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"* %other) #3 { %this.addr = alloca %"ContiguousMemoryRange[UInt]"* store %"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"** %this.addr %other.addr = alloca %"ContiguousMemoryRange[UInt]"* @@ -27947,17 +27650,17 @@ code: ; preds = %0 %2 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %1, i32 0, i32 0 %3 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %other.addr %4 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %3, i32 0, i32 0 - call void @"=.215"(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %4) + call void @"=.207"(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %4) %5 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %this.addr %6 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %5, i32 0, i32 1 %7 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %other.addr %8 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %7, i32 0, i32 1 - call void @"=.215"(%"RawPtr[UInt]"* %6, %"RawPtr[UInt]"* %8) + call void @"=.207"(%"RawPtr[UInt]"* %6, %"RawPtr[UInt]"* %8) ret void } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.527"(%"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"* %other) #3 { +define internal i1 @"==.520"(%"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"* %other) #3 { %this.addr = alloca %"ContiguousMemoryRange[UInt]"* store %"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"** %this.addr %other.addr = alloca %"ContiguousMemoryRange[UInt]"* @@ -27969,7 +27672,7 @@ code: ; preds = %0 %2 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %1, i32 0, i32 0 %3 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %other.addr %4 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %3, i32 0, i32 0 - %5 = call i1 @"==.221"(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %4) + %5 = call i1 @"==.228"(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %4) br i1 %5, label %cond.true, label %cond.false cond.true: ; preds = %code @@ -27977,7 +27680,7 @@ cond.true: ; preds = %code %7 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %6, i32 0, i32 1 %8 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %other.addr %9 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %8, i32 0, i32 1 - %10 = call i1 @"==.221"(%"RawPtr[UInt]"* %7, %"RawPtr[UInt]"* %9) + %10 = call i1 @"==.228"(%"RawPtr[UInt]"* %7, %"RawPtr[UInt]"* %9) br label %cond.end cond.false: ; preds = %code @@ -27989,7 +27692,7 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.528(%"RawPtr[LocString]"* %this) #3 { +define internal void @dtor.521(%"RawPtr[LocString]"* %this) #3 { %this.addr = alloca %"RawPtr[LocString]"* store %"RawPtr[LocString]"* %this, %"RawPtr[LocString]"** %this.addr br label %code @@ -27999,7 +27702,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.529(%"RawPtr[Token]"* %this) #3 { +define internal void @dtor.522(%"RawPtr[Token]"* %this) #3 { %this.addr = alloca %"RawPtr[Token]"* store %"RawPtr[Token]"* %this, %"RawPtr[Token]"** %this.addr br label %code @@ -28009,7 +27712,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.530(%"RawPtr[UInt]"* %this) #3 { +define internal void @dtor.523(%"RawPtr[UInt]"* %this) #3 { %this.addr = alloca %"RawPtr[UInt]"* store %"RawPtr[UInt]"* %this, %"RawPtr[UInt]"** %this.addr br label %code @@ -28107,7 +27810,7 @@ declare double @llvm.truc.f64(double) declare double @llvm.rint.f64(double) #6 ; Function Attrs: alwaysinline nounwind -define internal void @ctor.531(%"Vector[LocString]"* %this, %"Vector[LocString]"* %other) #3 { +define internal void @ctor.524(%"Vector[LocString]"* %this, %"Vector[LocString]"* %other) #3 { %this.addr = alloca %"Vector[LocString]"* store %"Vector[LocString]"* %this, %"Vector[LocString]"** %this.addr %other.addr = alloca %"Vector[LocString]"* @@ -28119,22 +27822,22 @@ code: ; preds = %0 %2 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %1, i32 0, i32 0 %3 = load %"Vector[LocString]"*, %"Vector[LocString]"** %other.addr %4 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %3, i32 0, i32 0 - call void @ctor.464(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %4) + call void @ctor.461(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %4) %5 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %6 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %5, i32 0, i32 1 %7 = load %"Vector[LocString]"*, %"Vector[LocString]"** %other.addr %8 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %7, i32 0, i32 1 - call void @ctor.464(%"RawPtr[LocString]"* %6, %"RawPtr[LocString]"* %8) + call void @ctor.461(%"RawPtr[LocString]"* %6, %"RawPtr[LocString]"* %8) %9 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %10 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %9, i32 0, i32 2 %11 = load %"Vector[LocString]"*, %"Vector[LocString]"** %other.addr %12 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %11, i32 0, i32 2 - call void @ctor.464(%"RawPtr[LocString]"* %10, %"RawPtr[LocString]"* %12) + call void @ctor.461(%"RawPtr[LocString]"* %10, %"RawPtr[LocString]"* %12) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.532(%"Vector[LocString]"* %this) #3 { +define internal void @dtor.525(%"Vector[LocString]"* %this) #3 { %this.addr = alloca %"Vector[LocString]"* store %"Vector[LocString]"* %this, %"Vector[LocString]"** %this.addr br label %code @@ -28144,7 +27847,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.533"(%"Vector[LocString]"* %this, %"Vector[LocString]"* %other) #3 { +define internal void @"=.526"(%"Vector[LocString]"* %this, %"Vector[LocString]"* %other) #3 { %this.addr = alloca %"Vector[LocString]"* store %"Vector[LocString]"* %this, %"Vector[LocString]"** %this.addr %other.addr = alloca %"Vector[LocString]"* @@ -28156,22 +27859,22 @@ code: ; preds = %0 %2 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %1, i32 0, i32 0 %3 = load %"Vector[LocString]"*, %"Vector[LocString]"** %other.addr %4 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %3, i32 0, i32 0 - call void @"=.450"(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %4) + call void @"=.447"(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %4) %5 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %6 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %5, i32 0, i32 1 %7 = load %"Vector[LocString]"*, %"Vector[LocString]"** %other.addr %8 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %7, i32 0, i32 1 - call void @"=.450"(%"RawPtr[LocString]"* %6, %"RawPtr[LocString]"* %8) + call void @"=.447"(%"RawPtr[LocString]"* %6, %"RawPtr[LocString]"* %8) %9 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %10 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %9, i32 0, i32 2 %11 = load %"Vector[LocString]"*, %"Vector[LocString]"** %other.addr %12 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %11, i32 0, i32 2 - call void @"=.450"(%"RawPtr[LocString]"* %10, %"RawPtr[LocString]"* %12) + call void @"=.447"(%"RawPtr[LocString]"* %10, %"RawPtr[LocString]"* %12) ret void } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.534"(%"Vector[LocString]"* %this, %"Vector[LocString]"* %other) #3 { +define internal i1 @"==.527"(%"Vector[LocString]"* %this, %"Vector[LocString]"* %other) #3 { %this.addr = alloca %"Vector[LocString]"* store %"Vector[LocString]"* %this, %"Vector[LocString]"** %this.addr %other.addr = alloca %"Vector[LocString]"* @@ -28183,7 +27886,7 @@ code: ; preds = %0 %2 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %1, i32 0, i32 0 %3 = load %"Vector[LocString]"*, %"Vector[LocString]"** %other.addr %4 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %3, i32 0, i32 0 - %5 = call i1 @"==.443"(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %4) + %5 = call i1 @"==.440"(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %4) br i1 %5, label %cond.true1, label %cond.false2 cond.true: ; preds = %cond.end3 @@ -28191,7 +27894,7 @@ cond.true: ; preds = %cond.end3 %7 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %6, i32 0, i32 2 %8 = load %"Vector[LocString]"*, %"Vector[LocString]"** %other.addr %9 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %8, i32 0, i32 2 - %10 = call i1 @"==.443"(%"RawPtr[LocString]"* %7, %"RawPtr[LocString]"* %9) + %10 = call i1 @"==.440"(%"RawPtr[LocString]"* %7, %"RawPtr[LocString]"* %9) br label %cond.end cond.false: ; preds = %cond.end3 @@ -28206,7 +27909,7 @@ cond.true1: ; preds = %code %12 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %11, i32 0, i32 1 %13 = load %"Vector[LocString]"*, %"Vector[LocString]"** %other.addr %14 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %13, i32 0, i32 1 - %15 = call i1 @"==.443"(%"RawPtr[LocString]"* %12, %"RawPtr[LocString]"* %14) + %15 = call i1 @"==.440"(%"RawPtr[LocString]"* %12, %"RawPtr[LocString]"* %14) br label %cond.end3 cond.false2: ; preds = %code @@ -28218,7 +27921,7 @@ cond.end3: ; preds = %cond.false2, %cond. } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.535(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #3 { +define internal void @ctor.528(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #3 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr %other.addr = alloca %"Vector[Char]"* @@ -28230,22 +27933,22 @@ code: ; preds = %0 %2 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %1, i32 0, i32 0 %3 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr %4 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %3, i32 0, i32 0 - call void @ctor.187(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) + call void @ctor.181(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) %5 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %6 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %5, i32 0, i32 1 %7 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr %8 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %7, i32 0, i32 1 - call void @ctor.187(%"RawPtr[Char]"* %6, %"RawPtr[Char]"* %8) + call void @ctor.181(%"RawPtr[Char]"* %6, %"RawPtr[Char]"* %8) %9 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %10 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %9, i32 0, i32 2 %11 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr %12 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %11, i32 0, i32 2 - call void @ctor.187(%"RawPtr[Char]"* %10, %"RawPtr[Char]"* %12) + call void @ctor.181(%"RawPtr[Char]"* %10, %"RawPtr[Char]"* %12) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.536(%"Vector[Char]"* %this) #3 { +define internal void @dtor.529(%"Vector[Char]"* %this) #3 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr br label %code @@ -28255,7 +27958,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.537"(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #3 { +define internal void @"=.530"(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #3 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr %other.addr = alloca %"Vector[Char]"* @@ -28267,22 +27970,22 @@ code: ; preds = %0 %2 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %1, i32 0, i32 0 %3 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr %4 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %3, i32 0, i32 0 - call void @"=.184"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) + call void @"=.178"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) %5 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %6 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %5, i32 0, i32 1 %7 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr %8 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %7, i32 0, i32 1 - call void @"=.184"(%"RawPtr[Char]"* %6, %"RawPtr[Char]"* %8) + call void @"=.178"(%"RawPtr[Char]"* %6, %"RawPtr[Char]"* %8) %9 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %10 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %9, i32 0, i32 2 %11 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr %12 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %11, i32 0, i32 2 - call void @"=.184"(%"RawPtr[Char]"* %10, %"RawPtr[Char]"* %12) + call void @"=.178"(%"RawPtr[Char]"* %10, %"RawPtr[Char]"* %12) ret void } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.538"(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #3 { +define internal i1 @"==.531"(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #3 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr %other.addr = alloca %"Vector[Char]"* @@ -28294,7 +27997,7 @@ code: ; preds = %0 %2 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %1, i32 0, i32 0 %3 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr %4 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %3, i32 0, i32 0 - %5 = call i1 @"==.188"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) + %5 = call i1 @"==.225"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) br i1 %5, label %cond.true1, label %cond.false2 cond.true: ; preds = %cond.end3 @@ -28302,7 +28005,7 @@ cond.true: ; preds = %cond.end3 %7 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %6, i32 0, i32 2 %8 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr %9 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %8, i32 0, i32 2 - %10 = call i1 @"==.188"(%"RawPtr[Char]"* %7, %"RawPtr[Char]"* %9) + %10 = call i1 @"==.225"(%"RawPtr[Char]"* %7, %"RawPtr[Char]"* %9) br label %cond.end cond.false: ; preds = %cond.end3 @@ -28317,7 +28020,7 @@ cond.true1: ; preds = %code %12 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %11, i32 0, i32 1 %13 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr %14 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %13, i32 0, i32 1 - %15 = call i1 @"==.188"(%"RawPtr[Char]"* %12, %"RawPtr[Char]"* %14) + %15 = call i1 @"==.225"(%"RawPtr[Char]"* %12, %"RawPtr[Char]"* %14) br label %cond.end3 cond.false2: ; preds = %code @@ -28329,7 +28032,7 @@ cond.end3: ; preds = %cond.false2, %cond. } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.539(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #3 { +define internal void @ctor.532(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #3 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr %other.addr = alloca %"Vector[Token]"* @@ -28341,22 +28044,22 @@ code: ; preds = %0 %2 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %1, i32 0, i32 0 %3 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr %4 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %3, i32 0, i32 0 - call void @ctor.207(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %4) + call void @ctor.199(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %4) %5 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %6 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %5, i32 0, i32 1 %7 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr %8 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %7, i32 0, i32 1 - call void @ctor.207(%"RawPtr[Token]"* %6, %"RawPtr[Token]"* %8) + call void @ctor.199(%"RawPtr[Token]"* %6, %"RawPtr[Token]"* %8) %9 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %10 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %9, i32 0, i32 2 %11 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr %12 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %11, i32 0, i32 2 - call void @ctor.207(%"RawPtr[Token]"* %10, %"RawPtr[Token]"* %12) + call void @ctor.199(%"RawPtr[Token]"* %10, %"RawPtr[Token]"* %12) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.540(%"Vector[Token]"* %this) #3 { +define internal void @dtor.533(%"Vector[Token]"* %this) #3 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr br label %code @@ -28366,7 +28069,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.541"(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #3 { +define internal void @"=.534"(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #3 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr %other.addr = alloca %"Vector[Token]"* @@ -28378,22 +28081,22 @@ code: ; preds = %0 %2 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %1, i32 0, i32 0 %3 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr %4 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %3, i32 0, i32 0 - call void @"=.202"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %4) + call void @"=.194"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %4) %5 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %6 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %5, i32 0, i32 1 %7 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr %8 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %7, i32 0, i32 1 - call void @"=.202"(%"RawPtr[Token]"* %6, %"RawPtr[Token]"* %8) + call void @"=.194"(%"RawPtr[Token]"* %6, %"RawPtr[Token]"* %8) %9 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %10 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %9, i32 0, i32 2 %11 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr %12 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %11, i32 0, i32 2 - call void @"=.202"(%"RawPtr[Token]"* %10, %"RawPtr[Token]"* %12) + call void @"=.194"(%"RawPtr[Token]"* %10, %"RawPtr[Token]"* %12) ret void } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.542"(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #3 { +define internal i1 @"==.535"(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #3 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr %other.addr = alloca %"Vector[Token]"* @@ -28405,7 +28108,7 @@ code: ; preds = %0 %2 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %1, i32 0, i32 0 %3 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr %4 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %3, i32 0, i32 0 - %5 = call i1 @"==.208"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %4) + %5 = call i1 @"==.200"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %4) br i1 %5, label %cond.true1, label %cond.false2 cond.true: ; preds = %cond.end3 @@ -28413,7 +28116,7 @@ cond.true: ; preds = %cond.end3 %7 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %6, i32 0, i32 2 %8 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr %9 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %8, i32 0, i32 2 - %10 = call i1 @"==.208"(%"RawPtr[Token]"* %7, %"RawPtr[Token]"* %9) + %10 = call i1 @"==.200"(%"RawPtr[Token]"* %7, %"RawPtr[Token]"* %9) br label %cond.end cond.false: ; preds = %cond.end3 @@ -28428,7 +28131,7 @@ cond.true1: ; preds = %code %12 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %11, i32 0, i32 1 %13 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr %14 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %13, i32 0, i32 1 - %15 = call i1 @"==.208"(%"RawPtr[Token]"* %12, %"RawPtr[Token]"* %14) + %15 = call i1 @"==.200"(%"RawPtr[Token]"* %12, %"RawPtr[Token]"* %14) br label %cond.end3 cond.false2: ; preds = %code @@ -28440,7 +28143,7 @@ cond.end3: ; preds = %cond.false2, %cond. } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.543(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #3 { +define internal void @ctor.536(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #3 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr %other.addr = alloca %"Vector[UInt]"* @@ -28452,22 +28155,22 @@ code: ; preds = %0 %2 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %1, i32 0, i32 0 %3 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr %4 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %3, i32 0, i32 0 - call void @ctor.220(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %4) + call void @ctor.212(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %4) %5 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %6 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %5, i32 0, i32 1 %7 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr %8 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %7, i32 0, i32 1 - call void @ctor.220(%"RawPtr[UInt]"* %6, %"RawPtr[UInt]"* %8) + call void @ctor.212(%"RawPtr[UInt]"* %6, %"RawPtr[UInt]"* %8) %9 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %10 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %9, i32 0, i32 2 %11 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr %12 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %11, i32 0, i32 2 - call void @ctor.220(%"RawPtr[UInt]"* %10, %"RawPtr[UInt]"* %12) + call void @ctor.212(%"RawPtr[UInt]"* %10, %"RawPtr[UInt]"* %12) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.544(%"Vector[UInt]"* %this) #3 { +define internal void @dtor.537(%"Vector[UInt]"* %this) #3 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr br label %code @@ -28477,7 +28180,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.545"(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #3 { +define internal void @"=.538"(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #3 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr %other.addr = alloca %"Vector[UInt]"* @@ -28489,22 +28192,22 @@ code: ; preds = %0 %2 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %1, i32 0, i32 0 %3 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr %4 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %3, i32 0, i32 0 - call void @"=.215"(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %4) + call void @"=.207"(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %4) %5 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %6 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %5, i32 0, i32 1 %7 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr %8 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %7, i32 0, i32 1 - call void @"=.215"(%"RawPtr[UInt]"* %6, %"RawPtr[UInt]"* %8) + call void @"=.207"(%"RawPtr[UInt]"* %6, %"RawPtr[UInt]"* %8) %9 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %10 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %9, i32 0, i32 2 %11 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr %12 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %11, i32 0, i32 2 - call void @"=.215"(%"RawPtr[UInt]"* %10, %"RawPtr[UInt]"* %12) + call void @"=.207"(%"RawPtr[UInt]"* %10, %"RawPtr[UInt]"* %12) ret void } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.546"(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #3 { +define internal i1 @"==.539"(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #3 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr %other.addr = alloca %"Vector[UInt]"* @@ -28516,7 +28219,7 @@ code: ; preds = %0 %2 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %1, i32 0, i32 0 %3 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr %4 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %3, i32 0, i32 0 - %5 = call i1 @"==.221"(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %4) + %5 = call i1 @"==.228"(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %4) br i1 %5, label %cond.true1, label %cond.false2 cond.true: ; preds = %cond.end3 @@ -28524,7 +28227,7 @@ cond.true: ; preds = %cond.end3 %7 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %6, i32 0, i32 2 %8 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr %9 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %8, i32 0, i32 2 - %10 = call i1 @"==.221"(%"RawPtr[UInt]"* %7, %"RawPtr[UInt]"* %9) + %10 = call i1 @"==.228"(%"RawPtr[UInt]"* %7, %"RawPtr[UInt]"* %9) br label %cond.end cond.false: ; preds = %cond.end3 @@ -28539,7 +28242,7 @@ cond.true1: ; preds = %code %12 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %11, i32 0, i32 1 %13 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr %14 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %13, i32 0, i32 1 - %15 = call i1 @"==.221"(%"RawPtr[UInt]"* %12, %"RawPtr[UInt]"* %14) + %15 = call i1 @"==.228"(%"RawPtr[UInt]"* %12, %"RawPtr[UInt]"* %14) br label %cond.end3 cond.false2: ; preds = %code @@ -28554,13 +28257,13 @@ cond.end3: ; preds = %cond.false2, %cond. define internal i1 @isAlnum(i8 %c) #4 { %c.addr = alloca i8 store i8 %c, i8* %c.addr - %tmp.v = alloca i32 + %tmp.this = alloca i32 br label %code code: ; preds = %0 %1 = load i8, i8* %c.addr - call void @_ass_32_8z(i32* %tmp.v, i8 %1) - %2 = load i32, i32* %tmp.v + call void @_ass_32_8z(i32* %tmp.this, i8 %1) + %2 = load i32, i32* %tmp.this %3 = call i32 @isalnum(i32 %2) %4 = icmp ne i32 0, %3 ret i1 %4 @@ -28572,13 +28275,13 @@ declare i32 @isalnum(i32) define internal i1 @isBlank(i8 %c) #4 { %c.addr = alloca i8 store i8 %c, i8* %c.addr - %tmp.v = alloca i32 + %tmp.this = alloca i32 br label %code code: ; preds = %0 %1 = load i8, i8* %c.addr - call void @_ass_32_8z(i32* %tmp.v, i8 %1) - %2 = load i32, i32* %tmp.v + call void @_ass_32_8z(i32* %tmp.this, i8 %1) + %2 = load i32, i32* %tmp.this %3 = call i32 @isblank(i32 %2) %4 = icmp ne i32 0, %3 ret i1 %4 @@ -28590,13 +28293,13 @@ declare i32 @isblank(i32) define internal i1 @isCntrl(i8 %c) #4 { %c.addr = alloca i8 store i8 %c, i8* %c.addr - %tmp.v = alloca i32 + %tmp.this = alloca i32 br label %code code: ; preds = %0 %1 = load i8, i8* %c.addr - call void @_ass_32_8z(i32* %tmp.v, i8 %1) - %2 = load i32, i32* %tmp.v + call void @_ass_32_8z(i32* %tmp.this, i8 %1) + %2 = load i32, i32* %tmp.this %3 = call i32 @iscntrl(i32 %2) %4 = icmp ne i32 0, %3 ret i1 %4 @@ -28608,13 +28311,13 @@ declare i32 @iscntrl(i32) define internal i1 @isGraph(i8 %c) #4 { %c.addr = alloca i8 store i8 %c, i8* %c.addr - %tmp.v = alloca i32 + %tmp.this = alloca i32 br label %code code: ; preds = %0 %1 = load i8, i8* %c.addr - call void @_ass_32_8z(i32* %tmp.v, i8 %1) - %2 = load i32, i32* %tmp.v + call void @_ass_32_8z(i32* %tmp.this, i8 %1) + %2 = load i32, i32* %tmp.this %3 = call i32 @isgraph(i32 %2) %4 = icmp ne i32 0, %3 ret i1 %4 @@ -28626,13 +28329,13 @@ declare i32 @isgraph(i32) define internal i1 @isLower(i8 %c) #4 { %c.addr = alloca i8 store i8 %c, i8* %c.addr - %tmp.v = alloca i32 + %tmp.this = alloca i32 br label %code code: ; preds = %0 %1 = load i8, i8* %c.addr - call void @_ass_32_8z(i32* %tmp.v, i8 %1) - %2 = load i32, i32* %tmp.v + call void @_ass_32_8z(i32* %tmp.this, i8 %1) + %2 = load i32, i32* %tmp.this %3 = call i32 @islower(i32 %2) %4 = icmp ne i32 0, %3 ret i1 %4 @@ -28644,13 +28347,13 @@ declare i32 @islower(i32) define internal i1 @isPrint(i8 %c) #4 { %c.addr = alloca i8 store i8 %c, i8* %c.addr - %tmp.v = alloca i32 + %tmp.this = alloca i32 br label %code code: ; preds = %0 %1 = load i8, i8* %c.addr - call void @_ass_32_8z(i32* %tmp.v, i8 %1) - %2 = load i32, i32* %tmp.v + call void @_ass_32_8z(i32* %tmp.this, i8 %1) + %2 = load i32, i32* %tmp.this %3 = call i32 @isprint(i32 %2) %4 = icmp ne i32 0, %3 ret i1 %4 @@ -28662,13 +28365,13 @@ declare i32 @isprint(i32) define internal i1 @isPunct(i8 %c) #4 { %c.addr = alloca i8 store i8 %c, i8* %c.addr - %tmp.v = alloca i32 + %tmp.this = alloca i32 br label %code code: ; preds = %0 %1 = load i8, i8* %c.addr - call void @_ass_32_8z(i32* %tmp.v, i8 %1) - %2 = load i32, i32* %tmp.v + call void @_ass_32_8z(i32* %tmp.this, i8 %1) + %2 = load i32, i32* %tmp.this %3 = call i32 @ispunct(i32 %2) %4 = icmp ne i32 0, %3 ret i1 %4 @@ -28680,13 +28383,13 @@ declare i32 @ispunct(i32) define internal i1 @isSpace(i8 %c) #4 { %c.addr = alloca i8 store i8 %c, i8* %c.addr - %tmp.v = alloca i32 + %tmp.this = alloca i32 br label %code code: ; preds = %0 %1 = load i8, i8* %c.addr - call void @_ass_32_8z(i32* %tmp.v, i8 %1) - %2 = load i32, i32* %tmp.v + call void @_ass_32_8z(i32* %tmp.this, i8 %1) + %2 = load i32, i32* %tmp.this %3 = call i32 @isspace(i32 %2) %4 = icmp ne i32 0, %3 ret i1 %4 @@ -28698,13 +28401,13 @@ declare i32 @isspace(i32) define internal i1 @isUpper(i8 %c) #4 { %c.addr = alloca i8 store i8 %c, i8* %c.addr - %tmp.v = alloca i32 + %tmp.this = alloca i32 br label %code code: ; preds = %0 %1 = load i8, i8* %c.addr - call void @_ass_32_8z(i32* %tmp.v, i8 %1) - %2 = load i32, i32* %tmp.v + call void @_ass_32_8z(i32* %tmp.this, i8 %1) + %2 = load i32, i32* %tmp.this %3 = call i32 @isupper(i32 %2) %4 = icmp ne i32 0, %3 ret i1 %4 @@ -28727,7 +28430,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.547(%File* %this) #3 { +define internal void @ctor.540(%File* %this) #3 { %this.addr = alloca %File* store %File* %this, %File** %this.addr br label %code @@ -28740,7 +28443,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.548(%File* %this, %File* %other) #3 { +define internal void @ctor.541(%File* %this, %File* %other) #3 { %this.addr = alloca %File* store %File* %this, %File** %this.addr %other.addr = alloca %File* @@ -28758,7 +28461,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.549(%File* %this) #3 { +define internal void @dtor.542(%File* %this) #3 { %this.addr = alloca %File* store %File* %this, %File** %this.addr br label %code @@ -28768,7 +28471,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.550"(%File* %this, %File* %other) #3 { +define internal void @"=.543"(%File* %this, %File* %other) #3 { %this.addr = alloca %File* store %File* %this, %File** %this.addr %other.addr = alloca %File* @@ -28786,7 +28489,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @ctor.551(%File* %this, i8* %handle) #4 { +define internal void @ctor.544(%File* %this, i8* %handle) #4 { %this.addr = alloca %File* store %File* %this, %File** %this.addr %handle.addr = alloca i8* @@ -28819,12 +28522,12 @@ code: ; preds = %0 %2 = call i8* @cStr(%StringRef* %filename.addr) %3 = call i8* @cStr(%StringRef* %mode.addr) %4 = call i8* @fopen(i8* %2, i8* %3) - call void @ctor.551(%File* %1, i8* %4) + call void @ctor.544(%File* %1, i8* %4) ret void } ; Function Attrs: inlinehint nounwind -define internal i32 @flush.552(%File* %this) #4 { +define internal i32 @flush.545(%File* %this) #4 { %this.addr = alloca %File* store %File* %this, %File** %this.addr br label %code @@ -28856,18 +28559,18 @@ define internal void @readLine(%String* sret %_result, %File* %this) #4 { %this.addr = alloca %File* store %File* %this, %File** %this.addr %res = alloca %String - %tmp.v = alloca i64 + %tmp.this = alloca i64 %cstr = alloca i8* - %tmp.v1 = alloca i64 + %tmp.this1 = alloca i64 br label %code code: ; preds = %0 - store i64 256, i64* %tmp.v - %1 = load i64, i64* %tmp.v - call void @ctor.194(%String* %res, i64 %1) - store i64 0, i64* %tmp.v1 - %2 = load i64, i64* %tmp.v1 - %3 = call i8* @"().281"(%String* %res, i64 %2) + store i64 256, i64* %tmp.this + %1 = load i64, i64* %tmp.this + call void @ctor.186(%String* %res, i64 %1) + store i64 0, i64* %tmp.this1 + %2 = load i64, i64* %tmp.this1 + %3 = call i8* @"().275"(%String* %res, i64 %2) %4 = load %File*, %File** %this.addr %5 = getelementptr inbounds %File, %File* %4, i32 0, i32 0 %6 = load i8*, i8** %5 @@ -28892,12 +28595,12 @@ if_else: ; preds = %if_block if_end: ; preds = %if_else, %if_then %12 = load %String*, %String** %_result.addr - call void @ctor.192(%String* %12, %String* %res) - call void @dtor.229(%String* %res) + call void @ctor.184(%String* %12, %String* %res) + call void @dtor.218(%String* %res) ret void dumy_block: ; No predecessors! - call void @dtor.229(%String* %res) + call void @dtor.218(%String* %res) ret void } diff --git a/src/SparrowFrontend/Grammar/scanner.spr b/src/SparrowFrontend/Grammar/scanner.spr index e31a2d49..c4f547cd 100644 --- a/src/SparrowFrontend/Grammar/scanner.spr +++ b/src/SparrowFrontend/Grammar/scanner.spr @@ -308,7 +308,7 @@ package _Impl return tkIDENTIFIER - var data: @StringRef = _curToken.data.asStringRef + var data: StringRef = _curToken.data.asStringRef // Check for reserved words if data == "break" return tkBREAK diff --git a/tests/tests.in b/tests/tests.in index 836c624b..37727a38 100644 --- a/tests/tests.in +++ b/tests/tests.in @@ -166,4 +166,6 @@ Frontend/Operators.spr: Frontend - operators Frontend/PrefixPostfix.spr: Frontend - prefix & postfix operators Frontend/StringAndDsl.spr: Frontend - string and DSL +../src/SparrowFrontend/Grammar/parserTest.spr: Parser test + # ../src/SparrowFrontend/Grammar/parserTest.spr: Sparrow parser test From 7bcd1c7c185bcd4b02dd5a58689331375b5bca1c Mon Sep 17 00:00:00 2001 From: Lucian Radu Teodorescu Date: Sat, 27 Apr 2019 19:43:44 +0300 Subject: [PATCH 02/23] Fix parserTest --- src/SparrowFrontend/Grammar/parserTest.spr | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/SparrowFrontend/Grammar/parserTest.spr b/src/SparrowFrontend/Grammar/parserTest.spr index 2fef0baf..d15bdd77 100644 --- a/src/SparrowFrontend/Grammar/parserTest.spr +++ b/src/SparrowFrontend/Grammar/parserTest.spr @@ -53,7 +53,7 @@ fun createNode(l: Location, kind: StringRef, children: Range): Node = new(NodeIm fun createNode(l: Location, kind: StringRef, children: Range, name: StringRef): Node = new(NodeImpl, l, kind, children, name) toNode [native("comp_parser_reportError")] -fun reportErrorExternal(loc: Location, msg: StringRef) +fun reportErrorExternal(loc: @Location, msg: StringRef) cout << loc << " ERROR: " << msg << endl // IGNORE-ERROR for test.py [native("comp_parser_addToNodeList")] @@ -84,7 +84,7 @@ fun mkPackage(loc: @Location, name: StringRef, children, params, ifClause: Node) fun mkDatatype(loc: @Location, name: StringRef, params, underlyingData, ifClause, children: Node) \ = createNode(loc, "datatype", values(params, underlyingData, ifClause, children), name) [native("comp_parser_mkField")] -fun mkField(loc: @Location, name: StringRef, typeNode, init: Node): Node +fun mkField(loc: @Location, name: StringRef, typeNode, init: Node): Node \ = createNode(loc, "field", values(typeNode, init), name) [native("comp_parser_mkConcept")] fun mkConcept(loc: @Location, name, paramName: StringRef, baseConcept, ifClause: Node) \ @@ -315,6 +315,6 @@ fun test7 module(, nodeList(nodeList(importName(compoundExpr(compoundExpr(x, y), z), ), importName(k, ), importName(l, nodeList(a, b, c))))) >>>*/ -//<< Date: Sat, 27 Apr 2019 20:32:09 +0300 Subject: [PATCH 03/23] Fix build error parserIf.ll needs to be generated with LLVM 6 (not 7) to be compatible with older versions of LLVM. Copying the parserIf.ll to source dir doesn't work well. --- src/SparrowFrontend/CMakeLists.txt | 18 +++++++++--------- src/SparrowFrontend/Grammar/parserIf.ll | 12 ++++++------ 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/SparrowFrontend/CMakeLists.txt b/src/SparrowFrontend/CMakeLists.txt index a7c1cbad..72889540 100644 --- a/src/SparrowFrontend/CMakeLists.txt +++ b/src/SparrowFrontend/CMakeLists.txt @@ -87,12 +87,12 @@ ADD_LIBRARY( SparrowFrontend TARGET_LINK_LIBRARIES(SparrowFrontend ${REQ_LLVM_LIBRARIES}) TARGET_LINK_LIBRARIES(SparrowFrontend ${Boost_FILESYSTEM_LIBRARY} ${Boost_PROGRAM_OPTIONS_LIBRARY} ${Boost_SYSTEM_LIBRARY}) -if(BOOTSTRAP_SPARROW) - # Copy the generated assembly back to the source dir, so that we can commit it. - add_custom_command( - TARGET SparrowFrontend POST_BUILD - COMMAND - ${CMAKE_COMMAND} -E copy - ${CMAKE_CURRENT_BINARY_DIR}/Grammar/parserIf.ll - ${CMAKE_CURRENT_SOURCE_DIR}/Grammar/parserIf.ll) -endif() +# if(BOOTSTRAP_SPARROW) +# # Copy the generated assembly back to the source dir, so that we can commit it. +# add_custom_command( +# TARGET SparrowFrontend POST_BUILD +# COMMAND +# ${CMAKE_COMMAND} -E copy +# ${CMAKE_CURRENT_BINARY_DIR}/Grammar/parserIf.ll +# ${CMAKE_CURRENT_SOURCE_DIR}/Grammar/parserIf.ll) +# endif() diff --git a/src/SparrowFrontend/Grammar/parserIf.ll b/src/SparrowFrontend/Grammar/parserIf.ll index 29622136..ba7f8623 100644 --- a/src/SparrowFrontend/Grammar/parserIf.ll +++ b/src/SparrowFrontend/Grammar/parserIf.ll @@ -1763,30 +1763,30 @@ define i64 @ptrDiff(i8* %p1, i8* %p2) #0 { ; Function Attrs: alwaysinline define void @_spr_memcpy(i8* %dest, i8* %src, i64 %size) #0 { - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %dest, i8* align 1 %src, i64 %size, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dest, i8* %src, i64 %size, i32 1, i1 false) ret void } ; Function Attrs: argmemonly nounwind -declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i1) #1 +declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i32, i1) #1 ; Function Attrs: alwaysinline define void @_spr_memmove(i8* %dest, i8* %src, i64 %size) #0 { - call void @llvm.memmove.p0i8.p0i8.i64(i8* align 1 %dest, i8* align 1 %src, i64 %size, i1 false) + call void @llvm.memmove.p0i8.p0i8.i64(i8* %dest, i8* %src, i64 %size, i32 1, i1 false) ret void } ; Function Attrs: argmemonly nounwind -declare void @llvm.memmove.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i1) #1 +declare void @llvm.memmove.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i32, i1) #1 ; Function Attrs: alwaysinline define void @_spr_memset(i8* %dest, i8 %value, i64 %size) #0 { - call void @llvm.memset.p0i8.i64(i8* align 1 %dest, i8 %value, i64 %size, i1 false) + call void @llvm.memset.p0i8.i64(i8* %dest, i8 %value, i64 %size, i32 1, i1 false) ret void } ; Function Attrs: argmemonly nounwind -declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i1) #1 +declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i32, i1) #1 ; Function Attrs: alwaysinline define void @flushOutput() #0 { From 858dac5bc5858c306572e9455e9b5e6757c97c69 Mon Sep 17 00:00:00 2001 From: Lucian Radu Teodorescu Date: Sat, 27 Apr 2019 20:54:02 +0300 Subject: [PATCH 04/23] Debug failing parserTest --- .travis/run.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis/run.sh b/.travis/run.sh index a89b23d2..806b78b8 100755 --- a/.travis/run.sh +++ b/.travis/run.sh @@ -27,4 +27,5 @@ echo "---------- Testing ----------" cd ../tests python test.py StdLib/RangesTest.spr --returnError +python test.py parserTest --returnError python test.py --returnError From 0546799940065557574099895de1b59784019770 Mon Sep 17 00:00:00 2001 From: Lucian Radu Teodorescu Date: Sat, 27 Apr 2019 22:22:50 +0300 Subject: [PATCH 05/23] Fix parserTest Writing null pointers does not yield the same results on Linux/MacOS --- .travis/run.sh | 1 - SparrowImplicitLib/meta/location.spr | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis/run.sh b/.travis/run.sh index 806b78b8..a89b23d2 100755 --- a/.travis/run.sh +++ b/.travis/run.sh @@ -27,5 +27,4 @@ echo "---------- Testing ----------" cd ../tests python test.py StdLib/RangesTest.spr --returnError -python test.py parserTest --returnError python test.py --returnError diff --git a/SparrowImplicitLib/meta/location.spr b/SparrowImplicitLib/meta/location.spr index ec7c82af..9b9abf12 100644 --- a/SparrowImplicitLib/meta/location.spr +++ b/SparrowImplicitLib/meta/location.spr @@ -102,7 +102,8 @@ fun <(lhs, rhs: @Location): Bool fun >>(l: @Location, os: @OutStream) os << l.start.line << ':' << l.start.col << '-' os << l.end.line << ':' << l.end.col - os << " @" << l.sourceCode + if l.sourceCode.data !== null + os << " @" << l.sourceCode // Source code & location functions exposed by the compiler [ct] From 56910651ae6fc15fb37271e6ac7c6d6ee7bb8b7f Mon Sep 17 00:00:00 2001 From: Lucian Radu Teodorescu Date: Sat, 27 Apr 2019 22:23:20 +0300 Subject: [PATCH 06/23] Forgot to add one file. --- src/SparrowFrontend/Grammar/parserTest.spr | 122 ++++++++++----------- 1 file changed, 61 insertions(+), 61 deletions(-) diff --git a/src/SparrowFrontend/Grammar/parserTest.spr b/src/SparrowFrontend/Grammar/parserTest.spr index d15bdd77..a49d14d7 100644 --- a/src/SparrowFrontend/Grammar/parserTest.spr +++ b/src/SparrowFrontend/Grammar/parserTest.spr @@ -222,82 +222,82 @@ fun doParse(filename, code: StringRef) fun test2 doScan("", "1 2 3 4 5 0xff, 0b101, 0777, 0789, .123 0.123 1.123 12.34e2f 123_456 1_2.3_4") /*<<>>*/ fun test3 doScan("", "a b c d e if then else abc_def _1 _a a1 a@#$ a.b.c ab.bc.cd abc.*") /*<<>>*/ fun test4 doScan("", ". .. ... !!! .* # !@#$%^&*-+=") /*<<>>*/ fun test5 doScan("", "\"abcd\" 'a' <{abc\\nop}>") /*<<>>*/ // << Date: Sun, 5 May 2019 12:44:03 +0300 Subject: [PATCH 07/23] Add first version of formatTool formatTool is able to read a source file and get its tokens and AST and contain all the lexical & syntactical information of the input file. The tokens also contain the whitespace and comments. Reformat the Sparrow parsing code to be more reusable. Add examples of how to implement interfaces by hand. --- SparrowImplicitLib/meta/location.spr | 12 +- SparrowImplicitLib/os.spr | 5 + SparrowImplicitLib/sprCore/basicDecls.spr | 34 +- SparrowImplicitLib/std/newDelete.spr | 10 + src/SparrowFrontend/Grammar/Parser.cpp | 422 +- src/SparrowFrontend/Grammar/Parser.h | 9 +- .../Grammar/bufferedCharSource.spr | 39 + src/SparrowFrontend/Grammar/ext.spr | 316 +- .../Grammar/fileCharSource.spr | 18 + src/SparrowFrontend/Grammar/layoutDecoder.spr | 11 +- src/SparrowFrontend/Grammar/node.spr | 1 + src/SparrowFrontend/Grammar/parser.spr | 139 +- src/SparrowFrontend/Grammar/parserDefs.spr | 4 - src/SparrowFrontend/Grammar/parserIf.ll | 25489 ++++++++++------ src/SparrowFrontend/Grammar/parserIf.spr | 79 +- src/SparrowFrontend/Grammar/scanner.spr | 32 +- .../Grammar/stringCharSource.spr | 16 + src/SparrowFrontend/Grammar/token.spr | 7 + .../Grammar => tests/Frontend}/parserTest.spr | 176 +- tests/tests.in | 4 +- tools/formatDetails/astNodes.spr | 164 + tools/formatDetails/common.spr | 13 + .../fileCharSourceKeepContent.spr | 74 + tools/formatDetails/nodeKinds.spr | 100 + tools/formatDetails/sourceData.spr | 93 + tools/formatDetails/tokenData.spr | 17 + tools/formatDetails/tokenDataSource.spr | 72 + tools/formatTool.spr | 80 + 28 files changed, 17094 insertions(+), 10342 deletions(-) create mode 100644 src/SparrowFrontend/Grammar/bufferedCharSource.spr create mode 100644 src/SparrowFrontend/Grammar/fileCharSource.spr create mode 100644 src/SparrowFrontend/Grammar/stringCharSource.spr rename {src/SparrowFrontend/Grammar => tests/Frontend}/parserTest.spr (55%) create mode 100644 tools/formatDetails/astNodes.spr create mode 100644 tools/formatDetails/common.spr create mode 100644 tools/formatDetails/fileCharSourceKeepContent.spr create mode 100644 tools/formatDetails/nodeKinds.spr create mode 100644 tools/formatDetails/sourceData.spr create mode 100644 tools/formatDetails/tokenData.spr create mode 100644 tools/formatDetails/tokenDataSource.spr create mode 100644 tools/formatTool.spr diff --git a/SparrowImplicitLib/meta/location.spr b/SparrowImplicitLib/meta/location.spr index 9b9abf12..8ae95df9 100644 --- a/SparrowImplicitLib/meta/location.spr +++ b/SparrowImplicitLib/meta/location.spr @@ -99,12 +99,20 @@ fun <(lhs, rhs: @Location): Bool if lhs.end.line > rhs.end.line ; return false return lhs.end.col < rhs.end.col +/// Compare location line-col +fun <(lhs, rhs: @LineCol): Bool + if lhs.line < rhs.line ; return true + if lhs.line > rhs.line ; return false + return lhs.col < rhs.col + fun >>(l: @Location, os: @OutStream) - os << l.start.line << ':' << l.start.col << '-' - os << l.end.line << ':' << l.end.col + os << l.start << '-' << l.end if l.sourceCode.data !== null os << " @" << l.sourceCode +fun >>(lc: LineCol, os: @OutStream) + os << lc.line << ':' << lc.col + // Source code & location functions exposed by the compiler [ct] /// Get the source code of the caller diff --git a/SparrowImplicitLib/os.spr b/SparrowImplicitLib/os.spr index 537356ce..7b268db9 100644 --- a/SparrowImplicitLib/os.spr +++ b/SparrowImplicitLib/os.spr @@ -56,6 +56,10 @@ fun readLine(this: @File): String res.resize(cStringLen(cstr)) return res +fun write(this: @File, data: StringRef): Int + var res: Int = _Impl.fwrite(reinterpretCast(@Byte, data.begin), 1, UInt(data.size), _handle) + return res + fun all(this: @File) = FileRange(this) datatype FileRange @@ -92,3 +96,4 @@ package _Impl [native("fgetc")] fun fgetc(handle: @Byte): Int [native("fgets")] fun fgets(buffer: @Char, bufSize: Int, handle: @Byte): @Char [native("fread")] fun fread(buffer: @Byte, size, count: UInt, handle: @Byte): UInt + [native("fwrite")] fun fwrite(buffer: @Byte, size, count: UInt, handle: @Byte): UInt diff --git a/SparrowImplicitLib/sprCore/basicDecls.spr b/SparrowImplicitLib/sprCore/basicDecls.spr index 4ce2a3f4..93e2521d 100644 --- a/SparrowImplicitLib/sprCore/basicDecls.spr +++ b/SparrowImplicitLib/sprCore/basicDecls.spr @@ -11,25 +11,25 @@ [native("_Type_copy_ctor")] fun ctor(this: @Type, other: Type) //fun dtor(this: @Type) {} -[noDefault] +[noDefault, bitcopiable] datatype Uninitialized {} - [bitcopiable, native("Null")] datatype Null {} - - [bitcopiable, native("i1")] datatype Bool {} - [bitcopiable, native("i8")] datatype Byte {} - [bitcopiable, convert, native("u8")] datatype UByte {} - [bitcopiable, convert, native("i16")] datatype Short {} - [bitcopiable, convert, native("u16")] datatype UShort {} - [bitcopiable, convert, native("i32")] datatype Int {} - [bitcopiable, convert, native("u32")] datatype UInt {} - [bitcopiable, convert, native("i64")] datatype Long {} - [bitcopiable, convert, native("u64")] datatype ULong {} - [bitcopiable, convert, native("u64")] datatype SizeType {} - [bitcopiable, convert, native("i64")] datatype DiffType {} - [bitcopiable, convert, native("float")] datatype Float {} - [bitcopiable, convert, native("double")] datatype Double {} - [bitcopiable, native("i8")] datatype Char {} + [native("Null")] datatype Null {} + + [native("i1")] datatype Bool {} + [native("i8")] datatype Byte {} + [convert, native("u8")] datatype UByte {} + [convert, native("i16")] datatype Short {} + [convert, native("u16")] datatype UShort {} + [convert, native("i32")] datatype Int {} + [convert, native("u32")] datatype UInt {} + [convert, native("i64")] datatype Long {} + [convert, native("u64")] datatype ULong {} + [convert, native("u64")] datatype SizeType {} + [convert, native("i64")] datatype DiffType {} + [convert, native("float")] datatype Float {} + [convert, native("double")] datatype Double {} + [native("i8")] datatype Char {} [protected] fun ctor(this: Uninitialized) {} diff --git a/SparrowImplicitLib/std/newDelete.spr b/SparrowImplicitLib/std/newDelete.spr index 400e5e45..d0b285a8 100644 --- a/SparrowImplicitLib/std/newDelete.spr +++ b/SparrowImplicitLib/std/newDelete.spr @@ -25,6 +25,16 @@ fun new(t: Type, arg1, arg2, arg3, arg4: @AnyType): @t if isValid((#$t).ctor(arg res.ctor(arg1, arg2, arg3, arg4) return res +fun new(t: Type, arg1, arg2, arg3, arg4, arg5: @AnyType): @t if isValid((#$t).ctor(arg1, arg2, arg3, arg4, arg5)) + var res: @t = reinterpretCast(@t, malloc(sizeOf(t))) + res.ctor(arg1, arg2, arg3, arg4, arg5) + return res + +fun new(t: Type, arg1, arg2, arg3, arg4, arg5, arg6: @AnyType): @t if isValid((#$t).ctor(arg1, arg2, arg3, arg4, arg5, arg6)) + var res: @t = reinterpretCast(@t, malloc(sizeOf(t))) + res.ctor(arg1, arg2, arg3, arg4, arg5, arg6) + return res + fun delete(obj: @AnyType) if !isValid(obj.release) if obj !== null obj dtor diff --git a/src/SparrowFrontend/Grammar/Parser.cpp b/src/SparrowFrontend/Grammar/Parser.cpp index 7aa9beda..a8093490 100644 --- a/src/SparrowFrontend/Grammar/Parser.cpp +++ b/src/SparrowFrontend/Grammar/Parser.cpp @@ -8,173 +8,299 @@ using namespace SprFrontend; namespace SprFrontend { -struct ParserContext {}; // Don't care about the internal structure +//! Represents a parser context. +//! Datatype defined in the Sparrow code. +//! We don't care about the internal structure. +struct ParserContext {}; +//! Represent a Sparrow string object. +//! Datatype defined in the Sparrow code. +//! We need to access its contents, but we don't want to import all the functions assoc with it. struct SprString { const char* begin; const char* end; const char* endOfStore; }; -struct Token { - Location loc; - int type; - SprString data; - unsigned long long intData; - double floatData; +//! Sparrow parser interface for reporting errors +struct ErrorReporter { + void* self; + void (*reportErrorFn)(ErrorReporter*, const Location*, StringRef); }; + +//! Sparrow parser interface for building the AST +struct AstBuilder { + void* self; + + Node* (*addToNodeListFn)(AstBuilder*, Node*, Node*); + + Node* (*mkModifiersFn)(AstBuilder*, const Location*, Node*, Node*); + Node* (*mkModuleFn)(AstBuilder*, const Location*, Node*, Node*); + Node* (*mkImportNameFn)(AstBuilder*, const Location*, StringRef, Node*, Node*); + Node* (*mkUsingFn)(AstBuilder*, const Location*, StringRef, Node*); + Node* (*mkPackageFn)(AstBuilder*, const Location*, StringRef, Node*, Node*, Node*); + Node* (*mkDatatypeFn)(AstBuilder*, const Location*, StringRef, Node*, Node*, Node*, Node*); + Node* (*mkFieldFn)(AstBuilder*, const Location*, StringRef, Node*, Node*); + Node* (*mkConceptFn)(AstBuilder*, const Location*, StringRef, StringRef, Node*, Node*); + Node* (*mkVarFn)(AstBuilder*, const Location*, StringRef, Node*, Node*); + Node* (*mkParameterFn)(AstBuilder*, const Location*, StringRef, Node*, Node*); + Node* (*mkFunFn)(AstBuilder*, const Location*, StringRef, Node*, Node*, Node*, Node*, Node*); + + Node* (*mkParenthesisExprFn)(AstBuilder*, Node*); + Node* (*mkPostfixOpFn)(AstBuilder*, const Location*, Node*, StringRef); + Node* (*mkInfixOpFn)(AstBuilder*, const Location*, Node*, StringRef, Node*); + Node* (*mkPrefixOpFn)(AstBuilder*, const Location*, StringRef, Node*); + Node* (*mkIdentifierFn)(AstBuilder*, const Location*, StringRef); + Node* (*mkCompoundExprFn)(AstBuilder*, const Location*, Node*, StringRef); + Node* (*mkStarExprFn)(AstBuilder*, const Location*, Node*, StringRef); + Node* (*mkDotExprFn)(AstBuilder*, const Location*, Node*, StringRef); + Node* (*mkFunAppExprFn)(AstBuilder*, const Location*, Node*, Node*); + Node* (*mkLambdaExprFn)(AstBuilder*, const Location*, Node*, Node*, Node*, Node*, Node*); + Node* (*mkNullLiteralFn)(AstBuilder*, const Location*); + Node* (*mkBoolLiteralFn)(AstBuilder*, const Location*, bool); + Node* (*mkIntLiteralFn)(AstBuilder*, const Location*, int); + Node* (*mkUIntLiteralFn)(AstBuilder*, const Location*, unsigned int); + Node* (*mkLongLiteralFn)(AstBuilder*, const Location*, long long); + Node* (*mkULongLiteralFn)(AstBuilder*, const Location*, unsigned long long); + Node* (*mkFloatLiteralFn)(AstBuilder*, const Location*, float); + Node* (*mkDoubleLiteralFn)(AstBuilder*, const Location*, double); + Node* (*mkCharLiteralFn)(AstBuilder*, const Location*, char); + Node* (*mkStringLiteralFn)(AstBuilder*, const Location*, StringRef); + + Node* (*mkBlockStmtFn)(AstBuilder*, const Location*, Node*); + Node* (*mkIfStmtFn)(AstBuilder*, const Location*, Node*, Node*, Node*); + Node* (*mkForStmtFn)(AstBuilder*, const Location*, StringRef, Node*, Node*, Node*); + Node* (*mkWhileStmtFn)(AstBuilder*, const Location*, Node*, Node*, Node*); + Node* (*mkBreakStmtFn)(AstBuilder*, const Location*); + Node* (*mkContinueStmtFn)(AstBuilder*, const Location*); + Node* (*mkReturnStmtFn)(AstBuilder*, const Location*, Node*); +}; + +//! Compiler implementation or error reporter +struct CompilerErrorReporter : ErrorReporter { + CompilerErrorReporter() { + self = this; + reportErrorFn = &CompilerErrorReporter::reportError; + } + + static void reportError(ErrorReporter* self, const Location* loc, StringRef msg) { + Nest_reportDiagnostic(*loc, diagError, msg.begin); + } +}; + +//! Compiler implementation or error reporter +struct CompilerAstBuilder : AstBuilder { + CompilerAstBuilder() { + self = this; + addToNodeListFn = &CompilerAstBuilder::addToNodeList_Impl; + + mkModifiersFn = &CompilerAstBuilder::mkModifiers_Impl; + mkModuleFn = &CompilerAstBuilder::mkModule_Impl; + mkImportNameFn = &CompilerAstBuilder::mkImportName_Impl; + mkUsingFn = &CompilerAstBuilder::mkUsing_Impl; + mkPackageFn = &CompilerAstBuilder::mkPackage_Impl; + mkDatatypeFn = &CompilerAstBuilder::mkDatatype_Impl; + mkFieldFn = &CompilerAstBuilder::mkField_Impl; + mkConceptFn = &CompilerAstBuilder::mkConcept_Impl; + mkVarFn = &CompilerAstBuilder::mkVar_Impl; + mkParameterFn = &CompilerAstBuilder::mkParameter_Impl; + mkFunFn = &CompilerAstBuilder::mkFun_Impl; + + mkParenthesisExprFn = &CompilerAstBuilder::mkParenthesisExpr_Impl; + mkPostfixOpFn = &CompilerAstBuilder::mkPostfixOp_Impl; + mkInfixOpFn = &CompilerAstBuilder::mkInfixOp_Impl; + mkPrefixOpFn = &CompilerAstBuilder::mkPrefixOp_Impl; + mkIdentifierFn = &CompilerAstBuilder::mkIdentifier_Impl; + mkCompoundExprFn = &CompilerAstBuilder::mkCompoundExpr_Impl; + mkStarExprFn = &CompilerAstBuilder::mkStarExpr_Impl; + mkDotExprFn = &CompilerAstBuilder::mkDotExpr_Impl; + mkFunAppExprFn = &CompilerAstBuilder::mkFunAppExpr_Impl; + mkLambdaExprFn = &CompilerAstBuilder::mkLambdaExpr_Impl; + mkNullLiteralFn = &CompilerAstBuilder::mkNullLiteral_Impl; + mkBoolLiteralFn = &CompilerAstBuilder::mkBoolLiteral_Impl; + mkIntLiteralFn = &CompilerAstBuilder::mkIntLiteral_Impl; + mkUIntLiteralFn = &CompilerAstBuilder::mkUIntLiteral_Impl; + mkLongLiteralFn = &CompilerAstBuilder::mkLongLiteral_Impl; + mkULongLiteralFn = &CompilerAstBuilder::mkULongLiteral_Impl; + mkFloatLiteralFn = &CompilerAstBuilder::mkFloatLiteral_Impl; + mkDoubleLiteralFn = &CompilerAstBuilder::mkDoubleLiteral_Impl; + mkCharLiteralFn = &CompilerAstBuilder::mkCharLiteral_Impl; + mkStringLiteralFn = &CompilerAstBuilder::mkStringLiteral_Impl; + + mkBlockStmtFn = &CompilerAstBuilder::mkBlockStmt_Impl; + mkIfStmtFn = &CompilerAstBuilder::mkIfStmt_Impl; + mkForStmtFn = &CompilerAstBuilder::mkForStmt_Impl; + mkWhileStmtFn = &CompilerAstBuilder::mkWhileStmt_Impl; + mkBreakStmtFn = &CompilerAstBuilder::mkBreakStmt_Impl; + mkContinueStmtFn = &CompilerAstBuilder::mkContinueStmt_Impl; + mkReturnStmtFn = &CompilerAstBuilder::mkReturnStmt_Impl; + } + + static Node* addToNodeList_Impl(AstBuilder*, Node* nl, Node* newNode) { + return Feather_addToNodeList(nl, newNode); + } + + static Node* mkModifiers_Impl(AstBuilder*, const Location* loc, Node* main, Node* mods) { + return mkModifiers(*loc, main, mods); + } + static Node* mkModule_Impl(AstBuilder*, const Location* loc, Node* moduleName, Node* decls) { + return mkModule(*loc, moduleName, decls); + } + static Node* mkImportName_Impl( + AstBuilder*, const Location* loc, StringRef alias, Node* toImport, Node* decls) { + return mkImportName(*loc, toImport, decls, true, alias); + } + static Node* mkUsing_Impl(AstBuilder*, const Location* loc, StringRef alias, Node* usingNode) { + return mkSprUsing(*loc, alias, usingNode); + } + static Node* mkPackage_Impl(AstBuilder*, const Location* loc, StringRef name, Node* children, + Node* params, Node* ifClause) { + return mkSprPackage(*loc, name, children, params, ifClause); + } + static Node* mkDatatype_Impl(AstBuilder*, const Location* loc, StringRef name, Node* params, + Node* underlyingData, Node* ifClause, Node* children) { + return mkSprDatatype(*loc, name, params, underlyingData, ifClause, children); + } + static Node* mkField_Impl( + AstBuilder*, const Location* loc, StringRef name, Node* typeNode, Node* init) { + return mkSprField(*loc, name, typeNode, init); + } + static Node* mkConcept_Impl(AstBuilder*, const Location* loc, StringRef name, + StringRef paramName, Node* baseConcept, Node* ifClause) { + return mkSprConcept(*loc, name, paramName, baseConcept, ifClause); + } + static Node* mkVar_Impl( + AstBuilder*, const Location* loc, StringRef name, Node* typeNode, Node* init) { + return mkSprVariable(*loc, name, typeNode, init); + } + static Node* mkParameter_Impl( + AstBuilder*, const Location* loc, StringRef name, Node* typeNode, Node* init) { + return mkSprParameter(*loc, name, typeNode, init); + } + static Node* mkFun_Impl(AstBuilder*, const Location* loc, StringRef name, Node* formals, + Node* retType, Node* body, Node* bodyExp, Node* ifClause) { + if (bodyExp && !body) { + const Location& loc2 = bodyExp->location; + body = Feather_mkLocalSpace(*loc, fromIniList({mkReturnStmt(loc2, bodyExp)})); + if (!retType) + retType = mkFunApplication(loc2, mkIdentifier(loc2, StringRef("typeOf")), + Feather_mkNodeList(loc2, fromIniList({bodyExp}))); + } + return mkSprFunction(*loc, name, formals, retType, body, ifClause); + } + + static Node* mkParenthesisExpr_Impl(AstBuilder*, Node* expr) { + return Feather_mkNodeList(expr ? expr->location : NOLOC, fromIniList({expr})); + } + static Node* mkPostfixOp_Impl(AstBuilder*, const Location* loc, Node* base, StringRef op) { + return mkOperatorCall(*loc, base, op, nullptr); + } + static Node* mkInfixOp_Impl( + AstBuilder*, const Location* loc, Node* lhs, StringRef op, Node* rhs) { + return mkInfixOp(*loc, op, lhs, rhs); + } + static Node* mkPrefixOp_Impl(AstBuilder*, const Location* loc, StringRef op, Node* base) { + return mkInfixOp(*loc, op, nullptr, base); + } + static Node* mkIdentifier_Impl(AstBuilder*, const Location* loc, StringRef id) { + return mkIdentifier(*loc, id); + } + static Node* mkCompoundExpr_Impl(AstBuilder*, const Location* loc, Node* base, StringRef id) { + return mkCompoundExp(*loc, base, id); + } + static Node* mkStarExpr_Impl(AstBuilder*, const Location* loc, Node* base, StringRef id) { + return mkStarExp(*loc, base, id); + } + static Node* mkDotExpr_Impl(AstBuilder*, const Location* loc, Node* base, StringRef id) { + return mkCompoundExp(*loc, base, id); + } + static Node* mkFunAppExpr_Impl(AstBuilder*, const Location* loc, Node* base, Node* args) { + return mkFunApplication(*loc, base, args); + } + static Node* mkLambdaExpr_Impl(AstBuilder*, const Location* loc, Node* closureParams, + Node* formals, Node* retType, Node* body, Node* bodyExpr) { + return mkLambdaExp(*loc, formals, retType, body, bodyExpr, closureParams); + } + static Node* mkNullLiteral_Impl(AstBuilder*, const Location* loc) { + return buildNullLiteral(*loc); + } + static Node* mkBoolLiteral_Impl(AstBuilder*, const Location* loc, bool val) { + return buildBoolLiteral(*loc, val); + } + static Node* mkIntLiteral_Impl(AstBuilder*, const Location* loc, int val) { + return buildIntLiteral(*loc, val); + } + static Node* mkUIntLiteral_Impl(AstBuilder*, const Location* loc, unsigned int val) { + return buildUIntLiteral(*loc, val); + } + static Node* mkLongLiteral_Impl(AstBuilder*, const Location* loc, long long val) { + return buildLongLiteral(*loc, val); + } + static Node* mkULongLiteral_Impl(AstBuilder*, const Location* loc, unsigned long long val) { + return buildULongLiteral(*loc, val); + } + static Node* mkFloatLiteral_Impl(AstBuilder*, const Location* loc, float val) { + return buildFloatLiteral(*loc, val); + } + static Node* mkDoubleLiteral_Impl(AstBuilder*, const Location* loc, double val) { + return buildDoubleLiteral(*loc, val); + } + static Node* mkCharLiteral_Impl(AstBuilder*, const Location* loc, char val) { + return buildCharLiteral(*loc, val); + } + static Node* mkStringLiteral_Impl(AstBuilder*, const Location* loc, StringRef data) { + return buildStringLiteral(*loc, data); + } + + static Node* mkBlockStmt_Impl(AstBuilder*, const Location* loc, Node* stmts) { + return Feather_mkLocalSpace(*loc, stmts ? all(stmts->children) : fromIniList({})); + } + static Node* mkIfStmt_Impl( + AstBuilder*, const Location* loc, Node* expr, Node* thenClause, Node* elseClause) { + return Feather_mkIf(*loc, expr, thenClause, elseClause); + } + static Node* mkForStmt_Impl(AstBuilder*, const Location* loc, StringRef id, Node* typeNode, + Node* range, Node* action) { + return mkForStmt(*loc, id, typeNode, range, action); + } + static Node* mkWhileStmt_Impl( + AstBuilder*, const Location* loc, Node* expr, Node* stepAction, Node* body) { + return Feather_mkWhile(*loc, expr, body, stepAction); + } + static Node* mkBreakStmt_Impl(AstBuilder*, const Location* loc) { + return Feather_mkBreak(*loc); + } + static Node* mkContinueStmt_Impl(AstBuilder*, const Location* loc) { + return Feather_mkContinue(*loc); + } + static Node* mkReturnStmt_Impl(AstBuilder*, const Location* loc, Node* expr) { + return mkReturnStmt(*loc, expr); + } +}; + } // namespace SprFrontend // Externally defined by the Sparrow code extern "C" ParserContext* spr_parserIf_createParser( - StringRef filename, StringRef code, const Location* loc); + StringRef filename, const Location* loc, AstBuilder* astBuilder, ErrorReporter reporter); +extern "C" ParserContext* spr_parserIf_createParserFile( + StringRef filename, const Location* loc, AstBuilder* astBuilder, ErrorReporter reporter); +extern "C" ParserContext* spr_parserIf_createParserStringRef( + StringRef code, const Location* loc, AstBuilder* astBuilder, ErrorReporter reporter); extern "C" void spr_parserIf_destroyParser(ParserContext* ctx); -extern "C" void spr_parserIf_nextToken(ParserContext* ctx, Token* outToken); extern "C" Node* spr_parserIf_parseModule(ParserContext* ctx); extern "C" Node* spr_parserIf_parseExpression(ParserContext* ctx); -// Defined here, used by the Sparrow code -extern "C" void comp_parser_reportError(Location* loc, StringRef msg) { - Nest_reportDiagnostic(*loc, diagError, msg.begin); -} - -extern "C" Node* comp_parser_addToNodeList(Node* nl, Node* newNode) { - return Feather_addToNodeList(nl, newNode); -} - -extern "C" Node* comp_parser_mkModifiers(Location* loc, Node* main, Node* mods) { - return mkModifiers(*loc, main, mods); -} -extern "C" Node* comp_parser_mkModule(Location* loc, Node* moduleName, Node* decls) { - return mkModule(*loc, moduleName, decls); -} -extern "C" Node* comp_parser_mkImportName( - Location* loc, StringRef alias, Node* toImport, Node* decls) { - return mkImportName(*loc, toImport, decls, true, alias); -} -extern "C" Node* comp_parser_mkUsing(Location* loc, StringRef alias, Node* usingNode) { - return mkSprUsing(*loc, alias, usingNode); -} -extern "C" Node* comp_parser_mkPackage( - Location* loc, StringRef name, Node* children, Node* params, Node* ifClause) { - return mkSprPackage(*loc, name, children, params, ifClause); -} -extern "C" Node* comp_parser_mkDatatype(Location* loc, StringRef name, Node* params, - Node* underlyingData, Node* ifClause, Node* children) { - return mkSprDatatype(*loc, name, params, underlyingData, ifClause, children); -} -extern "C" Node* comp_parser_mkField(Location* loc, StringRef name, Node* typeNode, Node* init) { - return mkSprField(*loc, name, typeNode, init); -} -extern "C" Node* comp_parser_mkConcept( - Location* loc, StringRef name, StringRef paramName, Node* baseConcept, Node* ifClause) { - return mkSprConcept(*loc, name, paramName, baseConcept, ifClause); -} -extern "C" Node* comp_parser_mkVar(Location* loc, StringRef name, Node* typeNode, Node* init) { - return mkSprVariable(*loc, name, typeNode, init); -} -extern "C" Node* comp_parser_mkParameter( - Location* loc, StringRef name, Node* typeNode, Node* init) { - return mkSprParameter(*loc, name, typeNode, init); -} -extern "C" Node* comp_parser_mkFun(Location* loc, StringRef name, Node* formals, Node* retType, - Node* body, Node* bodyExp, Node* ifClause) { - if (bodyExp && !body) { - const Location& loc2 = bodyExp->location; - body = Feather_mkLocalSpace(*loc, fromIniList({mkReturnStmt(loc2, bodyExp)})); - if (!retType) - retType = mkFunApplication(loc2, mkIdentifier(loc2, StringRef("typeOf")), - Feather_mkNodeList(loc2, fromIniList({bodyExp}))); - } - return mkSprFunction(*loc, name, formals, retType, body, ifClause); -} - -extern "C" Node* comp_parser_mkParenthesisExpr(Node* expr) { - return Feather_mkNodeList(expr ? expr->location : NOLOC, fromIniList({expr})); -} -extern "C" Node* comp_parser_mkPostfixOp(Location* loc, Node* base, StringRef op) { - return mkOperatorCall(*loc, base, op, nullptr); -} -extern "C" Node* comp_parser_mkInfixOp(Location* loc, Node* lhs, StringRef op, Node* rhs) { - return mkInfixOp(*loc, op, lhs, rhs); -} -extern "C" Node* comp_parser_mkPrefixOp(Location* loc, StringRef op, Node* base) { - return mkInfixOp(*loc, op, nullptr, base); -} -extern "C" Node* comp_parser_mkIdentifier(Location* loc, StringRef id) { - return mkIdentifier(*loc, id); -} -extern "C" Node* comp_parser_mkCompoundExpr(Location* loc, Node* base, StringRef id) { - return mkCompoundExp(*loc, base, id); -} -extern "C" Node* comp_parser_mkStarExpr(Location* loc, Node* base, StringRef id) { - return mkStarExp(*loc, base, id); -} -extern "C" Node* comp_parser_mkDotExpr(Location* loc, Node* base, StringRef id) { - return mkCompoundExp(*loc, base, id); -} -extern "C" Node* comp_parser_mkFunAppExpr(Location* loc, Node* base, Node* args) { - return mkFunApplication(*loc, base, args); -} -extern "C" Node* comp_parser_mkLambdaExpr(Location* loc, Node* closureParams, Node* formals, - Node* retType, Node* body, Node* bodyExpr) { - return mkLambdaExp(*loc, formals, retType, body, bodyExpr, closureParams); -} -extern "C" Node* comp_parser_mkNullLiteral(Location* loc) { return buildNullLiteral(*loc); } -extern "C" Node* comp_parser_mkBoolLiteral(Location* loc, bool val) { - return buildBoolLiteral(*loc, val); -} -extern "C" Node* comp_parser_mkIntLiteral(Location* loc, int val) { - return buildIntLiteral(*loc, val); -} -extern "C" Node* comp_parser_mkUIntLiteral(Location* loc, unsigned int val) { - return buildUIntLiteral(*loc, val); -} -extern "C" Node* comp_parser_mkLongLiteral(Location* loc, long long val) { - return buildLongLiteral(*loc, val); -} -extern "C" Node* comp_parser_mkULongLiteral(Location* loc, unsigned long long val) { - return buildULongLiteral(*loc, val); -} -extern "C" Node* comp_parser_mkFloatLiteral(Location* loc, float val) { - return buildFloatLiteral(*loc, val); -} -extern "C" Node* comp_parser_mkDoubleLiteral(Location* loc, double val) { - return buildDoubleLiteral(*loc, val); -} -extern "C" Node* comp_parser_mkCharLiteral(Location* loc, char val) { - return buildCharLiteral(*loc, val); -} -extern "C" Node* comp_parser_mkStringLiteral(Location* loc, StringRef data) { - return buildStringLiteral(*loc, data); -} - -extern "C" Node* comp_parser_mkBlockStmt(Location* loc, Node* stmts) { - return Feather_mkLocalSpace(*loc, stmts ? all(stmts->children) : fromIniList({})); -} -extern "C" Node* comp_parser_mkIfStmt( - Location* loc, Node* expr, Node* thenClause, Node* elseClause) { - return Feather_mkIf(*loc, expr, thenClause, elseClause); -} -extern "C" Node* comp_parser_mkForStmt( - Location* loc, StringRef id, Node* typeNode, Node* range, Node* action) { - return mkForStmt(*loc, id, typeNode, range, action); -} -extern "C" Node* comp_parser_mkWhileStmt(Location* loc, Node* expr, Node* stepAction, Node* body) { - return Feather_mkWhile(*loc, expr, body, stepAction); -} -extern "C" Node* comp_parser_mkBreakStmt(Location* loc) { return Feather_mkBreak(*loc); } -extern "C" Node* comp_parser_mkContinueStmt(Location* loc) { return Feather_mkContinue(*loc); } -extern "C" Node* comp_parser_mkReturnStmt(Location* loc, Node* expr) { - return mkReturnStmt(*loc, expr); -} - Parser::Parser(Location loc) - : ctx_(spr_parserIf_createParser( - StringRef(loc.sourceCode->url), StringRef{nullptr, nullptr}, &loc)) {} + : errReporter_(new CompilerErrorReporter) + , astBuilder_(new CompilerAstBuilder) + , ctx_(spr_parserIf_createParserFile( + StringRef(loc.sourceCode->url), &loc, astBuilder_, *errReporter_)) {} Parser::Parser(Location loc, StringRef code) - : ctx_(spr_parserIf_createParser(StringRef{nullptr, nullptr}, code, &loc)) {} + : errReporter_(new CompilerErrorReporter) + , astBuilder_(new CompilerAstBuilder) + , ctx_(spr_parserIf_createParserStringRef(code, &loc, astBuilder_, *errReporter_)) {} Parser::~Parser() { if (ctx_) diff --git a/src/SparrowFrontend/Grammar/Parser.h b/src/SparrowFrontend/Grammar/Parser.h index 13201533..8b058750 100644 --- a/src/SparrowFrontend/Grammar/Parser.h +++ b/src/SparrowFrontend/Grammar/Parser.h @@ -2,7 +2,8 @@ namespace SprFrontend { struct ParserContext; -struct Token; +struct CompilerErrorReporter; +struct CompilerAstBuilder; /// The parser for the Sparrow source files class Parser { @@ -20,7 +21,11 @@ class Parser { Node* parseExpression(); private: - /// The context of the Parser; used for interop with the code in Sparrow + //! The error reporter passed to the Sparrow parser code + CompilerErrorReporter* errReporter_; + //! The AST builder object passed to the Sparrow parser code + CompilerAstBuilder* astBuilder_; + //! The context of the Parser; used for interop with the code in Sparrow ParserContext* ctx_; }; } // namespace SprFrontend diff --git a/src/SparrowFrontend/Grammar/bufferedCharSource.spr b/src/SparrowFrontend/Grammar/bufferedCharSource.spr new file mode 100644 index 00000000..47c4b3a6 --- /dev/null +++ b/src/SparrowFrontend/Grammar/bufferedCharSource.spr @@ -0,0 +1,39 @@ +module sparrowc.spr.grammar.bufferedCharSource +//! A buffered CharSource and a range on top of it. +//! Used to generate a Char range from a given CharSource + +import ext + +using _bufferSize = 4096 + +datatype BufferedCharSource + _src: CharSource //!< The source from which we read characters + _buffer: String //!< Buffer in which we read characters; striving to keeping it with data + _curPos: Int //!< The current position in _buffer from which we read the current char + +fun ctor(this: @BufferedCharSource, src: CharSource) + _src ctor src + _buffer ctor + _buffer reserve _bufferSize + _curPos ctor 0 + this._ensureBufferHasData + +fun all(this: @BufferedCharSource) = BufferedCharSourceRange(this) + +fun _ensureBufferHasData(this: @BufferedCharSource) + if _curPos >= (_buffer size) + _buffer clear + _curPos = 0 + _src.readChars(_buffer, _bufferSize) + + +[initCtor] +datatype BufferedCharSourceRange + using RetType = Char + _data: @BufferedCharSource + +fun isEmpty(this: @BufferedCharSourceRange): Bool = _data._buffer.isEmpty +fun front(this: @BufferedCharSourceRange): Char = _data._buffer(_data._curPos) +fun popFront(this: @BufferedCharSourceRange) + _data._curPos++ + _data._ensureBufferHasData diff --git a/src/SparrowFrontend/Grammar/ext.spr b/src/SparrowFrontend/Grammar/ext.spr index 825b611b..06cc76ef 100644 --- a/src/SparrowFrontend/Grammar/ext.spr +++ b/src/SparrowFrontend/Grammar/ext.spr @@ -1,92 +1,234 @@ -/// External functions used in the Sparrow parser & scanner module sparrowc.spr.grammar.ext +/// Interfaces required for the Sparrow scanner / parser. +/// Typically provided by the compiler import node import meta.location +import std.string -// All the functions here are defined in the compiler - -[native("comp_parser_reportError")] -fun reportErrorExternal(loc: @Location, msg: StringRef) - -[native("comp_parser_addToNodeList")] -fun addToNodeList(nl, newNode: Node): Node - -[native("comp_parser_mkModifiers")] -fun mkModifiers(loc: @Location, main, mods: Node): Node -[native("comp_parser_mkModule")] -fun mkModule(loc: @Location, moduleName, decls: Node): Node -[native("comp_parser_mkImportName")] -fun mkImportName(loc: @Location, alias: StringRef, toImport, decls: Node): Node -[native("comp_parser_mkUsing")] -fun mkUsing(loc: @Location, alias: StringRef, usingNode: Node): Node -[native("comp_parser_mkPackage")] -fun mkPackage(loc: @Location, name: StringRef, children, params, ifClause: Node): Node -[native("comp_parser_mkDatatype")] -fun mkDatatype(loc: @Location, name: StringRef, params, underlyingData, ifClause, children: Node): Node -[native("comp_parser_mkField")] -fun mkField(loc: @Location, name: StringRef, typeNode, init: Node): Node -[native("comp_parser_mkConcept")] -fun mkConcept(loc: @Location, name, paramName: StringRef, baseConcept, ifClause: Node): Node -[native("comp_parser_mkVar")] -fun mkVar(loc: @Location, name: StringRef, typeNode, init: Node): Node -[native("comp_parser_mkParameter")] -fun mkParameter(loc: @Location, name: StringRef, typeNode, init: Node): Node -[native("comp_parser_mkFun")] -fun mkFun(loc: @Location, name: StringRef, formals, retType, body, bodyExp, ifClause: Node): Node - -[native("comp_parser_mkParenthesisExpr")] -fun mkParenthesisExpr(expr: Node): Node -[native("comp_parser_mkPostfixOp")] -fun mkPostfixOp(loc: @Location, base: Node, op: StringRef): Node -[native("comp_parser_mkInfixOp")] -fun mkInfixOp(loc: @Location, lhs: Node, op: StringRef, rhs: Node): Node -[native("comp_parser_mkPrefixOp")] -fun mkPrefixOp(loc: @Location, op: StringRef, base: Node): Node -[native("comp_parser_mkIdentifier")] -fun mkIdentifier(loc: @Location, id: StringRef): Node -[native("comp_parser_mkCompoundExpr")] -fun mkCompoundExpr(loc: @Location, base: Node, id: StringRef): Node -[native("comp_parser_mkStarExpr")] -fun mkStarExpr(loc: @Location, base: Node, id: StringRef): Node -[native("comp_parser_mkDotExpr")] -fun mkDotExpr(loc: @Location, base: Node, id: StringRef): Node -[native("comp_parser_mkFunAppExpr")] -fun mkFunAppExpr(loc: @Location, base, args: Node): Node -[native("comp_parser_mkLambdaExpr")] -fun mkLambdaExpr(loc: @Location, closureParams, formals, retType, body, bodyExpr: Node): Node -[native("comp_parser_mkNullLiteral")] -fun mkNullLiteral(loc: @Location): Node -[native("comp_parser_mkBoolLiteral")] -fun mkBoolLiteral(loc: @Location, val: Bool): Node -[native("comp_parser_mkIntLiteral")] -fun mkIntLiteral(loc: @Location, val: Int): Node -[native("comp_parser_mkUIntLiteral")] -fun mkUIntLiteral(loc: @Location, val: UInt): Node -[native("comp_parser_mkLongLiteral")] -fun mkLongLiteral(loc: @Location, val: Long): Node -[native("comp_parser_mkULongLiteral")] -fun mkULongLiteral(loc: @Location, val: ULong): Node -[native("comp_parser_mkFloatLiteral")] -fun mkFloatLiteral(loc: @Location, val: Float): Node -[native("comp_parser_mkDoubleLiteral")] -fun mkDoubleLiteral(loc: @Location, val: Double): Node -[native("comp_parser_mkCharLiteral")] -fun mkCharLiteral(loc: @Location, val: Char): Node -[native("comp_parser_mkStringLiteral")] -fun mkStringLiteral(loc: @Location, data: StringRef): Node - -[native("comp_parser_mkBlockStmt")] -fun mkBlockStmt(loc: @Location, stmts: Node): Node -[native("comp_parser_mkIfStmt")] -fun mkIfStmt(loc: @Location, expr, thenClause, elseClause: Node): Node -[native("comp_parser_mkForStmt")] -fun mkForStmt(loc: @Location, id: StringRef, typeNode, range, action: Node): Node -[native("comp_parser_mkWhileStmt")] -fun mkWhileStmt(loc: @Location, expr, stepAction, body: Node): Node -[native("comp_parser_mkBreakStmt")] -fun mkBreakStmt(loc: @Location): Node -[native("comp_parser_mkContinueStmt")] -fun mkContinueStmt(loc: @Location): Node -[native("comp_parser_mkReturnStmt")] -fun mkReturnStmt(loc: @Location, expr: Node): Node +fun _returnsVoid {} +using VoidType = typeOf(_returnsVoid()) + +fun _reinterpretAssign(dest: @AnyType, src: AnyType) + reinterpretCast(@typeOf(src), dest) = src +fun _eraseType(obj: @AnyType): UntypedPtr + return UntypedPtr(reinterpretCast(@Byte, obj)) + +//! Interface that models a source of characters. +//! It allows the caller to read multiple characters at once +datatype CharSource + userData: UntypedPtr + readCharsFn: FunctionPtr(VoidType, UntypedPtr, @String, Int) + +concept CharSourceType(x) \ + if isValid(x.readChars(StringRef(), 0)) + +fun mkCharSource(obj: @CharSourceType): CharSource + var res: CharSource + res.userData = _eraseType(obj) + res.readCharsFn _reinterpretAssign \(obj.readChars) + return res + +fun readChars(obj: CharSource, dest: @String, numChars: Int) + obj.readCharsFn(obj.userData, dest, numChars) + + + +//! Interface for the object used to report errors +datatype ErrorReporter + userData: UntypedPtr + reportErrorFn: FunctionPtr(VoidType, UntypedPtr, @Location, StringRef) + +concept ErrorReporterType(x) \ + if isValid(x.reportError(Location(), StringRef())) + +fun mkErrorReporter(obj: @ErrorReporterType): ErrorReporter + var res: ErrorReporter + res.userData = _eraseType(obj) + res.reportErrorFn _reinterpretAssign \(obj.reportError) + return res + +fun reportError(obj: ErrorReporter, loc: @Location, msg: StringRef) + obj.reportErrorFn(obj.userData, loc, msg) + +fun reportError(obj: ErrorReporter, loc: @Location, msg: @String) + obj.reportErrorFn(obj.userData, loc, msg.asStringRef) + + +//! Interface for the object called to create the AST nodes generated by the parser +datatype AstBuilder + userData: UntypedPtr + + addToNodeListFn: FunctionPtr(Node, UntypedPtr, Node, Node) + + mkModifiersFn: FunctionPtr(Node, UntypedPtr, @Location, Node, Node) + mkModuleFn: FunctionPtr(Node, UntypedPtr, @Location, Node, Node) + mkImportNameFn: FunctionPtr(Node, UntypedPtr, @Location, StringRef, Node, Node) + mkUsingFn: FunctionPtr(Node, UntypedPtr, @Location, StringRef, Node) + mkPackageFn: FunctionPtr(Node, UntypedPtr, @Location, StringRef, Node, Node, Node) + mkDatatypeFn: FunctionPtr(Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node) + mkFieldFn: FunctionPtr(Node, UntypedPtr, @Location, StringRef, Node, Node) + mkConceptFn: FunctionPtr(Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node) + mkVarFn: FunctionPtr(Node, UntypedPtr, @Location, StringRef, Node, Node) + mkParameterFn: FunctionPtr(Node, UntypedPtr, @Location, StringRef, Node, Node) + mkFunFn: FunctionPtr(Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node) + + mkParenthesisExprFn:FunctionPtr(Node, UntypedPtr, Node) + mkPostfixOpFn: FunctionPtr(Node, UntypedPtr, @Location, Node, StringRef) + mkInfixOpFn: FunctionPtr(Node, UntypedPtr, @Location, Node, StringRef, Node) + mkPrefixOpFn: FunctionPtr(Node, UntypedPtr, @Location, StringRef, Node) + mkIdentifierFn: FunctionPtr(Node, UntypedPtr, @Location, StringRef) + mkCompoundExprFn: FunctionPtr(Node, UntypedPtr, @Location, Node, StringRef) + mkStarExprFn: FunctionPtr(Node, UntypedPtr, @Location, Node, StringRef) + mkDotExprFn: FunctionPtr(Node, UntypedPtr, @Location, Node, StringRef) + mkFunAppExprFn: FunctionPtr(Node, UntypedPtr, @Location, Node, Node) + mkLambdaExprFn: FunctionPtr(Node, UntypedPtr, @Location, Node, Node, Node, Node, Node) + mkNullLiteralFn: FunctionPtr(Node, UntypedPtr, @Location) + mkBoolLiteralFn: FunctionPtr(Node, UntypedPtr, @Location, Bool) + mkIntLiteralFn: FunctionPtr(Node, UntypedPtr, @Location, Int) + mkUIntLiteralFn: FunctionPtr(Node, UntypedPtr, @Location, UInt) + mkLongLiteralFn: FunctionPtr(Node, UntypedPtr, @Location, Long) + mkULongLiteralFn: FunctionPtr(Node, UntypedPtr, @Location, ULong) + mkFloatLiteralFn: FunctionPtr(Node, UntypedPtr, @Location, Float) + mkDoubleLiteralFn: FunctionPtr(Node, UntypedPtr, @Location, Double) + mkCharLiteralFn: FunctionPtr(Node, UntypedPtr, @Location, Char) + mkStringLiteralFn: FunctionPtr(Node, UntypedPtr, @Location, StringRef) + + mkBlockStmtFn: FunctionPtr(Node, UntypedPtr, @Location, Node) + mkIfStmtFn: FunctionPtr(Node, UntypedPtr, @Location, Node, Node, Node) + mkForStmtFn: FunctionPtr(Node, UntypedPtr, @Location, StringRef, Node, Node, Node) + mkWhileStmtFn: FunctionPtr(Node, UntypedPtr, @Location, Node, Node, Node) + mkBreakStmtFn: FunctionPtr(Node, UntypedPtr, @Location) + mkContinueStmtFn: FunctionPtr(Node, UntypedPtr, @Location) + mkReturnStmtFn: FunctionPtr(Node, UntypedPtr, @Location, Node) + +fun mkAstBuilder(obj: @AnyType): AstBuilder + var res: AstBuilder + res.userData = _eraseType(obj) + res.addToNodeListFn _reinterpretAssign \(obj.addToNodeList) + + res.mkModifiersFn _reinterpretAssign \(obj.mkModifiers) + res.mkModuleFn _reinterpretAssign \(obj.mkModule) + res.mkImportNameFn _reinterpretAssign \(obj.mkImportName) + res.mkUsingFn _reinterpretAssign \(obj.mkUsing) + res.mkPackageFn _reinterpretAssign \(obj.mkPackage) + res.mkDatatypeFn _reinterpretAssign \(obj.mkDatatype) + res.mkFieldFn _reinterpretAssign \(obj.mkField) + res.mkConceptFn _reinterpretAssign \(obj.mkConcept) + res.mkVarFn _reinterpretAssign \(obj.mkVar) + res.mkParameterFn _reinterpretAssign \(obj.mkParameter) + res.mkFunFn _reinterpretAssign \(obj.mkFun) + + res.mkParenthesisExprFn _reinterpretAssign \(obj.mkParenthesisExpr) + res.mkPostfixOpFn _reinterpretAssign \(obj.mkPostfixOp) + res.mkInfixOpFn _reinterpretAssign \(obj.mkInfixOp) + res.mkPrefixOpFn _reinterpretAssign \(obj.mkPrefixOp) + res.mkIdentifierFn _reinterpretAssign \(obj.mkIdentifier) + res.mkCompoundExprFn _reinterpretAssign \(obj.mkCompoundExpr) + res.mkStarExprFn _reinterpretAssign \(obj.mkStarExpr) + res.mkDotExprFn _reinterpretAssign \(obj.mkDotExpr) + res.mkFunAppExprFn _reinterpretAssign \(obj.mkFunAppExpr) + res.mkLambdaExprFn _reinterpretAssign \(obj.mkLambdaExpr) + res.mkNullLiteralFn _reinterpretAssign \(obj.mkNullLiteral) + res.mkBoolLiteralFn _reinterpretAssign \(obj.mkBoolLiteral) + res.mkIntLiteralFn _reinterpretAssign \(obj.mkIntLiteral) + res.mkUIntLiteralFn _reinterpretAssign \(obj.mkUIntLiteral) + res.mkLongLiteralFn _reinterpretAssign \(obj.mkLongLiteral) + res.mkULongLiteralFn _reinterpretAssign \(obj.mkULongLiteral) + res.mkFloatLiteralFn _reinterpretAssign \(obj.mkFloatLiteral) + res.mkDoubleLiteralFn _reinterpretAssign \(obj.mkDoubleLiteral) + res.mkCharLiteralFn _reinterpretAssign \(obj.mkCharLiteral) + res.mkStringLiteralFn _reinterpretAssign \(obj.mkStringLiteral) + + res.mkBlockStmtFn _reinterpretAssign \(obj.mkBlockStmt) + res.mkIfStmtFn _reinterpretAssign \(obj.mkIfStmt) + res.mkForStmtFn _reinterpretAssign \(obj.mkForStmt) + res.mkWhileStmtFn _reinterpretAssign \(obj.mkWhileStmt) + res.mkBreakStmtFn _reinterpretAssign \(obj.mkBreakStmt) + res.mkContinueStmtFn _reinterpretAssign \(obj.mkContinueStmt) + res.mkReturnStmtFn _reinterpretAssign \(obj.mkReturnStmt) + return res + + + +fun addToNodeList(obj: @AstBuilder, nl, newNode: Node): Node + return obj.addToNodeListFn(obj.userData, nl, newNode) + +fun mkModifiers(obj: @AstBuilder, loc: @Location, main, mods: Node): Node + return obj.mkModifiersFn(obj.userData, loc, main, mods) +fun mkModule(obj: @AstBuilder, loc: @Location, moduleName, decls: Node): Node + return obj.mkModuleFn(obj.userData, loc, moduleName, decls) +fun mkImportName(obj: @AstBuilder, loc: @Location, alias: StringRef, toImport, decls: Node): Node + return obj.mkImportNameFn(obj.userData, loc, alias, toImport, decls) +fun mkUsing(obj: @AstBuilder, loc: @Location, alias: StringRef, usingNode: Node): Node + return obj.mkUsingFn(obj.userData, loc, alias, usingNode) +fun mkPackage(obj: @AstBuilder, loc: @Location, name: StringRef, children, params, ifClause: Node): Node + return obj.mkPackageFn(obj.userData, loc, name, children, params, ifClause) +fun mkDatatype(obj: @AstBuilder, loc: @Location, name: StringRef, params, underlyingData, ifClause, children: Node): Node + return obj.mkDatatypeFn(obj.userData, loc, name, params, underlyingData, ifClause, children) +fun mkField(obj: @AstBuilder, loc: @Location, name: StringRef, typeNode, init: Node): Node + return obj.mkFieldFn(obj.userData, loc, name, typeNode, init) +fun mkConcept(obj: @AstBuilder, loc: @Location, name, paramName: StringRef, baseConcept, ifClause: Node): Node + return obj.mkConceptFn(obj.userData, loc, name, paramName, baseConcept, ifClause) +fun mkVar(obj: @AstBuilder, loc: @Location, name: StringRef, typeNode, init: Node): Node + return obj.mkVarFn(obj.userData, loc, name, typeNode, init) +fun mkParameter(obj: @AstBuilder, loc: @Location, name: StringRef, typeNode, init: Node): Node + return obj.mkParameterFn(obj.userData, loc, name, typeNode, init) +fun mkFun(obj: @AstBuilder, loc: @Location, name: StringRef, formals, retType, body, bodyExp, ifClause: Node): Node + return obj.mkFunFn(obj.userData, loc, name, formals, retType, body, bodyExp, ifClause) + +fun mkParenthesisExpr(obj: @AstBuilder, expr: Node): Node + return obj.mkParenthesisExprFn(obj.userData, expr) +fun mkPostfixOp(obj: @AstBuilder, loc: @Location, base: Node, op: StringRef): Node + return obj.mkPostfixOpFn(obj.userData, loc, base, op) +fun mkInfixOp(obj: @AstBuilder, loc: @Location, lhs: Node, op: StringRef, rhs: Node): Node + return obj.mkInfixOpFn(obj.userData, loc, lhs, op, rhs) +fun mkPrefixOp(obj: @AstBuilder, loc: @Location, op: StringRef, base: Node): Node + return obj.mkPrefixOpFn(obj.userData, loc, op, base) +fun mkIdentifier(obj: @AstBuilder, loc: @Location, id: StringRef): Node + return obj.mkIdentifierFn(obj.userData, loc, id) +fun mkCompoundExpr(obj: @AstBuilder, loc: @Location, base: Node, id: StringRef): Node + return obj.mkCompoundExprFn(obj.userData, loc, base, id) +fun mkStarExpr(obj: @AstBuilder, loc: @Location, base: Node, id: StringRef): Node + return obj.mkStarExprFn(obj.userData, loc, base, id) +fun mkDotExpr(obj: @AstBuilder, loc: @Location, base: Node, id: StringRef): Node + return obj.mkDotExprFn(obj.userData, loc, base, id) +fun mkFunAppExpr(obj: @AstBuilder, loc: @Location, base, args: Node): Node + return obj.mkFunAppExprFn(obj.userData, loc, base, args) +fun mkLambdaExpr(obj: @AstBuilder, loc: @Location, closureParams, formals, retType, body, bodyExpr: Node): Node + return obj.mkLambdaExprFn(obj.userData, loc, closureParams, formals, retType, body, bodyExpr) +fun mkNullLiteral(obj: @AstBuilder, loc: @Location): Node + return obj.mkNullLiteralFn(obj.userData, loc) +fun mkBoolLiteral(obj: @AstBuilder, loc: @Location, val: Bool): Node + return obj.mkBoolLiteralFn(obj.userData, loc, val) +fun mkIntLiteral(obj: @AstBuilder, loc: @Location, val: Int): Node + return obj.mkIntLiteralFn(obj.userData, loc, val) +fun mkUIntLiteral(obj: @AstBuilder, loc: @Location, val: UInt): Node + return obj.mkUIntLiteralFn(obj.userData, loc, val) +fun mkLongLiteral(obj: @AstBuilder, loc: @Location, val: Long): Node + return obj.mkLongLiteralFn(obj.userData, loc, val) +fun mkULongLiteral(obj: @AstBuilder, loc: @Location, val: ULong): Node + return obj.mkULongLiteralFn(obj.userData, loc, val) +fun mkFloatLiteral(obj: @AstBuilder, loc: @Location, val: Float): Node + return obj.mkFloatLiteralFn(obj.userData, loc, val) +fun mkDoubleLiteral(obj: @AstBuilder, loc: @Location, val: Double): Node + return obj.mkDoubleLiteralFn(obj.userData, loc, val) +fun mkCharLiteral(obj: @AstBuilder, loc: @Location, val: Char): Node + return obj.mkCharLiteralFn(obj.userData, loc, val) +fun mkStringLiteral(obj: @AstBuilder, loc: @Location, data: StringRef): Node + return obj.mkStringLiteralFn(obj.userData, loc, data) + +fun mkBlockStmt(obj: @AstBuilder, loc: @Location, stmts: Node): Node + return obj.mkBlockStmtFn(obj.userData, loc, stmts) +fun mkIfStmt(obj: @AstBuilder, loc: @Location, expr, thenClause, elseClause: Node): Node + return obj.mkIfStmtFn(obj.userData, loc, expr, thenClause, elseClause) +fun mkForStmt(obj: @AstBuilder, loc: @Location, id: StringRef, typeNode, range, action: Node): Node + return obj.mkForStmtFn(obj.userData, loc, id, typeNode, range, action) +fun mkWhileStmt(obj: @AstBuilder, loc: @Location, expr, stepAction, body: Node): Node + return obj.mkWhileStmtFn(obj.userData, loc, expr, stepAction, body) +fun mkBreakStmt(obj: @AstBuilder, loc: @Location): Node + return obj.mkBreakStmtFn(obj.userData, loc) +fun mkContinueStmt(obj: @AstBuilder, loc: @Location): Node + return obj.mkContinueStmtFn(obj.userData, loc) +fun mkReturnStmt(obj: @AstBuilder, loc: @Location, expr: Node): Node + return obj.mkReturnStmtFn(obj.userData, loc, expr) diff --git a/src/SparrowFrontend/Grammar/fileCharSource.spr b/src/SparrowFrontend/Grammar/fileCharSource.spr new file mode 100644 index 00000000..3b3cf5ec --- /dev/null +++ b/src/SparrowFrontend/Grammar/fileCharSource.spr @@ -0,0 +1,18 @@ +import ext +import os, std.ranges, std.string + +//! A char source that reads the content of a file +datatype FileCharSource + _file: File + +fun ctor(this: @FileCharSource, filename: StringRef) + _file ctor filename + +fun isValid(this: @FileCharSource) = _file.isOpen + +fun readChars(this: @FileCharSource, dest: @String, numChars: Int) + for i = 0..numChars + var ch = _file.readChar + if _file.isEof + break + dest += ch diff --git a/src/SparrowFrontend/Grammar/layoutDecoder.spr b/src/SparrowFrontend/Grammar/layoutDecoder.spr index bf9b54c3..7b092001 100644 --- a/src/SparrowFrontend/Grammar/layoutDecoder.spr +++ b/src/SparrowFrontend/Grammar/layoutDecoder.spr @@ -1,6 +1,6 @@ module sparrowc.spr.grammar.layoutDecoder -import parserDefs, node, token, ext, rangeWithLookahead +import parserDefs, node, token, ext, rangeWithLookahead, ext import meta.location /** @@ -19,16 +19,15 @@ import meta.location * 4) inside parenthesis or brackets, we don't insert anything, except: * - if we are inside curly braces that are inside the inner most paren/brackets */ -datatype SparrowLayoutDecoder(tokensRangeType, errorReporterType: Type) \ - if TokenRange(#$tokensRangeType) && ErrorReporter(#$errorReporterType) +datatype SparrowLayoutDecoder(tokensRangeType: Type) \ + if TokenRange(#$tokensRangeType) using RetType = Token using _TokensRangeType = tokensRangeType - using _ErrRepType = errorReporterType /// The source ranges of tokens we will used while parsing _src: RangeWithLookahead(tokensRangeType) /// Object used to report errors - _errorReporter: errorReporterType + _errorReporter: ErrorReporter /// The vector containing the current indents levels _indents: UInt Vector /// The vector of currently open parenthesis and brackets @@ -39,7 +38,7 @@ datatype SparrowLayoutDecoder(tokensRangeType, errorReporterType: Type) \ /// If the number of tokens is greater than 1, we change the type to '}' _toInjectCnt: Int -fun ctor(this: @SparrowLayoutDecoder, tokens: this._TokensRangeType, errorReporter: this._ErrRepType) +fun ctor(this: @SparrowLayoutDecoder, tokens: this._TokensRangeType, errorReporter: ErrorReporter) this._src ctor tokens this._errorReporter ctor errorReporter this._indents += 1 // Start at column 1 diff --git a/src/SparrowFrontend/Grammar/node.spr b/src/SparrowFrontend/Grammar/node.spr index 6174b652..e9f5d730 100644 --- a/src/SparrowFrontend/Grammar/node.spr +++ b/src/SparrowFrontend/Grammar/node.spr @@ -1,6 +1,7 @@ module sparrowc.spr.grammar.node /// A node in the compiler, expressing the root of an AST +[bitcopiable] datatype Node = UntypedPtr fun isSet(n: Node): Bool = n.data.data !== null diff --git a/src/SparrowFrontend/Grammar/parser.spr b/src/SparrowFrontend/Grammar/parser.spr index 27828816..7a7f49a6 100644 --- a/src/SparrowFrontend/Grammar/parser.spr +++ b/src/SparrowFrontend/Grammar/parser.spr @@ -10,10 +10,8 @@ import meta.location /// /// All the nodes are created outside the parser; we only care about node pointers /// -datatype SparrowParser(tokensRangeType, errorReporterType: Type) \ - if TokenRange(#$tokensRangeType) && ErrorReporter(#$errorReporterType) +datatype SparrowParser(tokensRangeType: Type) if TokenRange(#$tokensRangeType) using _TokensRangeType = tokensRangeType - using _ErrRepType = errorReporterType /// The source ranges of tokens we will used while parsing _tokens: RangeWithLookahead(tokensRangeType) @@ -21,12 +19,15 @@ datatype SparrowParser(tokensRangeType, errorReporterType: Type) \ _lastToken: Token /// Indicates whether we have some syntax errors _hasErrors: Bool + /// Object used to create the AST nodes + _astBuilder: AstBuilder /// Object used to report errors - _errorReporter: errorReporterType + _errorReporter: ErrorReporter -fun ctor(this: @SparrowParser, tokens: this._TokensRangeType, errorReporter: this._ErrRepType) +fun ctor(this: @SparrowParser, tokens: this._TokensRangeType, astBuilder: @AstBuilder, errorReporter: ErrorReporter) this._tokens ctor tokens this._hasErrors ctor false + this._astBuilder ctor astBuilder this._errorReporter ctor errorReporter using parseModule = _Impl.parseModule @@ -74,7 +75,7 @@ package _Impl var decls: Node parseStmts(this, true, decls) this expect tkEND - return mkModule(loc span (this lastLoc), moduleName, decls) + return _astBuilder.mkModule(loc span (this lastLoc), moduleName, decls) fun parseExpression(this: @SparrowParser): Node var res = parseExpr(this) @@ -133,15 +134,15 @@ package _Impl fun parseQualifiedName(this: @SparrowParser, allowStar: Bool = false): Node var loc = this curLoc this expect tkIDENTIFIER - var base = mkIdentifier(loc, _lastToken.data.asStringRef) + var base = _astBuilder.mkIdentifier(loc, _lastToken.data.asStringRef) var lastId = _lastToken.data while this accept tkDOT if allowStar && (this accept tkOPERATOR) - base = mkStarExpr(loc span (this lastLoc), base, _lastToken.data.asStringRef) + base = _astBuilder.mkStarExpr(loc span (this lastLoc), base, _lastToken.data.asStringRef) break this expect tkIDENTIFIER - base = mkCompoundExpr(loc span (this lastLoc), base, _lastToken.data.asStringRef) + base = _astBuilder.mkCompoundExpr(loc span (this lastLoc), base, _lastToken.data.asStringRef) return base fun parseIdList(this: @SparrowParser): LocStringVec @@ -155,19 +156,19 @@ package _Impl fun parseIdListNode(this: @SparrowParser): Node var res: Node var id = parseId(this) - res = addToNodeList(res, mkIdentifier(_lastToken.loc, id.asStringRef)) + res = _astBuilder.addToNodeList(res, _astBuilder.mkIdentifier(_lastToken.loc, id.asStringRef)) while this accept tkCOMMA id = parseId(this) - res = addToNodeList(res, mkIdentifier(_lastToken.loc, id.asStringRef)) + res = _astBuilder.addToNodeList(res, _astBuilder.mkIdentifier(_lastToken.loc, id.asStringRef)) return res fun parseIdOrOperListNode(this: @SparrowParser): Node var res: Node var id = parseIdOrOper(this) - res = addToNodeList(res, mkIdentifier(_lastToken.loc, id.asStringRef)) + res = _astBuilder.addToNodeList(res, _astBuilder.mkIdentifier(_lastToken.loc, id.asStringRef)) while this accept tkCOMMA id = parseIdOrOper(this) - res = addToNodeList(res, mkIdentifier(_lastToken.loc, id.asStringRef)) + res = _astBuilder.addToNodeList(res, _astBuilder.mkIdentifier(_lastToken.loc, id.asStringRef)) return res /////////////////////////////////////////////////////////////////////////////// @@ -186,10 +187,10 @@ package _Impl if this accept tkLBRACKET var e: Node e = parseExpr(this) - res = addToNodeList(res, e) + res = _astBuilder.addToNodeList(res, e) while this accept tkCOMMA e = parseExpr(this) - res = addToNodeList(res, e) + res = _astBuilder.addToNodeList(res, e) this expect tkRBRACKET // Ignore any possible semicolons (newlines) after the modifiers @@ -200,7 +201,7 @@ package _Impl while true var child = parseStmt(this, topLevel) if child isSet - res = addToNodeList(res, child) + res = _astBuilder.addToNodeList(res, child) continue // No more top level decls found @@ -233,7 +234,7 @@ package _Impl if mods isSet if found - res = mkModifiers(loc span (this lastLoc), res, mods) + res = _astBuilder.mkModifiers(loc span (this lastLoc), res, mods) else this reportError toString("Syntax error, unexpected ", (*_tokens).type, ", expecting statement") @@ -247,19 +248,19 @@ package _Impl return false fun parseImportNames(this: @SparrowParser): Node var res: Node - res = addToNodeList(res, parseImportName(this)) + res = _astBuilder.addToNodeList(res, parseImportName(this)) while this accept tkCOMMA - res = addToNodeList(res, parseImportName(this)) + res = _astBuilder.addToNodeList(res, parseImportName(this)) return res fun parseImportName(this: @SparrowParser): Node var loc = this curLoc var id = parseIdEqualOpt(this) var toImport = parseQidOrString(this) var declNames = parseImportDeclNamesOpt(this) - return mkImportName(loc span (this lastLoc), id.asStringRef, toImport, declNames) + return _astBuilder.mkImportName(loc span (this lastLoc), id.asStringRef, toImport, declNames) fun parseQidOrString(this: @SparrowParser): Node if this accept tkSTRING_LITERAL - return mkStringLiteral(_lastToken.loc, _lastToken.data.asStringRef) + return _astBuilder.mkStringLiteral(_lastToken.loc, _lastToken.data.asStringRef) return parseQualifiedName(this) fun parseImportDeclNamesOpt(this: @SparrowParser): Node var res: Node @@ -280,7 +281,7 @@ package _Impl usingNode = parseExpr(this) loc copyEnd _lastToken.loc this expect tkSEMICOLON - res = mkUsing(loc, id.asStringRef, usingNode) + res = _astBuilder.mkUsing(loc, id.asStringRef, usingNode) return true fun parsePackageDecl(this: @SparrowParser, res: @Node): Bool if !(this accept tkPACKAGE) @@ -294,7 +295,7 @@ package _Impl parseStmts(this, true, children) this expect tkRCURLY loc copyEnd _lastToken.loc - res = mkPackage(loc, id.asStringRef, children, formals, ifClause) + res = _astBuilder.mkPackage(loc, id.asStringRef, children, formals, ifClause) return true fun parseDatatypeDecl(this: @SparrowParser, res: @Node): Bool if !(this accept tkDATATYPE) @@ -307,7 +308,7 @@ package _Impl var ifClause = parseIfClauseOpt(this) this expect tkSEMICOLON loc copyEnd _lastToken.loc - res = mkDatatype(loc, id.asStringRef, formals, underlyingData, ifClause, Node()) + res = _astBuilder.mkDatatype(loc, id.asStringRef, formals, underlyingData, ifClause, Node()) else var ifClause = parseIfClauseOpt(this) var children: Node @@ -320,13 +321,13 @@ package _Impl if this nextIs tkRCURLY break var usingNode: Node if parseUsingDecl(this, usingNode) - children = addToNodeList(children, usingNode) + children = _astBuilder.addToNodeList(children, usingNode) else parseFieldsLine(this, children) while (this accept tkCOMMA) || (this accept tkSEMICOLON) {} this expect tkRCURLY loc copyEnd _lastToken.loc - res = mkDatatype(loc, id.asStringRef, formals, Node(), ifClause, children) + res = _astBuilder.mkDatatype(loc, id.asStringRef, formals, Node(), ifClause, children) return true fun parseConceptDecl(this: @SparrowParser, res: @Node): Bool if !(this accept tkCONCEPT) @@ -340,7 +341,7 @@ package _Impl var ifClause = parseIfClauseOpt(this) this expect tkSEMICOLON loc copyEnd _lastToken.loc - res = mkConcept(loc, id.asStringRef, paramName.asStringRef, baseConcept, ifClause) + res = _astBuilder.mkConcept(loc, id.asStringRef, paramName.asStringRef, baseConcept, ifClause) return true fun parseVarDecl(this: @SparrowParser, res: @Node): Bool if !(this accept tkVAR) @@ -356,7 +357,7 @@ package _Impl init = parseExpr(this) this expect tkSEMICOLON - createFormals(ids, typeNode, init, true, res) + createFormals(_astBuilder, ids, typeNode, init, true, res) return true fun parseFunDecl(this: @SparrowParser, res: @Node): Bool if !(this accept tkFUN) @@ -374,7 +375,7 @@ package _Impl ifClause = parseIfClauseOpt(this) body = parseFunBody(this) loc copyEnd _lastToken.loc - res = mkFun(loc, id.asStringRef, formals, retType, body, bodyExp, ifClause) + res = _astBuilder.mkFun(loc, id.asStringRef, formals, retType, body, bodyExp, ifClause) return true fun parseFunNameString(this: @SparrowParser): String @@ -398,7 +399,7 @@ package _Impl // Simplified versions: just names, without parenthesis var loc = this curLoc var ids = parseIdList(this) - createFormals(ids, mkIdentifier(loc span (this lastLoc), "AnyType"), Node(), varFormals, res) + createFormals(_astBuilder, ids, _astBuilder.mkIdentifier(loc span (this lastLoc), "AnyType"), Node(), varFormals, res) return res fun parseFormal(this: @SparrowParser, varFormals: Bool, res: @Node) var ids = parseIdList(this) @@ -407,16 +408,16 @@ package _Impl var init: Node if this accept tkEQUAL init = parseExpr(this) - createFormals(ids, typeNode, init, varFormals, res) - fun createFormals(ids: @LocStringVec, typeNode, init: Node, varFormals: Bool, res: @Node) + createFormals(_astBuilder, ids, typeNode, init, varFormals, res) + fun createFormals(astBuilder: @AstBuilder, ids: @LocStringVec, typeNode, init: Node, varFormals: Bool, res: @Node) if varFormals for id: @LocString = ids.all - var v = mkVar(id.data.v1, id.data.v2.asStringRef, typeNode, init) - res = addToNodeList(res, v) + var v = astBuilder.mkVar(id.data.v1, id.data.v2.asStringRef, typeNode, init) + res = astBuilder.addToNodeList(res, v) else for id: @LocString = ids.all - var p = mkParameter(id.data.v1, id.data.v2.asStringRef, typeNode, init) - res = addToNodeList(res, p) + var p = astBuilder.mkParameter(id.data.v1, id.data.v2.asStringRef, typeNode, init) + res = astBuilder.addToNodeList(res, p) fun parseFieldsLine(this: @SparrowParser, res: @Node) var ids = parseIdList(this) this expect tkCOLON @@ -425,8 +426,8 @@ package _Impl if this accept tkEQUAL init = parseExpr(this) for id: @LocString = ids.all - var v = mkField(id.data.v1, id.data.v2.asStringRef, typeNode, init) - res = addToNodeList(res, v) + var v = _astBuilder.mkField(id.data.v1, id.data.v2.asStringRef, typeNode, init) + res = _astBuilder.addToNodeList(res, v) fun parseTypeNode(this: @SparrowParser): Node if this accept tkCOLON return parseExpr(this, false) @@ -455,7 +456,7 @@ package _Impl if this accept tkELSE elseClause = parseStmt(this, true) loc copyEnd _lastToken.loc - res = mkIfStmt(loc, expr, thenClause, elseClause) + res = _astBuilder.mkIfStmt(loc, expr, thenClause, elseClause) return true /////////////////////////////////////////////////////////////////////////////// @@ -499,10 +500,10 @@ package _Impl var expr: Node if !parseExprOpt(this, expr) return res // no expression found - res = addToNodeList(res, expr) + res = _astBuilder.addToNodeList(res, expr) while this accept tkCOMMA expr = parseExpr(this) - res = addToNodeList(res, expr) + res = _astBuilder.addToNodeList(res, expr) return res // Logic for parsing infix & postfix expressions @@ -517,10 +518,10 @@ package _Impl if nextIsExpr(this, withEqual) // Infix expression var rhs = parsePrefixExpr(this, withEqual) - baseExpr = mkInfixOp(loc span (this lastLoc), baseExpr, op.asStringRef, rhs) + baseExpr = _astBuilder.mkInfixOp(loc span (this lastLoc), baseExpr, op.asStringRef, rhs) else // The end of a postfix expression - baseExpr = mkPostfixOp(loc span (this lastLoc), baseExpr, op.asStringRef) + baseExpr = _astBuilder.mkPostfixOp(loc span (this lastLoc), baseExpr, op.asStringRef) break return baseExpr @@ -537,7 +538,7 @@ package _Impl return parseSimpleExpr(this) else var baseExpr = parsePrefixExpr(this) - return mkPrefixOp(loc span (this lastLoc), op.asStringRef, baseExpr) + return _astBuilder.mkPrefixOp(loc span (this lastLoc), op.asStringRef, baseExpr) fun parseSimpleExpr(this: @SparrowParser, withEqual: Bool = true): Node var res: Node @@ -545,32 +546,32 @@ package _Impl if (this nextIs tkLPAREN) && (this next2Is tkFUN) res = parseLambdaExpr(this) else if this accept tkLPAREN - res = mkParenthesisExpr(parseExpr(this)) + res = _astBuilder.mkParenthesisExpr(parseExpr(this)) this expect tkRPAREN else if this accept tkIDENTIFIER - res = mkIdentifier(_lastToken.loc, _lastToken.data.asStringRef) + res = _astBuilder.mkIdentifier(_lastToken.loc, _lastToken.data.asStringRef) else if this accept tkNULLCT - res = mkNullLiteral(_lastToken.loc) + res = _astBuilder.mkNullLiteral(_lastToken.loc) else if this accept tkTRUE - res = mkBoolLiteral(_lastToken.loc, true) + res = _astBuilder.mkBoolLiteral(_lastToken.loc, true) else if this accept tkFALSE - res = mkBoolLiteral(_lastToken.loc, false) + res = _astBuilder.mkBoolLiteral(_lastToken.loc, false) else if this accept tkINT_LITERAL - res = mkIntLiteral(_lastToken.loc, Int(_lastToken.intData)) + res = _astBuilder.mkIntLiteral(_lastToken.loc, Int(_lastToken.intData)) else if this accept tkUINT_LITERAL - res = mkUIntLiteral(_lastToken.loc, UInt(_lastToken.intData)) + res = _astBuilder.mkUIntLiteral(_lastToken.loc, UInt(_lastToken.intData)) else if this accept tkLONG_LITERAL - res = mkLongLiteral(_lastToken.loc, Long(_lastToken.intData)) + res = _astBuilder.mkLongLiteral(_lastToken.loc, Long(_lastToken.intData)) else if this accept tkULONG_LITERAL - res = mkULongLiteral(_lastToken.loc, ULong(_lastToken.intData)) + res = _astBuilder.mkULongLiteral(_lastToken.loc, ULong(_lastToken.intData)) else if this accept tkFLOAT_LITERAL - res = mkFloatLiteral(_lastToken.loc, Float(_lastToken.floatData)) + res = _astBuilder.mkFloatLiteral(_lastToken.loc, Float(_lastToken.floatData)) else if this accept tkDOUBLE_LITERAL - res = mkDoubleLiteral(_lastToken.loc, Double(_lastToken.floatData)) + res = _astBuilder.mkDoubleLiteral(_lastToken.loc, Double(_lastToken.floatData)) else if this accept tkCHAR_LITERAL - res = mkCharLiteral(_lastToken.loc, _lastToken.data(0)) + res = _astBuilder.mkCharLiteral(_lastToken.loc, _lastToken.data(0)) else if this accept tkSTRING_LITERAL - res = mkStringLiteral(_lastToken.loc, _lastToken.data.asStringRef) + res = _astBuilder.mkStringLiteral(_lastToken.loc, _lastToken.data.asStringRef) if res isNull this reportError toString("Syntax error, unexpected ", (*_tokens).type, ", expecting expression") @@ -581,14 +582,14 @@ package _Impl if this accept tkLPAREN var args = parseExprListOpt(this) this expect tkRPAREN - res = mkFunAppExpr(loc span (this lastLoc), res, args) + res = _astBuilder.mkFunAppExpr(loc span (this lastLoc), res, args) else if this accept tkDOT if this accept tkLPAREN this expect tkRPAREN - res = mkDotExpr(loc span (this lastLoc), res, "()") + res = _astBuilder.mkDotExpr(loc span (this lastLoc), res, "()") else var id = parseIdOrOper(this, withEqual) - res = mkDotExpr(loc span (this lastLoc), res, id.asStringRef) + res = _astBuilder.mkDotExpr(loc span (this lastLoc), res, id.asStringRef) else break @@ -606,7 +607,7 @@ package _Impl else body = parseFunBody(this) this expect tkRPAREN - return mkLambdaExpr(loc span (this lastLoc), closureParams, formals, retType, body, bodyExp) + return _astBuilder.mkLambdaExpr(loc span (this lastLoc), closureParams, formals, retType, body, bodyExp) fun parseClosureParams(this: @SparrowParser): Node var res: Node if this accept tkDOT @@ -630,12 +631,12 @@ package _Impl while !(this nextIs tkRCURLY) && !_hasErrors var s = parseStmt(this, topLevel) if s isSet - res = addToNodeList(res, s) + res = _astBuilder.addToNodeList(res, s) else break this expect tkRCURLY if !topLevel - res = mkBlockStmt(loc span (this lastLoc), res) + res = _astBuilder.mkBlockStmt(loc span (this lastLoc), res) return true return false fun parseIfStmt(this: @SparrowParser, res: @Node, topLevel: Bool): Bool @@ -647,7 +648,7 @@ package _Impl if this accept tkELSE elseClause = parseStmt(this, topLevel) loc copyEnd _lastToken.loc - res = mkIfStmt(loc, expr, thenClause, elseClause) + res = _astBuilder.mkIfStmt(loc, expr, thenClause, elseClause) return true return false fun parseForStmt(this: @SparrowParser, res: @Node, topLevel: Bool): Bool @@ -661,7 +662,7 @@ package _Impl var range = parseExpr(this) var action = parseStmt(this, topLevel) loc copyEnd _lastToken.loc - res = mkForStmt(loc, id.asStringRef, typeNode, range, action) + res = _astBuilder.mkForStmt(loc, id.asStringRef, typeNode, range, action) return true return false fun parseWhileStmt(this: @SparrowParser, res: @Node, topLevel: Bool): Bool @@ -676,21 +677,21 @@ package _Impl this reportError toString("Syntax error, unexpected ", (*_tokens).type, ", expecting expression or block statement") var body = parseStmt(this, topLevel) loc copyEnd _lastToken.loc - res = mkWhileStmt(loc, expr, stepAction, body) + res = _astBuilder.mkWhileStmt(loc, expr, stepAction, body) return true return false fun parseBreakStmt(this: @SparrowParser, res: @Node): Bool if this accept tkBREAK var loc = _lastToken.loc this expect tkSEMICOLON - res = mkBreakStmt(loc) + res = _astBuilder.mkBreakStmt(loc) return true return false fun parseContinueStmt(this: @SparrowParser, res: @Node): Bool if this accept tkCONTINUE var loc = _lastToken.loc this expect tkSEMICOLON - res = mkContinueStmt(loc) + res = _astBuilder.mkContinueStmt(loc) return true return false @@ -703,6 +704,6 @@ package _Impl else expr = parseExpr(this) this expect tkSEMICOLON - res = mkReturnStmt(loc, expr) + res = _astBuilder.mkReturnStmt(loc, expr) return true return false diff --git a/src/SparrowFrontend/Grammar/parserDefs.spr b/src/SparrowFrontend/Grammar/parserDefs.spr index 9acfa9c1..9d1ec609 100644 --- a/src/SparrowFrontend/Grammar/parserDefs.spr +++ b/src/SparrowFrontend/Grammar/parserDefs.spr @@ -4,10 +4,6 @@ import node import meta.location import std.tuple, std.string, std.vector -/// Concept for objects that can report errors produced by scanner -concept ErrorReporter(x: AnyType) \ - if isValid(x.reportError(Location(), String())) - /// A string (representing an identifier) and the corresponding location datatype LocString = Location*String diff --git a/src/SparrowFrontend/Grammar/parserIf.ll b/src/SparrowFrontend/Grammar/parserIf.ll index ba7f8623..f9710954 100644 --- a/src/SparrowFrontend/Grammar/parserIf.ll +++ b/src/SparrowFrontend/Grammar/parserIf.ll @@ -13,46 +13,80 @@ target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" %Null = type {} %StringRef = type { i8*, i8* } %StreamRefWrapperHelperClass = type { i8* } -%ExternalErrorReporter = type {} +%ParserContext = type { %SparrowScanner, %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]" } +%SparrowScanner = type { %Location, %BufferedCharSource, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]", %Token, i1, %ErrorReporter, i1 } %Location = type { %SourceCode, %LineCol, %LineCol } %SourceCode = type { i8* } %LineCol = type { i32, i32 } +%BufferedCharSource = type { %CharSource, %String, i32 } +%CharSource = type { %UntypedPtr, %"FunctionPtr3[Void, UntypedPtr, @String, Int]" } +%UntypedPtr = type { i8* } +%"FunctionPtr3[Void, UntypedPtr, @String, Int]" = type { i8* } %String = type { %"RawPtr[Char]", %"RawPtr[Char]", %"RawPtr[Char]" } %"RawPtr[Char]" = type { i8* } -%_CharSource = type { %FileRange*, %StringRef } -%FileRange = type { %File*, i1, i8 } -%File = type { i8* } -%ParserContext = type { %File, %FileRange, %_CharSource, %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]" } -%"SparrowScanner[_CharSource, ExternalErrorReporter]" = type { %Location, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %Token, i1, %ExternalErrorReporter } -%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]" = type { %"RangeWithLookahead[_CharSource]", %Location* } -%"RangeWithLookahead[_CharSource]" = type { %_CharSource, %"Vector[Char]" } +%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]" = type { %"RangeWithLookahead[BufferedCharSourceRange]", %Location* } +%"RangeWithLookahead[BufferedCharSourceRange]" = type { %BufferedCharSourceRange, %"Vector[Char]" } +%BufferedCharSourceRange = type { %BufferedCharSource* } %"Vector[Char]" = type { %"RawPtr[Char]", %"RawPtr[Char]", %"RawPtr[Char]" } %Token = type { %Location, %TokenType, %String, i64, double } %TokenType = type { i32 } -%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]" = type { %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %ExternalErrorReporter, %"Vector[UInt]", %"Vector[Char]", %TokenType, i32 } -%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]" = type { %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"Vector[Token]" } +%ErrorReporter = type { %UntypedPtr, %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]" } +%"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]" = type { i8* } +%"SparrowLayoutDecoder[SparrowScanner]" = type { %"RangeWithLookahead[SparrowScanner]", %ErrorReporter, %"Vector[UInt]", %"Vector[Char]", %TokenType, i32 } +%"RangeWithLookahead[SparrowScanner]" = type { %SparrowScanner, %"Vector[Token]" } %"Vector[Token]" = type { %"RawPtr[Token]", %"RawPtr[Token]", %"RawPtr[Token]" } %"RawPtr[Token]" = type { %Token* } %"Vector[UInt]" = type { %"RawPtr[UInt]", %"RawPtr[UInt]", %"RawPtr[UInt]" } %"RawPtr[UInt]" = type { i32* } -%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]" = type { %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %Token, i1, %ExternalErrorReporter } -%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]" = type { %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"Vector[Token]" } -%StringOutputStream = type { %String } +%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]" = type { %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %Token, i1, %AstBuilder, %ErrorReporter } +%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]" = type { %"SparrowLayoutDecoder[SparrowScanner]", %"Vector[Token]" } +%AstBuilder = type { %UntypedPtr, %"FunctionPtr3[Node, UntypedPtr, Node, Node]", %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]", %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]", %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]", %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]", %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]", %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]", %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]", %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]", %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]", %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]", %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]", %"FunctionPtr2[Node, UntypedPtr, Node]", %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]", %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]", %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]", %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]", %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]", %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]", %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]", %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]", %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]", %"FunctionPtr2[Node, UntypedPtr, @Location]", %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]", %"FunctionPtr3[Node, UntypedPtr, @Location, Int]", %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]", %"FunctionPtr3[Node, UntypedPtr, @Location, Long]", %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]", %"FunctionPtr3[Node, UntypedPtr, @Location, Float]", %"FunctionPtr3[Node, UntypedPtr, @Location, Double]", %"FunctionPtr3[Node, UntypedPtr, @Location, Char]", %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]", %"FunctionPtr3[Node, UntypedPtr, @Location, Node]", %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]", %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]", %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]", %"FunctionPtr2[Node, UntypedPtr, @Location]", %"FunctionPtr2[Node, UntypedPtr, @Location]", %"FunctionPtr3[Node, UntypedPtr, @Location, Node]" } +%"FunctionPtr3[Node, UntypedPtr, Node, Node]" = type { i8* } +%"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]" = type { i8* } +%"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]" = type { i8* } +%"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]" = type { i8* } +%"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]" = type { i8* } +%"FunctionPtr2[Node, UntypedPtr, Node]" = type { i8* } +%"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]" = type { i8* } +%"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]" = type { i8* } +%"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]" = type { i8* } +%"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]" = type { i8* } +%"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]" = type { i8* } +%"FunctionPtr3[Node, UntypedPtr, @Location, Bool]" = type { i8* } +%"FunctionPtr3[Node, UntypedPtr, @Location, Int]" = type { i8* } +%"FunctionPtr3[Node, UntypedPtr, @Location, UInt]" = type { i8* } +%"FunctionPtr3[Node, UntypedPtr, @Location, Long]" = type { i8* } +%"FunctionPtr3[Node, UntypedPtr, @Location, ULong]" = type { i8* } +%"FunctionPtr3[Node, UntypedPtr, @Location, Float]" = type { i8* } +%"FunctionPtr3[Node, UntypedPtr, @Location, Double]" = type { i8* } +%"FunctionPtr3[Node, UntypedPtr, @Location, Char]" = type { i8* } +%"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]" = type { i8* } +%"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]" = type { i8* } +%"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]" = type { i8* } +%"FunctionPtr2[Node, UntypedPtr, @Location]" = type { i8* } +%"FunctionPtr3[Node, UntypedPtr, @Location, Node]" = type { i8* } %"$lambdaEnclosureData" = type {} %"$lambdaEnclosureData.0" = type {} %"$lambdaEnclosureData.1" = type {} %"$lambdaEnclosureData.2" = type {} %"ContiguousMemoryRange[Char]" = type { %"RawPtr[Char]", %"RawPtr[Char]" } +%StringOutputStream = type { %String } %"FunctionPtr1[Bool, Char]" = type { i8* } %"ContiguousMemoryRange[Token]" = type { %"RawPtr[Token]", %"RawPtr[Token]" } +%FileCharSource = type { %File } +%File = type { i8* } +%"FunctionPtr3[Void, @FileCharSource, @String, Int]" = type { i8* } +%"NumericRangeInc[Int]" = type { i32, i32, i1 } +%StringCharSource = type { %StringRef } +%"FunctionPtr3[Void, @StringCharSource, @String, Int]" = type { i8* } %Node = type { %UntypedPtr } -%UntypedPtr = type { i8* } %"Vector[LocString]" = type { %"RawPtr[LocString]", %"RawPtr[LocString]", %"RawPtr[LocString]" } %"RawPtr[LocString]" = type { %LocString* } %LocString = type { %"Tuple[Location, String]" } %"Tuple[Location, String]" = type { %Location, %String } %"ContiguousMemoryRange[LocString]" = type { %"RawPtr[LocString]", %"RawPtr[LocString]" } %"ContiguousMemoryRange[UInt]" = type { %"RawPtr[UInt]", %"RawPtr[UInt]" } +%FileRange = type { %File*, i1, i8 } @.fmtInt = private unnamed_addr constant [3 x i8] c"%d\00", align 1 @.fmtUInt = private unnamed_addr constant [3 x i8] c"%u\00", align 1 @@ -67,106 +101,107 @@ target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" @str = private unnamed_addr constant [5 x i8] c"true\00" @str.5 = private unnamed_addr constant [6 x i8] c"false\00" @programArgs.3 = global %MainParameters zeroinitializer -@str.8 = private unnamed_addr constant [2 x i8] c"r\00" -@str.9 = private unnamed_addr constant [1 x i8] zeroinitializer -@str.10 = private unnamed_addr constant [19 x i8] c"Cannot open file: \00" -@str.11 = private unnamed_addr constant [30 x i8] c"Tabs are not valid characters\00" -@str.12 = private unnamed_addr constant [33 x i8] c"End of file found inside comment\00" +@str.8 = private unnamed_addr constant [30 x i8] c"Tabs are not valid characters\00" +@str.9 = private unnamed_addr constant [33 x i8] c"End of file found inside comment\00" +@str.10 = private unnamed_addr constant [40 x i8] c"End of file found inside string literal\00" +@str.11 = private unnamed_addr constant [37 x i8] c"Not enough digits for character code\00" +@str.12 = private unnamed_addr constant [40 x i8] c"End of file found inside string literal\00" @str.13 = private unnamed_addr constant [40 x i8] c"End of file found inside string literal\00" -@str.14 = private unnamed_addr constant [37 x i8] c"Not enough digits for character code\00" -@str.15 = private unnamed_addr constant [40 x i8] c"End of file found inside string literal\00" -@str.16 = private unnamed_addr constant [40 x i8] c"End of file found inside string literal\00" -@str.17 = private unnamed_addr constant [6 x i8] c"break\00" -@str.18 = private unnamed_addr constant [6 x i8] c"catch\00" -@str.19 = private unnamed_addr constant [8 x i8] c"concept\00" -@str.20 = private unnamed_addr constant [9 x i8] c"continue\00" -@str.21 = private unnamed_addr constant [9 x i8] c"datatype\00" -@str.22 = private unnamed_addr constant [4 x i8] c"fun\00" -@str.23 = private unnamed_addr constant [3 x i8] c"if\00" -@str.24 = private unnamed_addr constant [5 x i8] c"else\00" -@str.25 = private unnamed_addr constant [6 x i8] c"false\00" -@str.26 = private unnamed_addr constant [8 x i8] c"finally\00" -@str.27 = private unnamed_addr constant [4 x i8] c"for\00" -@str.28 = private unnamed_addr constant [7 x i8] c"import\00" -@str.29 = private unnamed_addr constant [7 x i8] c"module\00" -@str.30 = private unnamed_addr constant [5 x i8] c"null\00" -@str.31 = private unnamed_addr constant [8 x i8] c"package\00" -@str.32 = private unnamed_addr constant [7 x i8] c"return\00" -@str.33 = private unnamed_addr constant [6 x i8] c"throw\00" -@str.34 = private unnamed_addr constant [5 x i8] c"true\00" -@str.35 = private unnamed_addr constant [4 x i8] c"try\00" -@str.36 = private unnamed_addr constant [6 x i8] c"using\00" -@str.37 = private unnamed_addr constant [4 x i8] c"var\00" -@str.38 = private unnamed_addr constant [6 x i8] c"while\00" -@str.39 = private unnamed_addr constant [24 x i8] c"Invalid numeric literal\00" -@str.40 = private unnamed_addr constant [27 x i8] c"Invalid character found: '\00" -@str.41 = private unnamed_addr constant [4 x i8] c"' (\00" -@str.42 = private unnamed_addr constant [32 x i8] c"Invalid indentation, expecting \00" -@str.43 = private unnamed_addr constant [7 x i8] c", got \00" -@str.44 = private unnamed_addr constant [12 x i8] c"end-of-file\00" -@str.45 = private unnamed_addr constant [9 x i8] c"new-line\00" -@str.46 = private unnamed_addr constant [9 x i8] c"'module'\00" -@str.47 = private unnamed_addr constant [9 x i8] c"'import'\00" -@str.48 = private unnamed_addr constant [10 x i8] c"'concept'\00" -@str.49 = private unnamed_addr constant [11 x i8] c"'datatype'\00" -@str.50 = private unnamed_addr constant [6 x i8] c"'fun'\00" -@str.51 = private unnamed_addr constant [10 x i8] c"'package'\00" -@str.52 = private unnamed_addr constant [8 x i8] c"'using'\00" -@str.53 = private unnamed_addr constant [6 x i8] c"'var'\00" -@str.54 = private unnamed_addr constant [8 x i8] c"'break'\00" -@str.55 = private unnamed_addr constant [8 x i8] c"'catch'\00" -@str.56 = private unnamed_addr constant [11 x i8] c"'continue'\00" -@str.57 = private unnamed_addr constant [10 x i8] c"'finally'\00" -@str.58 = private unnamed_addr constant [6 x i8] c"'for'\00" -@str.59 = private unnamed_addr constant [5 x i8] c"'if'\00" -@str.60 = private unnamed_addr constant [9 x i8] c"'return'\00" -@str.61 = private unnamed_addr constant [8 x i8] c"'throw'\00" -@str.62 = private unnamed_addr constant [6 x i8] c"'try'\00" -@str.63 = private unnamed_addr constant [8 x i8] c"'while'\00" -@str.64 = private unnamed_addr constant [8 x i8] c"'false'\00" -@str.65 = private unnamed_addr constant [7 x i8] c"'null'\00" -@str.66 = private unnamed_addr constant [7 x i8] c"'true'\00" -@str.67 = private unnamed_addr constant [7 x i8] c"'else'\00" -@str.68 = private unnamed_addr constant [16 x i8] c"'{' (or indent)\00" -@str.69 = private unnamed_addr constant [16 x i8] c"'}' (or dedent)\00" -@str.70 = private unnamed_addr constant [4 x i8] c"'['\00" -@str.71 = private unnamed_addr constant [4 x i8] c"']'\00" -@str.72 = private unnamed_addr constant [4 x i8] c"'('\00" -@str.73 = private unnamed_addr constant [4 x i8] c"')'\00" -@str.74 = private unnamed_addr constant [4 x i8] c"':'\00" -@str.75 = private unnamed_addr constant [17 x i8] c"';' (or newline)\00" -@str.76 = private unnamed_addr constant [4 x i8] c"','\00" -@str.77 = private unnamed_addr constant [4 x i8] c"'.'\00" -@str.78 = private unnamed_addr constant [4 x i8] c"'`'\00" -@str.79 = private unnamed_addr constant [4 x i8] c"'='\00" -@str.80 = private unnamed_addr constant [11 x i8] c"identifier\00" -@str.81 = private unnamed_addr constant [9 x i8] c"operator\00" -@str.82 = private unnamed_addr constant [13 x i8] c"char literal\00" -@str.83 = private unnamed_addr constant [15 x i8] c"string literal\00" -@str.84 = private unnamed_addr constant [12 x i8] c"int literal\00" -@str.85 = private unnamed_addr constant [13 x i8] c"long literal\00" -@str.86 = private unnamed_addr constant [13 x i8] c"uint literal\00" -@str.87 = private unnamed_addr constant [14 x i8] c"ulong literal\00" -@str.88 = private unnamed_addr constant [14 x i8] c"float literal\00" -@str.89 = private unnamed_addr constant [15 x i8] c"double literal\00" -@str.90 = private unnamed_addr constant [26 x i8] c"Syntax error, unexpected \00" -@str.91 = private unnamed_addr constant [13 x i8] c", expecting \00" -@str.92 = private unnamed_addr constant [8 x i8] c"AnyType\00" -@str.93 = private unnamed_addr constant [26 x i8] c"Syntax error, unexpected \00" -@str.94 = private unnamed_addr constant [28 x i8] c", expecting block statement\00" -@str.95 = private unnamed_addr constant [26 x i8] c"Syntax error, unexpected \00" -@str.96 = private unnamed_addr constant [23 x i8] c", expecting expression\00" -@str.97 = private unnamed_addr constant [3 x i8] c"()\00" -@str.98 = private unnamed_addr constant [2 x i8] c"=\00" -@str.99 = private unnamed_addr constant [26 x i8] c"Syntax error, unexpected \00" -@str.100 = private unnamed_addr constant [35 x i8] c", expecting identifier or operator\00" -@str.101 = private unnamed_addr constant [2 x i8] c"=\00" -@str.102 = private unnamed_addr constant [2 x i8] c".\00" -@str.103 = private unnamed_addr constant [3 x i8] c"()\00" -@str.104 = private unnamed_addr constant [26 x i8] c"Syntax error, unexpected \00" -@str.105 = private unnamed_addr constant [42 x i8] c", expecting expression or block statement\00" -@str.106 = private unnamed_addr constant [26 x i8] c"Syntax error, unexpected \00" -@str.107 = private unnamed_addr constant [22 x i8] c", expecting statement\00" +@str.14 = private unnamed_addr constant [6 x i8] c"break\00" +@str.15 = private unnamed_addr constant [6 x i8] c"catch\00" +@str.16 = private unnamed_addr constant [8 x i8] c"concept\00" +@str.17 = private unnamed_addr constant [9 x i8] c"continue\00" +@str.18 = private unnamed_addr constant [9 x i8] c"datatype\00" +@str.19 = private unnamed_addr constant [4 x i8] c"fun\00" +@str.20 = private unnamed_addr constant [3 x i8] c"if\00" +@str.21 = private unnamed_addr constant [5 x i8] c"else\00" +@str.22 = private unnamed_addr constant [6 x i8] c"false\00" +@str.23 = private unnamed_addr constant [8 x i8] c"finally\00" +@str.24 = private unnamed_addr constant [4 x i8] c"for\00" +@str.25 = private unnamed_addr constant [7 x i8] c"import\00" +@str.26 = private unnamed_addr constant [7 x i8] c"module\00" +@str.27 = private unnamed_addr constant [5 x i8] c"null\00" +@str.28 = private unnamed_addr constant [8 x i8] c"package\00" +@str.29 = private unnamed_addr constant [7 x i8] c"return\00" +@str.30 = private unnamed_addr constant [6 x i8] c"throw\00" +@str.31 = private unnamed_addr constant [5 x i8] c"true\00" +@str.32 = private unnamed_addr constant [4 x i8] c"try\00" +@str.33 = private unnamed_addr constant [6 x i8] c"using\00" +@str.34 = private unnamed_addr constant [4 x i8] c"var\00" +@str.35 = private unnamed_addr constant [6 x i8] c"while\00" +@str.36 = private unnamed_addr constant [24 x i8] c"Invalid numeric literal\00" +@str.37 = private unnamed_addr constant [27 x i8] c"Invalid character found: '\00" +@str.38 = private unnamed_addr constant [4 x i8] c"' (\00" +@str.39 = private unnamed_addr constant [32 x i8] c"Invalid indentation, expecting \00" +@str.40 = private unnamed_addr constant [7 x i8] c", got \00" +@str.41 = private unnamed_addr constant [2 x i8] c"r\00" +@str.42 = private unnamed_addr constant [12 x i8] c"end-of-file\00" +@str.43 = private unnamed_addr constant [9 x i8] c"new-line\00" +@str.44 = private unnamed_addr constant [9 x i8] c"'module'\00" +@str.45 = private unnamed_addr constant [9 x i8] c"'import'\00" +@str.46 = private unnamed_addr constant [10 x i8] c"'concept'\00" +@str.47 = private unnamed_addr constant [11 x i8] c"'datatype'\00" +@str.48 = private unnamed_addr constant [6 x i8] c"'fun'\00" +@str.49 = private unnamed_addr constant [10 x i8] c"'package'\00" +@str.50 = private unnamed_addr constant [8 x i8] c"'using'\00" +@str.51 = private unnamed_addr constant [6 x i8] c"'var'\00" +@str.52 = private unnamed_addr constant [8 x i8] c"'break'\00" +@str.53 = private unnamed_addr constant [8 x i8] c"'catch'\00" +@str.54 = private unnamed_addr constant [11 x i8] c"'continue'\00" +@str.55 = private unnamed_addr constant [10 x i8] c"'finally'\00" +@str.56 = private unnamed_addr constant [6 x i8] c"'for'\00" +@str.57 = private unnamed_addr constant [5 x i8] c"'if'\00" +@str.58 = private unnamed_addr constant [9 x i8] c"'return'\00" +@str.59 = private unnamed_addr constant [8 x i8] c"'throw'\00" +@str.60 = private unnamed_addr constant [6 x i8] c"'try'\00" +@str.61 = private unnamed_addr constant [8 x i8] c"'while'\00" +@str.62 = private unnamed_addr constant [8 x i8] c"'false'\00" +@str.63 = private unnamed_addr constant [7 x i8] c"'null'\00" +@str.64 = private unnamed_addr constant [7 x i8] c"'true'\00" +@str.65 = private unnamed_addr constant [7 x i8] c"'else'\00" +@str.66 = private unnamed_addr constant [16 x i8] c"'{' (or indent)\00" +@str.67 = private unnamed_addr constant [16 x i8] c"'}' (or dedent)\00" +@str.68 = private unnamed_addr constant [4 x i8] c"'['\00" +@str.69 = private unnamed_addr constant [4 x i8] c"']'\00" +@str.70 = private unnamed_addr constant [4 x i8] c"'('\00" +@str.71 = private unnamed_addr constant [4 x i8] c"')'\00" +@str.72 = private unnamed_addr constant [4 x i8] c"':'\00" +@str.73 = private unnamed_addr constant [17 x i8] c"';' (or newline)\00" +@str.74 = private unnamed_addr constant [4 x i8] c"','\00" +@str.75 = private unnamed_addr constant [4 x i8] c"'.'\00" +@str.76 = private unnamed_addr constant [4 x i8] c"'`'\00" +@str.77 = private unnamed_addr constant [4 x i8] c"'='\00" +@str.78 = private unnamed_addr constant [11 x i8] c"identifier\00" +@str.79 = private unnamed_addr constant [9 x i8] c"operator\00" +@str.80 = private unnamed_addr constant [13 x i8] c"char literal\00" +@str.81 = private unnamed_addr constant [15 x i8] c"string literal\00" +@str.82 = private unnamed_addr constant [12 x i8] c"int literal\00" +@str.83 = private unnamed_addr constant [13 x i8] c"long literal\00" +@str.84 = private unnamed_addr constant [13 x i8] c"uint literal\00" +@str.85 = private unnamed_addr constant [14 x i8] c"ulong literal\00" +@str.86 = private unnamed_addr constant [14 x i8] c"float literal\00" +@str.87 = private unnamed_addr constant [15 x i8] c"double literal\00" +@str.88 = private unnamed_addr constant [14 x i8] c"line continue\00" +@str.89 = private unnamed_addr constant [8 x i8] c"comment\00" +@str.90 = private unnamed_addr constant [11 x i8] c"whitespace\00" +@str.91 = private unnamed_addr constant [26 x i8] c"Syntax error, unexpected \00" +@str.92 = private unnamed_addr constant [13 x i8] c", expecting \00" +@str.93 = private unnamed_addr constant [8 x i8] c"AnyType\00" +@str.94 = private unnamed_addr constant [26 x i8] c"Syntax error, unexpected \00" +@str.95 = private unnamed_addr constant [28 x i8] c", expecting block statement\00" +@str.96 = private unnamed_addr constant [26 x i8] c"Syntax error, unexpected \00" +@str.97 = private unnamed_addr constant [23 x i8] c", expecting expression\00" +@str.98 = private unnamed_addr constant [3 x i8] c"()\00" +@str.99 = private unnamed_addr constant [2 x i8] c"=\00" +@str.100 = private unnamed_addr constant [26 x i8] c"Syntax error, unexpected \00" +@str.101 = private unnamed_addr constant [35 x i8] c", expecting identifier or operator\00" +@str.102 = private unnamed_addr constant [2 x i8] c"=\00" +@str.103 = private unnamed_addr constant [2 x i8] c".\00" +@str.104 = private unnamed_addr constant [3 x i8] c"()\00" +@str.105 = private unnamed_addr constant [26 x i8] c"Syntax error, unexpected \00" +@str.106 = private unnamed_addr constant [42 x i8] c", expecting expression or block statement\00" +@str.107 = private unnamed_addr constant [26 x i8] c"Syntax error, unexpected \00" +@str.108 = private unnamed_addr constant [22 x i8] c", expecting statement\00" @llvm.global_ctors = appending global [4 x { i32, void ()* }] [{ i32, void ()* } { i32 0, void ()* @__global_ctor }, { i32, void ()* } { i32 1, void ()* @__global_ctor.1 }, { i32, void ()* } { i32 2, void ()* @__global_ctor.3 }, { i32, void ()* } { i32 3, void ()* @__global_ctor.6 }] @llvm.global_dtors = appending global [4 x { i32, void ()* }] [{ i32, void ()* } { i32 0, void ()* @__global_dtor }, { i32, void ()* } { i32 1, void ()* @__global_dtor.2 }, { i32, void ()* } { i32 2, void ()* @__global_dtor.4 }, { i32, void ()* } { i32 3, void ()* @__global_dtor.7 }] @@ -4829,849 +4864,920 @@ code: ; preds = %0 declare double @atof(i8*) ; Function Attrs: alwaysinline nounwind -define internal void @ctor.128(%ExternalErrorReporter* %this) #3 { - %this.addr = alloca %ExternalErrorReporter* - store %ExternalErrorReporter* %this, %ExternalErrorReporter** %this.addr +define internal void @ctor.128(%ParserContext* %this) #3 { + %this.addr = alloca %ParserContext* + store %ParserContext* %this, %ParserContext** %this.addr br label %code code: ; preds = %0 + %1 = load %ParserContext*, %ParserContext** %this.addr + %2 = getelementptr inbounds %ParserContext, %ParserContext* %1, i32 0, i32 0 + call void @ctor.129(%SparrowScanner* %2) + %3 = load %ParserContext*, %ParserContext** %this.addr + %4 = getelementptr inbounds %ParserContext, %ParserContext* %3, i32 0, i32 1 + call void @ctor.147(%"SparrowLayoutDecoder[SparrowScanner]"* %4) + %5 = load %ParserContext*, %ParserContext** %this.addr + %6 = getelementptr inbounds %ParserContext, %ParserContext* %5, i32 0, i32 2 + call void @ctor.153(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %6) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.129(%ExternalErrorReporter* %this, %ExternalErrorReporter* %other) #3 { - %this.addr = alloca %ExternalErrorReporter* - store %ExternalErrorReporter* %this, %ExternalErrorReporter** %this.addr - %other.addr = alloca %ExternalErrorReporter* - store %ExternalErrorReporter* %other, %ExternalErrorReporter** %other.addr +define internal void @ctor.129(%SparrowScanner* %this) #3 { + %this.addr = alloca %SparrowScanner* + store %SparrowScanner* %this, %SparrowScanner** %this.addr br label %code code: ; preds = %0 + %1 = load %SparrowScanner*, %SparrowScanner** %this.addr + %2 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %1, i32 0, i32 0 + call void @ctor.130(%Location* %2) + %3 = load %SparrowScanner*, %SparrowScanner** %this.addr + %4 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %3, i32 0, i32 1 + call void @ctor.133(%BufferedCharSource* %4) + %5 = load %SparrowScanner*, %SparrowScanner** %this.addr + %6 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %5, i32 0, i32 2 + call void @ctor.139(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %6) + %7 = load %SparrowScanner*, %SparrowScanner** %this.addr + %8 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %7, i32 0, i32 3 + call void @ctor.143(%Token* %8) + %9 = load %SparrowScanner*, %SparrowScanner** %this.addr + %10 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %9, i32 0, i32 4 + store i1 false, i1* %10 + %11 = load %SparrowScanner*, %SparrowScanner** %this.addr + %12 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %11, i32 0, i32 5 + call void @ctor.145(%ErrorReporter* %12) + %13 = load %SparrowScanner*, %SparrowScanner** %this.addr + %14 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %13, i32 0, i32 6 + store i1 false, i1* %14 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.130(%ExternalErrorReporter* %this) #3 { - %this.addr = alloca %ExternalErrorReporter* - store %ExternalErrorReporter* %this, %ExternalErrorReporter** %this.addr +define internal void @ctor.130(%Location* %this) #3 { + %this.addr = alloca %Location* + store %Location* %this, %Location** %this.addr br label %code code: ; preds = %0 + %1 = load %Location*, %Location** %this.addr + %2 = getelementptr inbounds %Location, %Location* %1, i32 0, i32 0 + call void @ctor.131(%SourceCode* %2) + %3 = load %Location*, %Location** %this.addr + %4 = getelementptr inbounds %Location, %Location* %3, i32 0, i32 1 + call void @ctor.132(%LineCol* %4) + %5 = load %Location*, %Location** %this.addr + %6 = getelementptr inbounds %Location, %Location* %5, i32 0, i32 2 + call void @ctor.132(%LineCol* %6) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @"=.131"(%ExternalErrorReporter* %this, %ExternalErrorReporter* %other) #3 { - %this.addr = alloca %ExternalErrorReporter* - store %ExternalErrorReporter* %this, %ExternalErrorReporter** %this.addr - %other.addr = alloca %ExternalErrorReporter* - store %ExternalErrorReporter* %other, %ExternalErrorReporter** %other.addr +define internal void @ctor.131(%SourceCode* %this) #3 { + %this.addr = alloca %SourceCode* + store %SourceCode* %this, %SourceCode** %this.addr br label %code code: ; preds = %0 + %1 = load %SourceCode*, %SourceCode** %this.addr + %2 = getelementptr inbounds %SourceCode, %SourceCode* %1, i32 0, i32 0 + store i8* null, i8** %2 ret void } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.132"(%ExternalErrorReporter* %this, %ExternalErrorReporter* %other) #3 { - %this.addr = alloca %ExternalErrorReporter* - store %ExternalErrorReporter* %this, %ExternalErrorReporter** %this.addr - %other.addr = alloca %ExternalErrorReporter* - store %ExternalErrorReporter* %other, %ExternalErrorReporter** %other.addr +define internal void @ctor.132(%LineCol* %this) #3 { + %this.addr = alloca %LineCol* + store %LineCol* %this, %LineCol** %this.addr br label %code code: ; preds = %0 - ret i1 true + %1 = load %LineCol*, %LineCol** %this.addr + %2 = getelementptr inbounds %LineCol, %LineCol* %1, i32 0, i32 0 + store i32 0, i32* %2 + %3 = load %LineCol*, %LineCol** %this.addr + %4 = getelementptr inbounds %LineCol, %LineCol* %3, i32 0, i32 1 + store i32 0, i32* %4 + ret void } -; Function Attrs: inlinehint nounwind -define internal void @reportError(%ExternalErrorReporter* %this, %Location %loc, %String* %msg) #4 { - %this.addr = alloca %ExternalErrorReporter* - store %ExternalErrorReporter* %this, %ExternalErrorReporter** %this.addr - %loc.addr = alloca %Location - store %Location %loc, %Location* %loc.addr - %msg.addr = alloca %String* - store %String* %msg, %String** %msg.addr +; Function Attrs: alwaysinline nounwind +define internal void @ctor.133(%BufferedCharSource* %this) #3 { + %this.addr = alloca %BufferedCharSource* + store %BufferedCharSource* %this, %BufferedCharSource** %this.addr + br label %code + +code: ; preds = %0 + %1 = load %BufferedCharSource*, %BufferedCharSource** %this.addr + %2 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %1, i32 0, i32 0 + call void @ctor.134(%CharSource* %2) + %3 = load %BufferedCharSource*, %BufferedCharSource** %this.addr + %4 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %3, i32 0, i32 1 + call void @ctor.137(%String* %4) + %5 = load %BufferedCharSource*, %BufferedCharSource** %this.addr + %6 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %5, i32 0, i32 2 + store i32 0, i32* %6 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.134(%CharSource* %this) #3 { + %this.addr = alloca %CharSource* + store %CharSource* %this, %CharSource** %this.addr + br label %code + +code: ; preds = %0 + %1 = load %CharSource*, %CharSource** %this.addr + %2 = getelementptr inbounds %CharSource, %CharSource* %1, i32 0, i32 0 + call void @ctor.135(%UntypedPtr* %2) + %3 = load %CharSource*, %CharSource** %this.addr + %4 = getelementptr inbounds %CharSource, %CharSource* %3, i32 0, i32 1 + call void @ctor.136(%"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %4) + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.135(%UntypedPtr* %this) #3 { + %this.addr = alloca %UntypedPtr* + store %UntypedPtr* %this, %UntypedPtr** %this.addr br label %code code: ; preds = %0 - %1 = load %String*, %String** %msg.addr - %2 = call %StringRef @asStringRef(%String* %1) - call void @comp_parser_reportError(%Location* %loc.addr, %StringRef %2) + %1 = load %UntypedPtr*, %UntypedPtr** %this.addr + %2 = getelementptr inbounds %UntypedPtr, %UntypedPtr* %1, i32 0, i32 0 + store i8* null, i8** %2 ret void } -declare void @comp_parser_reportError(%Location*, %StringRef) +; Function Attrs: alwaysinline nounwind +define internal void @ctor.136(%"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %this) #3 { + %this.addr = alloca %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* + store %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %this, %"FunctionPtr3[Void, UntypedPtr, @String, Int]"** %this.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Void, UntypedPtr, @String, Int]"*, %"FunctionPtr3[Void, UntypedPtr, @String, Int]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr3[Void, UntypedPtr, @String, Int]", %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %1, i32 0, i32 0 + store i8* null, i8** %2 + ret void +} ; Function Attrs: inlinehint nounwind -define internal %StringRef @asStringRef(%String* %this) #4 { +define internal void @ctor.137(%String* %this) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr - %tmp.this = alloca %StringRef br label %code code: ; preds = %0 %1 = load %String*, %String** %this.addr %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 0 - %3 = load %"RawPtr[Char]", %"RawPtr[Char]"* %2 - %4 = call i8* @bytePtr(%"RawPtr[Char]" %3) + call void @ctor.138(%"RawPtr[Char]"* %2) + %3 = load %String*, %String** %this.addr + %4 = getelementptr inbounds %String, %String* %3, i32 0, i32 1 + call void @ctor.138(%"RawPtr[Char]"* %4) %5 = load %String*, %String** %this.addr - %6 = getelementptr inbounds %String, %String* %5, i32 0, i32 1 - %7 = load %"RawPtr[Char]", %"RawPtr[Char]"* %6 - %8 = call i8* @bytePtr(%"RawPtr[Char]" %7) - call void @ctor.57(%StringRef* %tmp.this, i8* %4, i8* %8) - %9 = load %StringRef, %StringRef* %tmp.this - ret %StringRef %9 + %6 = getelementptr inbounds %String, %String* %5, i32 0, i32 2 + call void @ctor.138(%"RawPtr[Char]"* %6) + ret void } -; Function Attrs: inlinehint nounwind -define internal i8* @bytePtr(%"RawPtr[Char]" %this) #4 { - %this.addr = alloca %"RawPtr[Char]" - store %"RawPtr[Char]" %this, %"RawPtr[Char]"* %this.addr +; Function Attrs: alwaysinline nounwind +define internal void @ctor.138(%"RawPtr[Char]"* %this) #3 { + %this.addr = alloca %"RawPtr[Char]"* + store %"RawPtr[Char]"* %this, %"RawPtr[Char]"** %this.addr br label %code code: ; preds = %0 - %1 = getelementptr inbounds %"RawPtr[Char]", %"RawPtr[Char]"* %this.addr, i32 0, i32 0 - %2 = load i8*, i8** %1 - ret i8* %2 + %1 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %this.addr + %2 = getelementptr inbounds %"RawPtr[Char]", %"RawPtr[Char]"* %1, i32 0, i32 0 + store i8* null, i8** %2 + ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.133(%_CharSource* %this) #3 { - %this.addr = alloca %_CharSource* - store %_CharSource* %this, %_CharSource** %this.addr +define internal void @ctor.139(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %this) #3 { + %this.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* + store %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %this.addr br label %code code: ; preds = %0 - %1 = load %_CharSource*, %_CharSource** %this.addr - %2 = getelementptr inbounds %_CharSource, %_CharSource* %1, i32 0, i32 0 - store %FileRange* null, %FileRange** %2 - %3 = load %_CharSource*, %_CharSource** %this.addr - %4 = getelementptr inbounds %_CharSource, %_CharSource* %3, i32 0, i32 1 - call void @ctor.54(%StringRef* %4) + %1 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %this.addr + %2 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]", %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %1, i32 0, i32 0 + call void @ctor.140(%"RangeWithLookahead[BufferedCharSourceRange]"* %2) + %3 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %this.addr + %4 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]", %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %3, i32 0, i32 1 + store %Location* null, %Location** %4 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.134(%_CharSource* %this, %_CharSource* %other) #3 { - %this.addr = alloca %_CharSource* - store %_CharSource* %this, %_CharSource** %this.addr - %other.addr = alloca %_CharSource* - store %_CharSource* %other, %_CharSource** %other.addr +define internal void @ctor.140(%"RangeWithLookahead[BufferedCharSourceRange]"* %this) #3 { + %this.addr = alloca %"RangeWithLookahead[BufferedCharSourceRange]"* + store %"RangeWithLookahead[BufferedCharSourceRange]"* %this, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr br label %code code: ; preds = %0 - %1 = load %_CharSource*, %_CharSource** %other.addr - %2 = getelementptr inbounds %_CharSource, %_CharSource* %1, i32 0, i32 0 - %3 = load %FileRange*, %FileRange** %2 - %4 = load %_CharSource*, %_CharSource** %this.addr - %5 = getelementptr inbounds %_CharSource, %_CharSource* %4, i32 0, i32 0 - store %FileRange* %3, %FileRange** %5 - %6 = load %_CharSource*, %_CharSource** %this.addr - %7 = getelementptr inbounds %_CharSource, %_CharSource* %6, i32 0, i32 1 - %8 = load %_CharSource*, %_CharSource** %other.addr - %9 = getelementptr inbounds %_CharSource, %_CharSource* %8, i32 0, i32 1 - %10 = load %StringRef, %StringRef* %9 - call void @ctor.56(%StringRef* %7, %StringRef %10) + %1 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %2 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %1, i32 0, i32 0 + call void @ctor.141(%BufferedCharSourceRange* %2) + %3 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %4 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %3, i32 0, i32 1 + call void @ctor.142(%"Vector[Char]"* %4) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.135(%_CharSource* %this) #3 { - %this.addr = alloca %_CharSource* - store %_CharSource* %this, %_CharSource** %this.addr +define internal void @ctor.141(%BufferedCharSourceRange* %this) #3 { + %this.addr = alloca %BufferedCharSourceRange* + store %BufferedCharSourceRange* %this, %BufferedCharSourceRange** %this.addr br label %code code: ; preds = %0 + %1 = load %BufferedCharSourceRange*, %BufferedCharSourceRange** %this.addr + %2 = getelementptr inbounds %BufferedCharSourceRange, %BufferedCharSourceRange* %1, i32 0, i32 0 + store %BufferedCharSource* null, %BufferedCharSource** %2 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @"=.136"(%_CharSource* %this, %_CharSource* %other) #3 { - %this.addr = alloca %_CharSource* - store %_CharSource* %this, %_CharSource** %this.addr - %other.addr = alloca %_CharSource* - store %_CharSource* %other, %_CharSource** %other.addr +define internal void @ctor.142(%"Vector[Char]"* %this) #3 { + %this.addr = alloca %"Vector[Char]"* + store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr br label %code code: ; preds = %0 - %1 = load %_CharSource*, %_CharSource** %other.addr - %2 = getelementptr inbounds %_CharSource, %_CharSource* %1, i32 0, i32 0 - %3 = load %FileRange*, %FileRange** %2 - %4 = load %_CharSource*, %_CharSource** %this.addr - %5 = getelementptr inbounds %_CharSource, %_CharSource* %4, i32 0, i32 0 - store %FileRange* %3, %FileRange** %5 - %6 = load %_CharSource*, %_CharSource** %this.addr - %7 = getelementptr inbounds %_CharSource, %_CharSource* %6, i32 0, i32 1 - %8 = load %_CharSource*, %_CharSource** %other.addr - %9 = getelementptr inbounds %_CharSource, %_CharSource* %8, i32 0, i32 1 - %10 = load %StringRef, %StringRef* %9 - %11 = call %StringRef* @"="(%StringRef* %7, %StringRef %10) + %1 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr + %2 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %1, i32 0, i32 0 + call void @ctor.138(%"RawPtr[Char]"* %2) + %3 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr + %4 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %3, i32 0, i32 1 + call void @ctor.138(%"RawPtr[Char]"* %4) + %5 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr + %6 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %5, i32 0, i32 2 + call void @ctor.138(%"RawPtr[Char]"* %6) ret void } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.137"(%_CharSource* %this, %_CharSource* %other) #3 { - %this.addr = alloca %_CharSource* - store %_CharSource* %this, %_CharSource** %this.addr - %other.addr = alloca %_CharSource* - store %_CharSource* %other, %_CharSource** %other.addr +define internal void @ctor.143(%Token* %this) #3 { + %this.addr = alloca %Token* + store %Token* %this, %Token** %this.addr br label %code code: ; preds = %0 - %1 = load %_CharSource*, %_CharSource** %this.addr - %2 = getelementptr inbounds %_CharSource, %_CharSource* %1, i32 0, i32 0 - %3 = load %FileRange*, %FileRange** %2 - %4 = bitcast %FileRange* %3 to i8* - %5 = load %_CharSource*, %_CharSource** %other.addr - %6 = getelementptr inbounds %_CharSource, %_CharSource* %5, i32 0, i32 0 - %7 = load %FileRange*, %FileRange** %6 - %8 = bitcast %FileRange* %7 to i8* - %9 = call i1 @implOpRefEQ(i8* %4, i8* %8) - br i1 %9, label %cond.true, label %cond.false - -cond.true: ; preds = %code - %10 = load %_CharSource*, %_CharSource** %this.addr - %11 = getelementptr inbounds %_CharSource, %_CharSource* %10, i32 0, i32 1 - %12 = load %StringRef, %StringRef* %11 - %13 = load %_CharSource*, %_CharSource** %other.addr - %14 = getelementptr inbounds %_CharSource, %_CharSource* %13, i32 0, i32 1 - %15 = load %StringRef, %StringRef* %14 - %16 = call i1 @"=="(%StringRef %12, %StringRef %15) - br label %cond.end - -cond.false: ; preds = %code - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond.res = phi i1 [ %16, %cond.true ], [ false, %cond.false ] - ret i1 %cond.res + %1 = load %Token*, %Token** %this.addr + %2 = getelementptr inbounds %Token, %Token* %1, i32 0, i32 0 + call void @ctor.130(%Location* %2) + %3 = load %Token*, %Token** %this.addr + %4 = getelementptr inbounds %Token, %Token* %3, i32 0, i32 1 + call void @ctor.144(%TokenType* %4) + %5 = load %Token*, %Token** %this.addr + %6 = getelementptr inbounds %Token, %Token* %5, i32 0, i32 2 + call void @ctor.137(%String* %6) + %7 = load %Token*, %Token** %this.addr + %8 = getelementptr inbounds %Token, %Token* %7, i32 0, i32 3 + store i64 0, i64* %8 + %9 = load %Token*, %Token** %this.addr + %10 = getelementptr inbounds %Token, %Token* %9, i32 0, i32 4 + store double 0.000000e+00, double* %10 + ret void } -; Function Attrs: inlinehint nounwind -define internal void @ctor.138(%_CharSource* %this, %FileRange* %fileRange, %StringRef %code) #4 { - %this.addr = alloca %_CharSource* - store %_CharSource* %this, %_CharSource** %this.addr - %fileRange.addr = alloca %FileRange* - store %FileRange* %fileRange, %FileRange** %fileRange.addr - %code.addr = alloca %StringRef - store %StringRef %code, %StringRef* %code.addr - br label %code1 +; Function Attrs: alwaysinline nounwind +define internal void @ctor.144(%TokenType* %this) #3 { + %this.addr = alloca %TokenType* + store %TokenType* %this, %TokenType** %this.addr + br label %code -code1: ; preds = %0 - %1 = load %_CharSource*, %_CharSource** %this.addr - %2 = getelementptr inbounds %_CharSource, %_CharSource* %1, i32 0, i32 0 - store %FileRange* null, %FileRange** %2 - %3 = load %FileRange*, %FileRange** %fileRange.addr - %4 = load %_CharSource*, %_CharSource** %this.addr - %5 = getelementptr inbounds %_CharSource, %_CharSource* %4, i32 0, i32 0 - store %FileRange* %3, %FileRange** %5 - %6 = load %_CharSource*, %_CharSource** %this.addr - %7 = getelementptr inbounds %_CharSource, %_CharSource* %6, i32 0, i32 1 - %8 = load %StringRef, %StringRef* %code.addr - call void @ctor.56(%StringRef* %7, %StringRef %8) +code: ; preds = %0 + %1 = load %TokenType*, %TokenType** %this.addr + %2 = getelementptr inbounds %TokenType, %TokenType* %1, i32 0, i32 0 + store i32 0, i32* %2 ret void } -; Function Attrs: inlinehint nounwind -define internal i1 @isEmpty.139(%_CharSource* %this) #4 { - %this.addr = alloca %_CharSource* - store %_CharSource* %this, %_CharSource** %this.addr +; Function Attrs: alwaysinline nounwind +define internal void @ctor.145(%ErrorReporter* %this) #3 { + %this.addr = alloca %ErrorReporter* + store %ErrorReporter* %this, %ErrorReporter** %this.addr br label %code code: ; preds = %0 - %1 = load %_CharSource*, %_CharSource** %this.addr - %2 = getelementptr inbounds %_CharSource, %_CharSource* %1, i32 0, i32 0 - %3 = load %FileRange*, %FileRange** %2 - %4 = bitcast %FileRange* %3 to i8* - %5 = call i1 @implOpRefNE(i8* %4, i8* null) - br i1 %5, label %cond_alt1, label %cond_alt2 - -cond_alt1: ; preds = %code - %6 = load %_CharSource*, %_CharSource** %this.addr - %7 = getelementptr inbounds %_CharSource, %_CharSource* %6, i32 0, i32 0 - %8 = load %FileRange*, %FileRange** %7 - %9 = call i1 @isEmpty.140(%FileRange* %8) - br label %cond_end - -cond_alt2: ; preds = %code - %10 = load %_CharSource*, %_CharSource** %this.addr - %11 = getelementptr inbounds %_CharSource, %_CharSource* %10, i32 0, i32 1 - %12 = call i1 @isEmpty(%StringRef* %11) - br label %cond_end - -cond_end: ; preds = %cond_alt2, %cond_alt1 - %cond = phi i1 [ %9, %cond_alt1 ], [ %12, %cond_alt2 ] - ret i1 %cond + %1 = load %ErrorReporter*, %ErrorReporter** %this.addr + %2 = getelementptr inbounds %ErrorReporter, %ErrorReporter* %1, i32 0, i32 0 + call void @ctor.135(%UntypedPtr* %2) + %3 = load %ErrorReporter*, %ErrorReporter** %this.addr + %4 = getelementptr inbounds %ErrorReporter, %ErrorReporter* %3, i32 0, i32 1 + call void @ctor.146(%"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* %4) + ret void } -; Function Attrs: inlinehint nounwind -define internal i1 @isEmpty.140(%FileRange* %s) #4 { - %s.addr = alloca %FileRange* - store %FileRange* %s, %FileRange** %s.addr +; Function Attrs: alwaysinline nounwind +define internal void @ctor.146(%"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* %this) #3 { + %this.addr = alloca %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* + store %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* %this, %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"** %this.addr br label %code code: ; preds = %0 - %1 = load %FileRange*, %FileRange** %s.addr - %2 = getelementptr inbounds %FileRange, %FileRange* %1, i32 0, i32 1 - %3 = load i1, i1* %2 - ret i1 %3 + %1 = load %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"*, %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]", %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* %1, i32 0, i32 0 + store i8* null, i8** %2 + ret void } -; Function Attrs: inlinehint nounwind -define internal i8 @front.141(%_CharSource* %this) #4 { - %this.addr = alloca %_CharSource* - store %_CharSource* %this, %_CharSource** %this.addr +; Function Attrs: alwaysinline nounwind +define internal void @ctor.147(%"SparrowLayoutDecoder[SparrowScanner]"* %this) #3 { + %this.addr = alloca %"SparrowLayoutDecoder[SparrowScanner]"* + store %"SparrowLayoutDecoder[SparrowScanner]"* %this, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr br label %code code: ; preds = %0 - br label %if_block - -if_block: ; preds = %code - %1 = load %_CharSource*, %_CharSource** %this.addr - %2 = getelementptr inbounds %_CharSource, %_CharSource* %1, i32 0, i32 0 - %3 = load %FileRange*, %FileRange** %2 - %4 = bitcast %FileRange* %3 to i8* - %5 = call i1 @implOpRefNE(i8* %4, i8* null) - br i1 %5, label %if_then, label %if_else - -if_then: ; preds = %if_block - %6 = load %_CharSource*, %_CharSource** %this.addr - %7 = getelementptr inbounds %_CharSource, %_CharSource* %6, i32 0, i32 0 - %8 = load %FileRange*, %FileRange** %7 - %9 = call i8 @front.142(%FileRange* %8) - ret i8 %9 + %1 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %2 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %1, i32 0, i32 0 + call void @ctor.148(%"RangeWithLookahead[SparrowScanner]"* %2) + %3 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %4 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %3, i32 0, i32 1 + call void @ctor.145(%ErrorReporter* %4) + %5 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %6 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %5, i32 0, i32 2 + call void @ctor.151(%"Vector[UInt]"* %6) + %7 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %8 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %7, i32 0, i32 3 + call void @ctor.142(%"Vector[Char]"* %8) + %9 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %10 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %9, i32 0, i32 4 + call void @ctor.144(%TokenType* %10) + %11 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %12 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %11, i32 0, i32 5 + store i32 0, i32* %12 + ret void +} -if_else: ; preds = %if_block - %10 = load %_CharSource*, %_CharSource** %this.addr - %11 = getelementptr inbounds %_CharSource, %_CharSource* %10, i32 0, i32 1 - %12 = call i8* @front(%StringRef* %11) - %13 = load i8, i8* %12 - ret i8 %13 +; Function Attrs: alwaysinline nounwind +define internal void @ctor.148(%"RangeWithLookahead[SparrowScanner]"* %this) #3 { + %this.addr = alloca %"RangeWithLookahead[SparrowScanner]"* + store %"RangeWithLookahead[SparrowScanner]"* %this, %"RangeWithLookahead[SparrowScanner]"** %this.addr + br label %code -if_end: ; preds = %dumy_block1, %dumy_block - unreachable +code: ; preds = %0 + %1 = load %"RangeWithLookahead[SparrowScanner]"*, %"RangeWithLookahead[SparrowScanner]"** %this.addr + %2 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner]", %"RangeWithLookahead[SparrowScanner]"* %1, i32 0, i32 0 + call void @ctor.129(%SparrowScanner* %2) + %3 = load %"RangeWithLookahead[SparrowScanner]"*, %"RangeWithLookahead[SparrowScanner]"** %this.addr + %4 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner]", %"RangeWithLookahead[SparrowScanner]"* %3, i32 0, i32 1 + call void @ctor.149(%"Vector[Token]"* %4) + ret void +} -dumy_block: ; No predecessors! - br label %if_end +; Function Attrs: alwaysinline nounwind +define internal void @ctor.149(%"Vector[Token]"* %this) #3 { + %this.addr = alloca %"Vector[Token]"* + store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr + br label %code -dumy_block1: ; No predecessors! - br label %if_end +code: ; preds = %0 + %1 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr + %2 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %1, i32 0, i32 0 + call void @ctor.150(%"RawPtr[Token]"* %2) + %3 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr + %4 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %3, i32 0, i32 1 + call void @ctor.150(%"RawPtr[Token]"* %4) + %5 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr + %6 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %5, i32 0, i32 2 + call void @ctor.150(%"RawPtr[Token]"* %6) + ret void } -; Function Attrs: inlinehint nounwind -define internal i8 @front.142(%FileRange* %s) #4 { - %s.addr = alloca %FileRange* - store %FileRange* %s, %FileRange** %s.addr +; Function Attrs: alwaysinline nounwind +define internal void @ctor.150(%"RawPtr[Token]"* %this) #3 { + %this.addr = alloca %"RawPtr[Token]"* + store %"RawPtr[Token]"* %this, %"RawPtr[Token]"** %this.addr br label %code code: ; preds = %0 - %1 = load %FileRange*, %FileRange** %s.addr - %2 = getelementptr inbounds %FileRange, %FileRange* %1, i32 0, i32 2 - %3 = load i8, i8* %2 - ret i8 %3 + %1 = load %"RawPtr[Token]"*, %"RawPtr[Token]"** %this.addr + %2 = getelementptr inbounds %"RawPtr[Token]", %"RawPtr[Token]"* %1, i32 0, i32 0 + store %Token* null, %Token** %2 + ret void } -; Function Attrs: inlinehint nounwind -define internal void @popFront.143(%_CharSource* %this) #4 { - %this.addr = alloca %_CharSource* - store %_CharSource* %this, %_CharSource** %this.addr +; Function Attrs: alwaysinline nounwind +define internal void @ctor.151(%"Vector[UInt]"* %this) #3 { + %this.addr = alloca %"Vector[UInt]"* + store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr br label %code code: ; preds = %0 - br label %if_block + %1 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr + %2 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %1, i32 0, i32 0 + call void @ctor.152(%"RawPtr[UInt]"* %2) + %3 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr + %4 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %3, i32 0, i32 1 + call void @ctor.152(%"RawPtr[UInt]"* %4) + %5 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr + %6 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %5, i32 0, i32 2 + call void @ctor.152(%"RawPtr[UInt]"* %6) + ret void +} -if_block: ; preds = %code - %1 = load %_CharSource*, %_CharSource** %this.addr - %2 = getelementptr inbounds %_CharSource, %_CharSource* %1, i32 0, i32 0 - %3 = load %FileRange*, %FileRange** %2 - %4 = bitcast %FileRange* %3 to i8* - %5 = call i1 @implOpRefNE(i8* %4, i8* null) - br i1 %5, label %if_then, label %if_else +; Function Attrs: alwaysinline nounwind +define internal void @ctor.152(%"RawPtr[UInt]"* %this) #3 { + %this.addr = alloca %"RawPtr[UInt]"* + store %"RawPtr[UInt]"* %this, %"RawPtr[UInt]"** %this.addr + br label %code -if_then: ; preds = %if_block - %6 = load %_CharSource*, %_CharSource** %this.addr - %7 = getelementptr inbounds %_CharSource, %_CharSource* %6, i32 0, i32 0 - %8 = load %FileRange*, %FileRange** %7 - call void @popFront.144(%FileRange* %8) - br label %if_end +code: ; preds = %0 + %1 = load %"RawPtr[UInt]"*, %"RawPtr[UInt]"** %this.addr + %2 = getelementptr inbounds %"RawPtr[UInt]", %"RawPtr[UInt]"* %1, i32 0, i32 0 + store i32* null, i32** %2 + ret void +} -if_else: ; preds = %if_block - %9 = load %_CharSource*, %_CharSource** %this.addr - %10 = getelementptr inbounds %_CharSource, %_CharSource* %9, i32 0, i32 1 - call void @popFront(%StringRef* %10) - br label %if_end +; Function Attrs: alwaysinline nounwind +define internal void @ctor.153(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this) #3 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + br label %code -if_end: ; preds = %if_else, %if_then +code: ; preds = %0 + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, i32 0, i32 0 + call void @ctor.154(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %2) + %3 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %4 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %3, i32 0, i32 1 + call void @ctor.143(%Token* %4) + %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %5, i32 0, i32 2 + store i1 false, i1* %6 + %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %8 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %7, i32 0, i32 3 + call void @ctor.155(%AstBuilder* %8) + %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %10 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %9, i32 0, i32 4 + call void @ctor.145(%ErrorReporter* %10) + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.154(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %this) #3 { + %this.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* + store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + br label %code + +code: ; preds = %0 + %1 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %2 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %1, i32 0, i32 0 + call void @ctor.147(%"SparrowLayoutDecoder[SparrowScanner]"* %2) + %3 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %4 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %3, i32 0, i32 1 + call void @ctor.149(%"Vector[Token]"* %4) + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.155(%AstBuilder* %this) #3 { + %this.addr = alloca %AstBuilder* + store %AstBuilder* %this, %AstBuilder** %this.addr + br label %code + +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %this.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 0 + call void @ctor.135(%UntypedPtr* %2) + %3 = load %AstBuilder*, %AstBuilder** %this.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 1 + call void @ctor.156(%"FunctionPtr3[Node, UntypedPtr, Node, Node]"* %4) + %5 = load %AstBuilder*, %AstBuilder** %this.addr + %6 = getelementptr inbounds %AstBuilder, %AstBuilder* %5, i32 0, i32 2 + call void @ctor.157(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %6) + %7 = load %AstBuilder*, %AstBuilder** %this.addr + %8 = getelementptr inbounds %AstBuilder, %AstBuilder* %7, i32 0, i32 3 + call void @ctor.157(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %8) + %9 = load %AstBuilder*, %AstBuilder** %this.addr + %10 = getelementptr inbounds %AstBuilder, %AstBuilder* %9, i32 0, i32 4 + call void @ctor.158(%"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %10) + %11 = load %AstBuilder*, %AstBuilder** %this.addr + %12 = getelementptr inbounds %AstBuilder, %AstBuilder* %11, i32 0, i32 5 + call void @ctor.159(%"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %12) + %13 = load %AstBuilder*, %AstBuilder** %this.addr + %14 = getelementptr inbounds %AstBuilder, %AstBuilder* %13, i32 0, i32 6 + call void @ctor.160(%"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %14) + %15 = load %AstBuilder*, %AstBuilder** %this.addr + %16 = getelementptr inbounds %AstBuilder, %AstBuilder* %15, i32 0, i32 7 + call void @ctor.161(%"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* %16) + %17 = load %AstBuilder*, %AstBuilder** %this.addr + %18 = getelementptr inbounds %AstBuilder, %AstBuilder* %17, i32 0, i32 8 + call void @ctor.158(%"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %18) + %19 = load %AstBuilder*, %AstBuilder** %this.addr + %20 = getelementptr inbounds %AstBuilder, %AstBuilder* %19, i32 0, i32 9 + call void @ctor.162(%"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* %20) + %21 = load %AstBuilder*, %AstBuilder** %this.addr + %22 = getelementptr inbounds %AstBuilder, %AstBuilder* %21, i32 0, i32 10 + call void @ctor.158(%"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %22) + %23 = load %AstBuilder*, %AstBuilder** %this.addr + %24 = getelementptr inbounds %AstBuilder, %AstBuilder* %23, i32 0, i32 11 + call void @ctor.158(%"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %24) + %25 = load %AstBuilder*, %AstBuilder** %this.addr + %26 = getelementptr inbounds %AstBuilder, %AstBuilder* %25, i32 0, i32 12 + call void @ctor.163(%"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* %26) + %27 = load %AstBuilder*, %AstBuilder** %this.addr + %28 = getelementptr inbounds %AstBuilder, %AstBuilder* %27, i32 0, i32 13 + call void @ctor.164(%"FunctionPtr2[Node, UntypedPtr, Node]"* %28) + %29 = load %AstBuilder*, %AstBuilder** %this.addr + %30 = getelementptr inbounds %AstBuilder, %AstBuilder* %29, i32 0, i32 14 + call void @ctor.165(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %30) + %31 = load %AstBuilder*, %AstBuilder** %this.addr + %32 = getelementptr inbounds %AstBuilder, %AstBuilder* %31, i32 0, i32 15 + call void @ctor.166(%"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* %32) + %33 = load %AstBuilder*, %AstBuilder** %this.addr + %34 = getelementptr inbounds %AstBuilder, %AstBuilder* %33, i32 0, i32 16 + call void @ctor.159(%"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %34) + %35 = load %AstBuilder*, %AstBuilder** %this.addr + %36 = getelementptr inbounds %AstBuilder, %AstBuilder* %35, i32 0, i32 17 + call void @ctor.167(%"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %36) + %37 = load %AstBuilder*, %AstBuilder** %this.addr + %38 = getelementptr inbounds %AstBuilder, %AstBuilder* %37, i32 0, i32 18 + call void @ctor.165(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %38) + %39 = load %AstBuilder*, %AstBuilder** %this.addr + %40 = getelementptr inbounds %AstBuilder, %AstBuilder* %39, i32 0, i32 19 + call void @ctor.165(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %40) + %41 = load %AstBuilder*, %AstBuilder** %this.addr + %42 = getelementptr inbounds %AstBuilder, %AstBuilder* %41, i32 0, i32 20 + call void @ctor.165(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %42) + %43 = load %AstBuilder*, %AstBuilder** %this.addr + %44 = getelementptr inbounds %AstBuilder, %AstBuilder* %43, i32 0, i32 21 + call void @ctor.157(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %44) + %45 = load %AstBuilder*, %AstBuilder** %this.addr + %46 = getelementptr inbounds %AstBuilder, %AstBuilder* %45, i32 0, i32 22 + call void @ctor.168(%"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* %46) + %47 = load %AstBuilder*, %AstBuilder** %this.addr + %48 = getelementptr inbounds %AstBuilder, %AstBuilder* %47, i32 0, i32 23 + call void @ctor.169(%"FunctionPtr2[Node, UntypedPtr, @Location]"* %48) + %49 = load %AstBuilder*, %AstBuilder** %this.addr + %50 = getelementptr inbounds %AstBuilder, %AstBuilder* %49, i32 0, i32 24 + call void @ctor.170(%"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* %50) + %51 = load %AstBuilder*, %AstBuilder** %this.addr + %52 = getelementptr inbounds %AstBuilder, %AstBuilder* %51, i32 0, i32 25 + call void @ctor.171(%"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* %52) + %53 = load %AstBuilder*, %AstBuilder** %this.addr + %54 = getelementptr inbounds %AstBuilder, %AstBuilder* %53, i32 0, i32 26 + call void @ctor.172(%"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* %54) + %55 = load %AstBuilder*, %AstBuilder** %this.addr + %56 = getelementptr inbounds %AstBuilder, %AstBuilder* %55, i32 0, i32 27 + call void @ctor.173(%"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* %56) + %57 = load %AstBuilder*, %AstBuilder** %this.addr + %58 = getelementptr inbounds %AstBuilder, %AstBuilder* %57, i32 0, i32 28 + call void @ctor.174(%"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* %58) + %59 = load %AstBuilder*, %AstBuilder** %this.addr + %60 = getelementptr inbounds %AstBuilder, %AstBuilder* %59, i32 0, i32 29 + call void @ctor.175(%"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* %60) + %61 = load %AstBuilder*, %AstBuilder** %this.addr + %62 = getelementptr inbounds %AstBuilder, %AstBuilder* %61, i32 0, i32 30 + call void @ctor.176(%"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* %62) + %63 = load %AstBuilder*, %AstBuilder** %this.addr + %64 = getelementptr inbounds %AstBuilder, %AstBuilder* %63, i32 0, i32 31 + call void @ctor.177(%"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* %64) + %65 = load %AstBuilder*, %AstBuilder** %this.addr + %66 = getelementptr inbounds %AstBuilder, %AstBuilder* %65, i32 0, i32 32 + call void @ctor.167(%"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %66) + %67 = load %AstBuilder*, %AstBuilder** %this.addr + %68 = getelementptr inbounds %AstBuilder, %AstBuilder* %67, i32 0, i32 33 + call void @ctor.178(%"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %68) + %69 = load %AstBuilder*, %AstBuilder** %this.addr + %70 = getelementptr inbounds %AstBuilder, %AstBuilder* %69, i32 0, i32 34 + call void @ctor.179(%"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %70) + %71 = load %AstBuilder*, %AstBuilder** %this.addr + %72 = getelementptr inbounds %AstBuilder, %AstBuilder* %71, i32 0, i32 35 + call void @ctor.160(%"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %72) + %73 = load %AstBuilder*, %AstBuilder** %this.addr + %74 = getelementptr inbounds %AstBuilder, %AstBuilder* %73, i32 0, i32 36 + call void @ctor.179(%"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %74) + %75 = load %AstBuilder*, %AstBuilder** %this.addr + %76 = getelementptr inbounds %AstBuilder, %AstBuilder* %75, i32 0, i32 37 + call void @ctor.169(%"FunctionPtr2[Node, UntypedPtr, @Location]"* %76) + %77 = load %AstBuilder*, %AstBuilder** %this.addr + %78 = getelementptr inbounds %AstBuilder, %AstBuilder* %77, i32 0, i32 38 + call void @ctor.169(%"FunctionPtr2[Node, UntypedPtr, @Location]"* %78) + %79 = load %AstBuilder*, %AstBuilder** %this.addr + %80 = getelementptr inbounds %AstBuilder, %AstBuilder* %79, i32 0, i32 39 + call void @ctor.178(%"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %80) + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.156(%"FunctionPtr3[Node, UntypedPtr, Node, Node]"* %this) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, Node, Node]"* + store %"FunctionPtr3[Node, UntypedPtr, Node, Node]"* %this, %"FunctionPtr3[Node, UntypedPtr, Node, Node]"** %this.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, Node, Node]"*, %"FunctionPtr3[Node, UntypedPtr, Node, Node]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, Node, Node]", %"FunctionPtr3[Node, UntypedPtr, Node, Node]"* %1, i32 0, i32 0 + store i8* null, i8** %2 ret void } -; Function Attrs: inlinehint nounwind -define internal void @popFront.144(%FileRange* %s) #4 { - %s.addr = alloca %FileRange* - store %FileRange* %s, %FileRange** %s.addr +; Function Attrs: alwaysinline nounwind +define internal void @ctor.157(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %this) #3 { + %this.addr = alloca %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* + store %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %this, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"** %this.addr br label %code code: ; preds = %0 - %1 = load %FileRange*, %FileRange** %s.addr - %2 = getelementptr inbounds %FileRange, %FileRange* %1, i32 0, i32 0 - %3 = load %File*, %File** %2 - %4 = call i8 @readChar(%File* %3) - %5 = load %FileRange*, %FileRange** %s.addr - %6 = getelementptr inbounds %FileRange, %FileRange* %5, i32 0, i32 2 - store i8 %4, i8* %6 - br label %if_block - -if_block: ; preds = %code - %7 = load %FileRange*, %FileRange** %s.addr - %8 = getelementptr inbounds %FileRange, %FileRange* %7, i32 0, i32 0 - %9 = load %File*, %File** %8 - %10 = call i1 @isEof(%File* %9) - br i1 %10, label %if_then, label %if_end - -if_then: ; preds = %if_block - %11 = load %FileRange*, %FileRange** %s.addr - %12 = getelementptr inbounds %FileRange, %FileRange* %11, i32 0, i32 1 - store i1 true, i1* %12 - br label %if_end - -if_end: ; preds = %if_then, %if_block + %1 = load %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"*, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]", %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %1, i32 0, i32 0 + store i8* null, i8** %2 ret void } -; Function Attrs: inlinehint nounwind -define internal i8 @readChar(%File* %this) #4 { - %this.addr = alloca %File* - store %File* %this, %File** %this.addr - %tmp.this = alloca i8 - br label %code - -code: ; preds = %0 - %1 = load %File*, %File** %this.addr - %2 = getelementptr inbounds %File, %File* %1, i32 0, i32 0 - %3 = load i8*, i8** %2 - %4 = call i32 @fgetc(i8* %3) - %5 = trunc i32 %4 to i8 - store i8 %5, i8* %tmp.this - %6 = load i8, i8* %tmp.this - ret i8 %6 -} - -declare i32 @fgetc(i8*) - -; Function Attrs: inlinehint nounwind -define internal i1 @isEof(%File* %this) #4 { - %this.addr = alloca %File* - store %File* %this, %File** %this.addr - br label %code - -code: ; preds = %0 - %1 = load %File*, %File** %this.addr - %2 = getelementptr inbounds %File, %File* %1, i32 0, i32 0 - %3 = load i8*, i8** %2 - %4 = call i32 @feof(i8* %3) - %5 = icmp ne i32 0, %4 - ret i1 %5 -} - -declare i32 @feof(i8*) - ; Function Attrs: alwaysinline nounwind -define internal void @ctor.145(%ParserContext* %this) #3 { - %this.addr = alloca %ParserContext* - store %ParserContext* %this, %ParserContext** %this.addr +define internal void @ctor.158(%"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %this) #3 { + %this.addr = alloca %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* + store %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %this, %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"** %this.addr br label %code code: ; preds = %0 - %1 = load %ParserContext*, %ParserContext** %this.addr - %2 = getelementptr inbounds %ParserContext, %ParserContext* %1, i32 0, i32 0 - call void @ctor.146(%File* %2) - %3 = load %ParserContext*, %ParserContext** %this.addr - %4 = getelementptr inbounds %ParserContext, %ParserContext* %3, i32 0, i32 1 - call void @ctor.147(%FileRange* %4) - %5 = load %ParserContext*, %ParserContext** %this.addr - %6 = getelementptr inbounds %ParserContext, %ParserContext* %5, i32 0, i32 2 - call void @ctor.133(%_CharSource* %6) - %7 = load %ParserContext*, %ParserContext** %this.addr - %8 = getelementptr inbounds %ParserContext, %ParserContext* %7, i32 0, i32 3 - call void @ctor.148(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %8) - %9 = load %ParserContext*, %ParserContext** %this.addr - %10 = getelementptr inbounds %ParserContext, %ParserContext* %9, i32 0, i32 4 - call void @ctor.159(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %10) - %11 = load %ParserContext*, %ParserContext** %this.addr - %12 = getelementptr inbounds %ParserContext, %ParserContext* %11, i32 0, i32 5 - call void @ctor.165(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %12) + %1 = load %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"*, %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]", %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %1, i32 0, i32 0 + store i8* null, i8** %2 ret void } -; Function Attrs: inlinehint nounwind -define internal void @ctor.146(%File* %this) #4 { - %this.addr = alloca %File* - store %File* %this, %File** %this.addr +; Function Attrs: alwaysinline nounwind +define internal void @ctor.159(%"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %this) #3 { + %this.addr = alloca %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* + store %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %this, %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"** %this.addr br label %code code: ; preds = %0 - %1 = load %File*, %File** %this.addr - %2 = getelementptr inbounds %File, %File* %1, i32 0, i32 0 + %1 = load %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"*, %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]", %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %1, i32 0, i32 0 store i8* null, i8** %2 - %3 = load %File*, %File** %this.addr - %4 = getelementptr inbounds %File, %File* %3, i32 0, i32 0 - store i8* null, i8** %4 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.147(%FileRange* %this) #3 { - %this.addr = alloca %FileRange* - store %FileRange* %this, %FileRange** %this.addr +define internal void @ctor.160(%"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %this) #3 { + %this.addr = alloca %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* + store %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %this, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"** %this.addr br label %code code: ; preds = %0 - %1 = load %FileRange*, %FileRange** %this.addr - %2 = getelementptr inbounds %FileRange, %FileRange* %1, i32 0, i32 0 - store %File* null, %File** %2 - %3 = load %FileRange*, %FileRange** %this.addr - %4 = getelementptr inbounds %FileRange, %FileRange* %3, i32 0, i32 1 - store i1 false, i1* %4 - %5 = load %FileRange*, %FileRange** %this.addr - %6 = getelementptr inbounds %FileRange, %FileRange* %5, i32 0, i32 2 - store i8 0, i8* %6 + %1 = load %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"*, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]", %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %1, i32 0, i32 0 + store i8* null, i8** %2 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.148(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this) #3 { - %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* - store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr +define internal void @ctor.161(%"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* %this) #3 { + %this.addr = alloca %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* + store %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* %this, %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"** %this.addr br label %code code: ; preds = %0 - %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 0 - call void @ctor.149(%Location* %2) - %3 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %4 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %3, i32 0, i32 1 - call void @ctor.152(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %4) - %5 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %6 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %5, i32 0, i32 2 - call void @ctor.156(%Token* %6) - %7 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %8 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %7, i32 0, i32 3 - store i1 false, i1* %8 + %1 = load %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"*, %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]", %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* %1, i32 0, i32 0 + store i8* null, i8** %2 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.149(%Location* %this) #3 { - %this.addr = alloca %Location* - store %Location* %this, %Location** %this.addr +define internal void @ctor.162(%"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* %this) #3 { + %this.addr = alloca %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* + store %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* %this, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"** %this.addr br label %code code: ; preds = %0 - %1 = load %Location*, %Location** %this.addr - %2 = getelementptr inbounds %Location, %Location* %1, i32 0, i32 0 - call void @ctor.150(%SourceCode* %2) - %3 = load %Location*, %Location** %this.addr - %4 = getelementptr inbounds %Location, %Location* %3, i32 0, i32 1 - call void @ctor.151(%LineCol* %4) - %5 = load %Location*, %Location** %this.addr - %6 = getelementptr inbounds %Location, %Location* %5, i32 0, i32 2 - call void @ctor.151(%LineCol* %6) + %1 = load %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"*, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]", %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* %1, i32 0, i32 0 + store i8* null, i8** %2 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.150(%SourceCode* %this) #3 { - %this.addr = alloca %SourceCode* - store %SourceCode* %this, %SourceCode** %this.addr +define internal void @ctor.163(%"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* %this) #3 { + %this.addr = alloca %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* + store %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* %this, %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"** %this.addr br label %code code: ; preds = %0 - %1 = load %SourceCode*, %SourceCode** %this.addr - %2 = getelementptr inbounds %SourceCode, %SourceCode* %1, i32 0, i32 0 + %1 = load %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"*, %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]", %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* %1, i32 0, i32 0 store i8* null, i8** %2 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.151(%LineCol* %this) #3 { - %this.addr = alloca %LineCol* - store %LineCol* %this, %LineCol** %this.addr +define internal void @ctor.164(%"FunctionPtr2[Node, UntypedPtr, Node]"* %this) #3 { + %this.addr = alloca %"FunctionPtr2[Node, UntypedPtr, Node]"* + store %"FunctionPtr2[Node, UntypedPtr, Node]"* %this, %"FunctionPtr2[Node, UntypedPtr, Node]"** %this.addr br label %code code: ; preds = %0 - %1 = load %LineCol*, %LineCol** %this.addr - %2 = getelementptr inbounds %LineCol, %LineCol* %1, i32 0, i32 0 - store i32 0, i32* %2 - %3 = load %LineCol*, %LineCol** %this.addr - %4 = getelementptr inbounds %LineCol, %LineCol* %3, i32 0, i32 1 - store i32 0, i32* %4 + %1 = load %"FunctionPtr2[Node, UntypedPtr, Node]"*, %"FunctionPtr2[Node, UntypedPtr, Node]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr2[Node, UntypedPtr, Node]", %"FunctionPtr2[Node, UntypedPtr, Node]"* %1, i32 0, i32 0 + store i8* null, i8** %2 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.152(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this) #3 { - %this.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* - store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr +define internal void @ctor.165(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %this) #3 { + %this.addr = alloca %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* + store %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %this, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"** %this.addr br label %code code: ; preds = %0 - %1 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr - %2 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1, i32 0, i32 0 - call void @ctor.153(%"RangeWithLookahead[_CharSource]"* %2) - %3 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr - %4 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %3, i32 0, i32 1 - store %Location* null, %Location** %4 + %1 = load %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"*, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]", %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %1, i32 0, i32 0 + store i8* null, i8** %2 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.153(%"RangeWithLookahead[_CharSource]"* %this) #3 { - %this.addr = alloca %"RangeWithLookahead[_CharSource]"* - store %"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"** %this.addr +define internal void @ctor.166(%"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* %this) #3 { + %this.addr = alloca %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* + store %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* %this, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"** %this.addr br label %code code: ; preds = %0 - %1 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %2 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %1, i32 0, i32 0 - call void @ctor.133(%_CharSource* %2) - %3 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %4 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %3, i32 0, i32 1 - call void @ctor.154(%"Vector[Char]"* %4) + %1 = load %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"*, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]", %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* %1, i32 0, i32 0 + store i8* null, i8** %2 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.154(%"Vector[Char]"* %this) #3 { - %this.addr = alloca %"Vector[Char]"* - store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr +define internal void @ctor.167(%"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %this) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"** %this.addr br label %code code: ; preds = %0 - %1 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %2 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %1, i32 0, i32 0 - call void @ctor.155(%"RawPtr[Char]"* %2) - %3 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %4 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %3, i32 0, i32 1 - call void @ctor.155(%"RawPtr[Char]"* %4) - %5 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %6 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %5, i32 0, i32 2 - call void @ctor.155(%"RawPtr[Char]"* %6) + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]", %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %1, i32 0, i32 0 + store i8* null, i8** %2 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.155(%"RawPtr[Char]"* %this) #3 { - %this.addr = alloca %"RawPtr[Char]"* - store %"RawPtr[Char]"* %this, %"RawPtr[Char]"** %this.addr +define internal void @ctor.168(%"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* %this) #3 { + %this.addr = alloca %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* + store %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* %this, %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"** %this.addr br label %code code: ; preds = %0 - %1 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %this.addr - %2 = getelementptr inbounds %"RawPtr[Char]", %"RawPtr[Char]"* %1, i32 0, i32 0 + %1 = load %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"*, %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]", %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* %1, i32 0, i32 0 store i8* null, i8** %2 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.156(%Token* %this) #3 { - %this.addr = alloca %Token* - store %Token* %this, %Token** %this.addr +define internal void @ctor.169(%"FunctionPtr2[Node, UntypedPtr, @Location]"* %this) #3 { + %this.addr = alloca %"FunctionPtr2[Node, UntypedPtr, @Location]"* + store %"FunctionPtr2[Node, UntypedPtr, @Location]"* %this, %"FunctionPtr2[Node, UntypedPtr, @Location]"** %this.addr br label %code code: ; preds = %0 - %1 = load %Token*, %Token** %this.addr - %2 = getelementptr inbounds %Token, %Token* %1, i32 0, i32 0 - call void @ctor.149(%Location* %2) - %3 = load %Token*, %Token** %this.addr - %4 = getelementptr inbounds %Token, %Token* %3, i32 0, i32 1 - call void @ctor.157(%TokenType* %4) - %5 = load %Token*, %Token** %this.addr - %6 = getelementptr inbounds %Token, %Token* %5, i32 0, i32 2 - call void @ctor.158(%String* %6) - %7 = load %Token*, %Token** %this.addr - %8 = getelementptr inbounds %Token, %Token* %7, i32 0, i32 3 - store i64 0, i64* %8 - %9 = load %Token*, %Token** %this.addr - %10 = getelementptr inbounds %Token, %Token* %9, i32 0, i32 4 - store double 0.000000e+00, double* %10 + %1 = load %"FunctionPtr2[Node, UntypedPtr, @Location]"*, %"FunctionPtr2[Node, UntypedPtr, @Location]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr2[Node, UntypedPtr, @Location]", %"FunctionPtr2[Node, UntypedPtr, @Location]"* %1, i32 0, i32 0 + store i8* null, i8** %2 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.157(%TokenType* %this) #3 { - %this.addr = alloca %TokenType* - store %TokenType* %this, %TokenType** %this.addr +define internal void @ctor.170(%"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* %this) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"** %this.addr br label %code code: ; preds = %0 - %1 = load %TokenType*, %TokenType** %this.addr - %2 = getelementptr inbounds %TokenType, %TokenType* %1, i32 0, i32 0 - store i32 0, i32* %2 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]", %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* %1, i32 0, i32 0 + store i8* null, i8** %2 ret void } -; Function Attrs: inlinehint nounwind -define internal void @ctor.158(%String* %this) #4 { - %this.addr = alloca %String* - store %String* %this, %String** %this.addr +; Function Attrs: alwaysinline nounwind +define internal void @ctor.171(%"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* %this) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"** %this.addr br label %code code: ; preds = %0 - %1 = load %String*, %String** %this.addr - %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 0 - call void @ctor.155(%"RawPtr[Char]"* %2) - %3 = load %String*, %String** %this.addr - %4 = getelementptr inbounds %String, %String* %3, i32 0, i32 1 - call void @ctor.155(%"RawPtr[Char]"* %4) - %5 = load %String*, %String** %this.addr - %6 = getelementptr inbounds %String, %String* %5, i32 0, i32 2 - call void @ctor.155(%"RawPtr[Char]"* %6) + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Int]", %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* %1, i32 0, i32 0 + store i8* null, i8** %2 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.159(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this) #3 { - %this.addr = alloca %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal void @ctor.172(%"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* %this) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"** %this.addr br label %code code: ; preds = %0 - %1 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 0 - call void @ctor.160(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %2) - %3 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %4 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %3, i32 0, i32 2 - call void @ctor.163(%"Vector[UInt]"* %4) - %5 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %6 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 3 - call void @ctor.154(%"Vector[Char]"* %6) - %7 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %8 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %7, i32 0, i32 4 - call void @ctor.157(%TokenType* %8) - %9 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %10 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %9, i32 0, i32 5 - store i32 0, i32* %10 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]", %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* %1, i32 0, i32 0 + store i8* null, i8** %2 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.160(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this) #3 { - %this.addr = alloca %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* - store %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr +define internal void @ctor.173(%"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* %this) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"** %this.addr br label %code code: ; preds = %0 - %1 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr - %2 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %1, i32 0, i32 0 - call void @ctor.148(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %2) - %3 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr - %4 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %3, i32 0, i32 1 - call void @ctor.161(%"Vector[Token]"* %4) + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Long]", %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* %1, i32 0, i32 0 + store i8* null, i8** %2 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.161(%"Vector[Token]"* %this) #3 { - %this.addr = alloca %"Vector[Token]"* - store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr +define internal void @ctor.174(%"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* %this) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"** %this.addr br label %code code: ; preds = %0 - %1 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr - %2 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %1, i32 0, i32 0 - call void @ctor.162(%"RawPtr[Token]"* %2) - %3 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr - %4 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %3, i32 0, i32 1 - call void @ctor.162(%"RawPtr[Token]"* %4) - %5 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr - %6 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %5, i32 0, i32 2 - call void @ctor.162(%"RawPtr[Token]"* %6) + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]", %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* %1, i32 0, i32 0 + store i8* null, i8** %2 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.162(%"RawPtr[Token]"* %this) #3 { - %this.addr = alloca %"RawPtr[Token]"* - store %"RawPtr[Token]"* %this, %"RawPtr[Token]"** %this.addr +define internal void @ctor.175(%"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* %this) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"** %this.addr br label %code code: ; preds = %0 - %1 = load %"RawPtr[Token]"*, %"RawPtr[Token]"** %this.addr - %2 = getelementptr inbounds %"RawPtr[Token]", %"RawPtr[Token]"* %1, i32 0, i32 0 - store %Token* null, %Token** %2 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Float]", %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* %1, i32 0, i32 0 + store i8* null, i8** %2 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.163(%"Vector[UInt]"* %this) #3 { - %this.addr = alloca %"Vector[UInt]"* - store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr +define internal void @ctor.176(%"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* %this) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"** %this.addr br label %code code: ; preds = %0 - %1 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr - %2 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %1, i32 0, i32 0 - call void @ctor.164(%"RawPtr[UInt]"* %2) - %3 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr - %4 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %3, i32 0, i32 1 - call void @ctor.164(%"RawPtr[UInt]"* %4) - %5 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr - %6 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %5, i32 0, i32 2 - call void @ctor.164(%"RawPtr[UInt]"* %6) + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Double]", %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* %1, i32 0, i32 0 + store i8* null, i8** %2 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.164(%"RawPtr[UInt]"* %this) #3 { - %this.addr = alloca %"RawPtr[UInt]"* - store %"RawPtr[UInt]"* %this, %"RawPtr[UInt]"** %this.addr +define internal void @ctor.177(%"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* %this) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"** %this.addr br label %code code: ; preds = %0 - %1 = load %"RawPtr[UInt]"*, %"RawPtr[UInt]"** %this.addr - %2 = getelementptr inbounds %"RawPtr[UInt]", %"RawPtr[UInt]"* %1, i32 0, i32 0 - store i32* null, i32** %2 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Char]", %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* %1, i32 0, i32 0 + store i8* null, i8** %2 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.165(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this) #3 { - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal void @ctor.178(%"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %this) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"** %this.addr br label %code code: ; preds = %0 - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 0 - call void @ctor.166(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %2) - %3 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %4 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %3, i32 0, i32 1 - call void @ctor.156(%Token* %4) - %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 2 - store i1 false, i1* %6 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Node]", %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %1, i32 0, i32 0 + store i8* null, i8** %2 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.166(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this) #3 { - %this.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* - store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr +define internal void @ctor.179(%"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %this) #3 { + %this.addr = alloca %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* + store %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %this, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"** %this.addr br label %code code: ; preds = %0 - %1 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %2 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %1, i32 0, i32 0 - call void @ctor.159(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %2) - %3 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %4 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %3, i32 0, i32 1 - call void @ctor.161(%"Vector[Token]"* %4) + %1 = load %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"*, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]", %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %1, i32 0, i32 0 + store i8* null, i8** %2 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.167(%ParserContext* %this, %ParserContext* %other) #3 { +define internal void @ctor.180(%ParserContext* %this, %ParserContext* %other) #3 { %this.addr = alloca %ParserContext* store %ParserContext* %this, %ParserContext** %this.addr %other.addr = alloca %ParserContext* @@ -5683,155 +5789,102 @@ code: ; preds = %0 %2 = getelementptr inbounds %ParserContext, %ParserContext* %1, i32 0, i32 0 %3 = load %ParserContext*, %ParserContext** %other.addr %4 = getelementptr inbounds %ParserContext, %ParserContext* %3, i32 0, i32 0 - call void @ctor.168(%File* %2, %File* %4) + call void @ctor.181(%SparrowScanner* %2, %SparrowScanner* %4) %5 = load %ParserContext*, %ParserContext** %this.addr %6 = getelementptr inbounds %ParserContext, %ParserContext* %5, i32 0, i32 1 %7 = load %ParserContext*, %ParserContext** %other.addr %8 = getelementptr inbounds %ParserContext, %ParserContext* %7, i32 0, i32 1 - call void @ctor.169(%FileRange* %6, %FileRange* %8) + call void @ctor.206(%"SparrowLayoutDecoder[SparrowScanner]"* %6, %"SparrowLayoutDecoder[SparrowScanner]"* %8) %9 = load %ParserContext*, %ParserContext** %this.addr %10 = getelementptr inbounds %ParserContext, %ParserContext* %9, i32 0, i32 2 %11 = load %ParserContext*, %ParserContext** %other.addr %12 = getelementptr inbounds %ParserContext, %ParserContext* %11, i32 0, i32 2 - call void @ctor.134(%_CharSource* %10, %_CharSource* %12) - %13 = load %ParserContext*, %ParserContext** %this.addr - %14 = getelementptr inbounds %ParserContext, %ParserContext* %13, i32 0, i32 3 - %15 = load %ParserContext*, %ParserContext** %other.addr - %16 = getelementptr inbounds %ParserContext, %ParserContext* %15, i32 0, i32 3 - call void @ctor.170(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %14, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %16) - %17 = load %ParserContext*, %ParserContext** %this.addr - %18 = getelementptr inbounds %ParserContext, %ParserContext* %17, i32 0, i32 4 - %19 = load %ParserContext*, %ParserContext** %other.addr - %20 = getelementptr inbounds %ParserContext, %ParserContext* %19, i32 0, i32 4 - call void @ctor.188(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %18, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %20) - %21 = load %ParserContext*, %ParserContext** %this.addr - %22 = getelementptr inbounds %ParserContext, %ParserContext* %21, i32 0, i32 5 - %23 = load %ParserContext*, %ParserContext** %other.addr - %24 = getelementptr inbounds %ParserContext, %ParserContext* %23, i32 0, i32 5 - call void @ctor.213(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %22, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %24) + call void @ctor.231(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %10, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %12) + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.181(%SparrowScanner* %this, %SparrowScanner* %other) #3 { + %this.addr = alloca %SparrowScanner* + store %SparrowScanner* %this, %SparrowScanner** %this.addr + %other.addr = alloca %SparrowScanner* + store %SparrowScanner* %other, %SparrowScanner** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %SparrowScanner*, %SparrowScanner** %this.addr + %2 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %1, i32 0, i32 0 + %3 = load %SparrowScanner*, %SparrowScanner** %other.addr + %4 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %3, i32 0, i32 0 + call void @ctor.182(%Location* %2, %Location* %4) + %5 = load %SparrowScanner*, %SparrowScanner** %this.addr + %6 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %5, i32 0, i32 1 + %7 = load %SparrowScanner*, %SparrowScanner** %other.addr + %8 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %7, i32 0, i32 1 + call void @ctor.185(%BufferedCharSource* %6, %BufferedCharSource* %8) + %9 = load %SparrowScanner*, %SparrowScanner** %this.addr + %10 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %9, i32 0, i32 2 + %11 = load %SparrowScanner*, %SparrowScanner** %other.addr + %12 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %11, i32 0, i32 2 + call void @ctor.195(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %10, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %12) + %13 = load %SparrowScanner*, %SparrowScanner** %this.addr + %14 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %13, i32 0, i32 3 + %15 = load %SparrowScanner*, %SparrowScanner** %other.addr + %16 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %15, i32 0, i32 3 + call void @ctor.202(%Token* %14, %Token* %16) + %17 = load %SparrowScanner*, %SparrowScanner** %other.addr + %18 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %17, i32 0, i32 4 + %19 = load i1, i1* %18 + %20 = load %SparrowScanner*, %SparrowScanner** %this.addr + %21 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %20, i32 0, i32 4 + store i1 %19, i1* %21 + %22 = load %SparrowScanner*, %SparrowScanner** %this.addr + %23 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %22, i32 0, i32 5 + %24 = load %SparrowScanner*, %SparrowScanner** %other.addr + %25 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %24, i32 0, i32 5 + call void @ctor.204(%ErrorReporter* %23, %ErrorReporter* %25) + %26 = load %SparrowScanner*, %SparrowScanner** %other.addr + %27 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %26, i32 0, i32 6 + %28 = load i1, i1* %27 + %29 = load %SparrowScanner*, %SparrowScanner** %this.addr + %30 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %29, i32 0, i32 6 + store i1 %28, i1* %30 ret void } -; Function Attrs: inlinehint nounwind -define internal void @ctor.168(%File* %this, %File* %other) #4 { - %this.addr = alloca %File* - store %File* %this, %File** %this.addr - %other.addr = alloca %File* - store %File* %other, %File** %other.addr +; Function Attrs: alwaysinline nounwind +define internal void @ctor.182(%Location* %this, %Location* %other) #3 { + %this.addr = alloca %Location* + store %Location* %this, %Location** %this.addr + %other.addr = alloca %Location* + store %Location* %other, %Location** %other.addr br label %code code: ; preds = %0 - %1 = load %File*, %File** %this.addr - %2 = getelementptr inbounds %File, %File* %1, i32 0, i32 0 - store i8* null, i8** %2 - %3 = load %File*, %File** %other.addr - %4 = getelementptr inbounds %File, %File* %3, i32 0, i32 0 - %5 = load i8*, i8** %4 - %6 = load %File*, %File** %this.addr - %7 = getelementptr inbounds %File, %File* %6, i32 0, i32 0 - store i8* %5, i8** %7 - %8 = load %File*, %File** %other.addr - %9 = getelementptr inbounds %File, %File* %8, i32 0, i32 0 - store i8* null, i8** %9 + %1 = load %Location*, %Location** %this.addr + %2 = getelementptr inbounds %Location, %Location* %1, i32 0, i32 0 + %3 = load %Location*, %Location** %other.addr + %4 = getelementptr inbounds %Location, %Location* %3, i32 0, i32 0 + call void @ctor.183(%SourceCode* %2, %SourceCode* %4) + %5 = load %Location*, %Location** %this.addr + %6 = getelementptr inbounds %Location, %Location* %5, i32 0, i32 1 + %7 = load %Location*, %Location** %other.addr + %8 = getelementptr inbounds %Location, %Location* %7, i32 0, i32 1 + call void @ctor.184(%LineCol* %6, %LineCol* %8) + %9 = load %Location*, %Location** %this.addr + %10 = getelementptr inbounds %Location, %Location* %9, i32 0, i32 2 + %11 = load %Location*, %Location** %other.addr + %12 = getelementptr inbounds %Location, %Location* %11, i32 0, i32 2 + call void @ctor.184(%LineCol* %10, %LineCol* %12) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.169(%FileRange* %this, %FileRange* %other) #3 { - %this.addr = alloca %FileRange* - store %FileRange* %this, %FileRange** %this.addr - %other.addr = alloca %FileRange* - store %FileRange* %other, %FileRange** %other.addr - br label %code - -code: ; preds = %0 - %1 = load %FileRange*, %FileRange** %other.addr - %2 = getelementptr inbounds %FileRange, %FileRange* %1, i32 0, i32 0 - %3 = load %File*, %File** %2 - %4 = load %FileRange*, %FileRange** %this.addr - %5 = getelementptr inbounds %FileRange, %FileRange* %4, i32 0, i32 0 - store %File* %3, %File** %5 - %6 = load %FileRange*, %FileRange** %other.addr - %7 = getelementptr inbounds %FileRange, %FileRange* %6, i32 0, i32 1 - %8 = load i1, i1* %7 - %9 = load %FileRange*, %FileRange** %this.addr - %10 = getelementptr inbounds %FileRange, %FileRange* %9, i32 0, i32 1 - store i1 %8, i1* %10 - %11 = load %FileRange*, %FileRange** %other.addr - %12 = getelementptr inbounds %FileRange, %FileRange* %11, i32 0, i32 2 - %13 = load i8, i8* %12 - %14 = load %FileRange*, %FileRange** %this.addr - %15 = getelementptr inbounds %FileRange, %FileRange* %14, i32 0, i32 2 - store i8 %13, i8* %15 - ret void -} - -; Function Attrs: alwaysinline nounwind -define internal void @ctor.170(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %other) #3 { - %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* - store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %other.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* - store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %other, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %other.addr - br label %code - -code: ; preds = %0 - %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 0 - %3 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %other.addr - %4 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %3, i32 0, i32 0 - call void @ctor.171(%Location* %2, %Location* %4) - %5 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %6 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %5, i32 0, i32 1 - %7 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %other.addr - %8 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %7, i32 0, i32 1 - call void @ctor.174(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %6, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %8) - %9 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %10 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %9, i32 0, i32 2 - %11 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %other.addr - %12 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %11, i32 0, i32 2 - call void @ctor.182(%Token* %10, %Token* %12) - %13 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %other.addr - %14 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %13, i32 0, i32 3 - %15 = load i1, i1* %14 - %16 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %17 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %16, i32 0, i32 3 - store i1 %15, i1* %17 - ret void -} - -; Function Attrs: alwaysinline nounwind -define internal void @ctor.171(%Location* %this, %Location* %other) #3 { - %this.addr = alloca %Location* - store %Location* %this, %Location** %this.addr - %other.addr = alloca %Location* - store %Location* %other, %Location** %other.addr - br label %code - -code: ; preds = %0 - %1 = load %Location*, %Location** %this.addr - %2 = getelementptr inbounds %Location, %Location* %1, i32 0, i32 0 - %3 = load %Location*, %Location** %other.addr - %4 = getelementptr inbounds %Location, %Location* %3, i32 0, i32 0 - call void @ctor.172(%SourceCode* %2, %SourceCode* %4) - %5 = load %Location*, %Location** %this.addr - %6 = getelementptr inbounds %Location, %Location* %5, i32 0, i32 1 - %7 = load %Location*, %Location** %other.addr - %8 = getelementptr inbounds %Location, %Location* %7, i32 0, i32 1 - call void @ctor.173(%LineCol* %6, %LineCol* %8) - %9 = load %Location*, %Location** %this.addr - %10 = getelementptr inbounds %Location, %Location* %9, i32 0, i32 2 - %11 = load %Location*, %Location** %other.addr - %12 = getelementptr inbounds %Location, %Location* %11, i32 0, i32 2 - call void @ctor.173(%LineCol* %10, %LineCol* %12) - ret void -} - -; Function Attrs: alwaysinline nounwind -define internal void @ctor.172(%SourceCode* %this, %SourceCode* %other) #3 { - %this.addr = alloca %SourceCode* - store %SourceCode* %this, %SourceCode** %this.addr - %other.addr = alloca %SourceCode* - store %SourceCode* %other, %SourceCode** %other.addr +define internal void @ctor.183(%SourceCode* %this, %SourceCode* %other) #3 { + %this.addr = alloca %SourceCode* + store %SourceCode* %this, %SourceCode** %this.addr + %other.addr = alloca %SourceCode* + store %SourceCode* %other, %SourceCode** %other.addr br label %code code: ; preds = %0 @@ -5845,7 +5898,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.173(%LineCol* %this, %LineCol* %other) #3 { +define internal void @ctor.184(%LineCol* %this, %LineCol* %other) #3 { %this.addr = alloca %LineCol* store %LineCol* %this, %LineCol** %this.addr %other.addr = alloca %LineCol* @@ -5869,123 +5922,133 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.174(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %other) #3 { - %this.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* - store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr - %other.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* - store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %other, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %other.addr +define internal void @ctor.185(%BufferedCharSource* %this, %BufferedCharSource* %other) #3 { + %this.addr = alloca %BufferedCharSource* + store %BufferedCharSource* %this, %BufferedCharSource** %this.addr + %other.addr = alloca %BufferedCharSource* + store %BufferedCharSource* %other, %BufferedCharSource** %other.addr br label %code code: ; preds = %0 - %1 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr - %2 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1, i32 0, i32 0 - %3 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %other.addr - %4 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %3, i32 0, i32 0 - call void @ctor.175(%"RangeWithLookahead[_CharSource]"* %2, %"RangeWithLookahead[_CharSource]"* %4) - %5 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %other.addr - %6 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5, i32 0, i32 1 - %7 = load %Location*, %Location** %6 - %8 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr - %9 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %8, i32 0, i32 1 - store %Location* %7, %Location** %9 + %1 = load %BufferedCharSource*, %BufferedCharSource** %this.addr + %2 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %1, i32 0, i32 0 + %3 = load %BufferedCharSource*, %BufferedCharSource** %other.addr + %4 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %3, i32 0, i32 0 + call void @ctor.186(%CharSource* %2, %CharSource* %4) + %5 = load %BufferedCharSource*, %BufferedCharSource** %this.addr + %6 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %5, i32 0, i32 1 + %7 = load %BufferedCharSource*, %BufferedCharSource** %other.addr + %8 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %7, i32 0, i32 1 + call void @ctor.189(%String* %6, %String* %8) + %9 = load %BufferedCharSource*, %BufferedCharSource** %other.addr + %10 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %9, i32 0, i32 2 + %11 = load i32, i32* %10 + %12 = load %BufferedCharSource*, %BufferedCharSource** %this.addr + %13 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %12, i32 0, i32 2 + store i32 %11, i32* %13 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.186(%CharSource* %this, %CharSource* %other) #3 { + %this.addr = alloca %CharSource* + store %CharSource* %this, %CharSource** %this.addr + %other.addr = alloca %CharSource* + store %CharSource* %other, %CharSource** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %CharSource*, %CharSource** %this.addr + %2 = getelementptr inbounds %CharSource, %CharSource* %1, i32 0, i32 0 + %3 = load %CharSource*, %CharSource** %other.addr + %4 = getelementptr inbounds %CharSource, %CharSource* %3, i32 0, i32 0 + call void @ctor.187(%UntypedPtr* %2, %UntypedPtr* %4) + %5 = load %CharSource*, %CharSource** %this.addr + %6 = getelementptr inbounds %CharSource, %CharSource* %5, i32 0, i32 1 + %7 = load %CharSource*, %CharSource** %other.addr + %8 = getelementptr inbounds %CharSource, %CharSource* %7, i32 0, i32 1 + call void @ctor.188(%"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %6, %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %8) + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.187(%UntypedPtr* %this, %UntypedPtr* %other) #3 { + %this.addr = alloca %UntypedPtr* + store %UntypedPtr* %this, %UntypedPtr** %this.addr + %other.addr = alloca %UntypedPtr* + store %UntypedPtr* %other, %UntypedPtr** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %UntypedPtr*, %UntypedPtr** %other.addr + %2 = getelementptr inbounds %UntypedPtr, %UntypedPtr* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %UntypedPtr*, %UntypedPtr** %this.addr + %5 = getelementptr inbounds %UntypedPtr, %UntypedPtr* %4, i32 0, i32 0 + store i8* %3, i8** %5 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.175(%"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"* %other) #3 { - %this.addr = alloca %"RangeWithLookahead[_CharSource]"* - store %"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"** %this.addr - %other.addr = alloca %"RangeWithLookahead[_CharSource]"* - store %"RangeWithLookahead[_CharSource]"* %other, %"RangeWithLookahead[_CharSource]"** %other.addr +define internal void @ctor.188(%"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %this, %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* + store %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %this, %"FunctionPtr3[Void, UntypedPtr, @String, Int]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* + store %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %other, %"FunctionPtr3[Void, UntypedPtr, @String, Int]"** %other.addr br label %code code: ; preds = %0 - %1 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %2 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %1, i32 0, i32 0 - %3 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %other.addr - %4 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %3, i32 0, i32 0 - call void @ctor.134(%_CharSource* %2, %_CharSource* %4) - %5 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %6 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %5, i32 0, i32 1 - %7 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %other.addr - %8 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %7, i32 0, i32 1 - call void @ctor.176(%"Vector[Char]"* %6, %"Vector[Char]"* %8) + %1 = load %"FunctionPtr3[Void, UntypedPtr, @String, Int]"*, %"FunctionPtr3[Void, UntypedPtr, @String, Int]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr3[Void, UntypedPtr, @String, Int]", %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Void, UntypedPtr, @String, Int]"*, %"FunctionPtr3[Void, UntypedPtr, @String, Int]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr3[Void, UntypedPtr, @String, Int]", %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 ret void } ; Function Attrs: inlinehint nounwind -define internal void @ctor.176(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #4 { - %this.addr = alloca %"Vector[Char]"* - store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr - %other.addr = alloca %"Vector[Char]"* - store %"Vector[Char]"* %other, %"Vector[Char]"** %other.addr +define internal void @ctor.189(%String* %this, %String* %other) #4 { + %this.addr = alloca %String* + store %String* %this, %String** %this.addr + %other.addr = alloca %String* + store %String* %other, %String** %other.addr %size = alloca i64 - %"$tmpC" = alloca %"RawPtr[Char]" - %"$tmpC1" = alloca %"RawPtr[Char]" - %dst = alloca %"RawPtr[Char]" - %src = alloca %"RawPtr[Char]" br label %code code: ; preds = %0 - %1 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %2 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %1, i32 0, i32 0 - call void @ctor.155(%"RawPtr[Char]"* %2) - %3 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %4 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %3, i32 0, i32 1 - call void @ctor.155(%"RawPtr[Char]"* %4) - %5 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %6 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %5, i32 0, i32 2 - call void @ctor.155(%"RawPtr[Char]"* %6) - %7 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr - %8 = call i64 @size.177(%"Vector[Char]"* %7) - store i64 %8, i64* %size - %9 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %10 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %9, i32 0, i32 0 - %11 = load i64, i64* %size - call void @allocRawPtr(%"RawPtr[Char]"* %"$tmpC", i64 %11) - call void @"=.178"(%"RawPtr[Char]"* %10, %"RawPtr[Char]"* %"$tmpC") - %12 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %13 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %12, i32 0, i32 1 - %14 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %15 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %14, i32 0, i32 0 - %16 = load %"RawPtr[Char]", %"RawPtr[Char]"* %15 - %17 = load i64, i64* %size - call void @advance(%"RawPtr[Char]"* %"$tmpC1", %"RawPtr[Char]" %16, i64 %17) - call void @"=.178"(%"RawPtr[Char]"* %13, %"RawPtr[Char]"* %"$tmpC1") - %18 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %19 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %18, i32 0, i32 2 - %20 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %21 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %20, i32 0, i32 1 - call void @"=.178"(%"RawPtr[Char]"* %19, %"RawPtr[Char]"* %21) - %22 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %23 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %22, i32 0, i32 0 - call void @ctor.181(%"RawPtr[Char]"* %dst, %"RawPtr[Char]"* %23) - %24 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr - %25 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %24, i32 0, i32 0 - call void @ctor.181(%"RawPtr[Char]"* %src, %"RawPtr[Char]"* %25) - %26 = load %"RawPtr[Char]", %"RawPtr[Char]"* %dst - %27 = call i8* @bytePtr(%"RawPtr[Char]" %26) - %28 = load %"RawPtr[Char]", %"RawPtr[Char]"* %src - %29 = call i8* @bytePtr(%"RawPtr[Char]" %28) - %30 = load i64, i64* %size - %31 = mul i64 %30, 1 - call void @_spr_memcpy(i8* %27, i8* %29, i64 %31) + %1 = load %String*, %String** %other.addr + %2 = call i64 @size.190(%String* %1) + store i64 %2, i64* %size + %3 = load %String*, %String** %this.addr + %4 = load i64, i64* %size + call void @ctor.191(%String* %3, i64 %4) + %5 = load %String*, %String** %this.addr + %6 = getelementptr inbounds %String, %String* %5, i32 0, i32 0 + %7 = load %"RawPtr[Char]", %"RawPtr[Char]"* %6 + %8 = call i8* @bytePtr(%"RawPtr[Char]" %7) + %9 = load %String*, %String** %other.addr + %10 = getelementptr inbounds %String, %String* %9, i32 0, i32 0 + %11 = load %"RawPtr[Char]", %"RawPtr[Char]"* %10 + %12 = call i8* @bytePtr(%"RawPtr[Char]" %11) + %13 = load i64, i64* %size + call void @_spr_memcpy(i8* %8, i8* %12, i64 %13) ret void } ; Function Attrs: inlinehint nounwind -define internal i64 @size.177(%"Vector[Char]"* %this) #4 { - %this.addr = alloca %"Vector[Char]"* - store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr +define internal i64 @size.190(%String* %this) #4 { + %this.addr = alloca %String* + store %String* %this, %String** %this.addr %tmp.this = alloca i64 br label %code code: ; preds = %0 - %1 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %2 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %1, i32 0, i32 1 + %1 = load %String*, %String** %this.addr + %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 1 %3 = load %"RawPtr[Char]", %"RawPtr[Char]"* %2 - %4 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %5 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %4, i32 0, i32 0 + %4 = load %String*, %String** %this.addr + %5 = getelementptr inbounds %String, %String* %4, i32 0, i32 0 %6 = load %"RawPtr[Char]", %"RawPtr[Char]"* %5 %7 = call i64 @diff(%"RawPtr[Char]" %3, %"RawPtr[Char]" %6) store i64 %7, i64* %tmp.this @@ -6017,8 +6080,67 @@ code: ; preds = %0 ret i64 %8 } +; Function Attrs: inlinehint nounwind +define internal i8* @bytePtr(%"RawPtr[Char]" %this) #4 { + %this.addr = alloca %"RawPtr[Char]" + store %"RawPtr[Char]" %this, %"RawPtr[Char]"* %this.addr + br label %code + +code: ; preds = %0 + %1 = getelementptr inbounds %"RawPtr[Char]", %"RawPtr[Char]"* %this.addr, i32 0, i32 0 + %2 = load i8*, i8** %1 + ret i8* %2 +} + +; Function Attrs: inlinehint nounwind +define internal void @ctor.191(%String* %this, i64 %size) #4 { + %this.addr = alloca %String* + store %String* %this, %String** %this.addr + %size.addr = alloca i64 + store i64 %size, i64* %size.addr + %"$tmpC" = alloca %"RawPtr[Char]" + %tmp.this = alloca i64 + %"$tmpC1" = alloca %"RawPtr[Char]" + %tmp.this2 = alloca i64 + %tmp.this3 = alloca i8 + br label %code + +code: ; preds = %0 + %1 = load %String*, %String** %this.addr + %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 0 + %3 = load i64, i64* %size.addr + store i64 1, i64* %tmp.this + %4 = load i64, i64* %tmp.this + %5 = add i64 %3, %4 + call void @allocRawPtr(%"RawPtr[Char]"* %"$tmpC", i64 %5) + call void @ctor.192(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %"$tmpC") + %6 = load %String*, %String** %this.addr + %7 = getelementptr inbounds %String, %String* %6, i32 0, i32 1 + %8 = load %String*, %String** %this.addr + %9 = getelementptr inbounds %String, %String* %8, i32 0, i32 0 + %10 = load %"RawPtr[Char]", %"RawPtr[Char]"* %9 + %11 = load i64, i64* %size.addr + store i64 %11, i64* %tmp.this2 + %12 = load i64, i64* %tmp.this2 + call void @advance(%"RawPtr[Char]"* %"$tmpC1", %"RawPtr[Char]" %10, i64 %12) + call void @ctor.192(%"RawPtr[Char]"* %7, %"RawPtr[Char]"* %"$tmpC1") + %13 = load %String*, %String** %this.addr + %14 = getelementptr inbounds %String, %String* %13, i32 0, i32 2 + %15 = load %String*, %String** %this.addr + %16 = getelementptr inbounds %String, %String* %15, i32 0, i32 1 + call void @ctor.192(%"RawPtr[Char]"* %14, %"RawPtr[Char]"* %16) + store i8 0, i8* %tmp.this3 + %17 = load i8, i8* %tmp.this3 + %18 = load %String*, %String** %this.addr + %19 = getelementptr inbounds %String, %String* %18, i32 0, i32 1 + %20 = load %"RawPtr[Char]", %"RawPtr[Char]"* %19 + %21 = call i8* @value(%"RawPtr[Char]" %20) + store i8 %17, i8* %21 + ret void +} + ; Function Attrs: alwaysinline nounwind -define internal void @"=.178"(%"RawPtr[Char]"* %this, %"RawPtr[Char]"* %other) #3 { +define internal void @ctor.192(%"RawPtr[Char]"* %this, %"RawPtr[Char]"* %other) #3 { %this.addr = alloca %"RawPtr[Char]"* store %"RawPtr[Char]"* %this, %"RawPtr[Char]"** %this.addr %other.addr = alloca %"RawPtr[Char]"* @@ -6048,12 +6170,12 @@ code: ; preds = %0 %2 = load i64, i64* %num.addr %3 = mul i64 %2, 1 %4 = call i8* @malloc(i64 %3) - call void @ctor.179(%"RawPtr[Char]"* %1, i8* %4) + call void @ctor.193(%"RawPtr[Char]"* %1, i8* %4) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.179(%"RawPtr[Char]"* %this, i8* %f_ptr) #3 { +define internal void @ctor.193(%"RawPtr[Char]"* %this, i8* %f_ptr) #3 { %this.addr = alloca %"RawPtr[Char]"* store %"RawPtr[Char]"* %this, %"RawPtr[Char]"** %this.addr %f_ptr.addr = alloca i8* @@ -6076,6 +6198,8 @@ define internal void @advance(%"RawPtr[Char]"* sret %_result, %"RawPtr[Char]" %t store %"RawPtr[Char]" %this, %"RawPtr[Char]"* %this.addr %n.addr = alloca i64 store i64 %n, i64* %n.addr + %tmp.this = alloca i64 + %tmp.this1 = alloca i64 br label %code code: ; preds = %0 @@ -6083,14 +6207,18 @@ code: ; preds = %0 %2 = load %"RawPtr[Char]", %"RawPtr[Char]"* %this.addr %3 = call i8* @bytePtr(%"RawPtr[Char]" %2) %4 = load i64, i64* %n.addr - %5 = mul i64 %4, 1 - %6 = call i8* @ptrAdd(i8* %3, i64 %5) - call void @ctor.180(%"RawPtr[Char]"* %1, i8* %6) + store i64 1, i64* %tmp.this1 + %5 = load i64, i64* %tmp.this1 + %6 = mul i64 %4, %5 + store i64 %6, i64* %tmp.this + %7 = load i64, i64* %tmp.this + %8 = call i8* @ptrAdd(i8* %3, i64 %7) + call void @ctor.194(%"RawPtr[Char]"* %1, i8* %8) ret void } ; Function Attrs: inlinehint nounwind -define internal void @ctor.180(%"RawPtr[Char]"* %this, i8* %byteRef) #4 { +define internal void @ctor.194(%"RawPtr[Char]"* %this, i8* %byteRef) #4 { %this.addr = alloca %"RawPtr[Char]"* store %"RawPtr[Char]"* %this, %"RawPtr[Char]"** %this.addr %byteRef.addr = alloca i8* @@ -6108,123 +6236,154 @@ code: ; preds = %0 ret void } +; Function Attrs: inlinehint nounwind +define internal i8* @value(%"RawPtr[Char]" %this) #4 { + %this.addr = alloca %"RawPtr[Char]" + store %"RawPtr[Char]" %this, %"RawPtr[Char]"* %this.addr + br label %code + +code: ; preds = %0 + %1 = getelementptr inbounds %"RawPtr[Char]", %"RawPtr[Char]"* %this.addr, i32 0, i32 0 + %2 = load i8*, i8** %1 + ret i8* %2 +} + ; Function Attrs: alwaysinline nounwind -define internal void @ctor.181(%"RawPtr[Char]"* %this, %"RawPtr[Char]"* %other) #3 { - %this.addr = alloca %"RawPtr[Char]"* - store %"RawPtr[Char]"* %this, %"RawPtr[Char]"** %this.addr - %other.addr = alloca %"RawPtr[Char]"* - store %"RawPtr[Char]"* %other, %"RawPtr[Char]"** %other.addr +define internal void @ctor.195(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %other) #3 { + %this.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* + store %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %this.addr + %other.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* + store %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %other, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %other.addr br label %code code: ; preds = %0 - %1 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %other.addr - %2 = getelementptr inbounds %"RawPtr[Char]", %"RawPtr[Char]"* %1, i32 0, i32 0 - %3 = load i8*, i8** %2 - %4 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %this.addr - %5 = getelementptr inbounds %"RawPtr[Char]", %"RawPtr[Char]"* %4, i32 0, i32 0 - store i8* %3, i8** %5 + %1 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %this.addr + %2 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]", %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %1, i32 0, i32 0 + %3 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %other.addr + %4 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]", %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %3, i32 0, i32 0 + call void @ctor.196(%"RangeWithLookahead[BufferedCharSourceRange]"* %2, %"RangeWithLookahead[BufferedCharSourceRange]"* %4) + %5 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %other.addr + %6 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]", %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %5, i32 0, i32 1 + %7 = load %Location*, %Location** %6 + %8 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %this.addr + %9 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]", %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %8, i32 0, i32 1 + store %Location* %7, %Location** %9 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.182(%Token* %this, %Token* %other) #3 { - %this.addr = alloca %Token* - store %Token* %this, %Token** %this.addr - %other.addr = alloca %Token* - store %Token* %other, %Token** %other.addr +define internal void @ctor.196(%"RangeWithLookahead[BufferedCharSourceRange]"* %this, %"RangeWithLookahead[BufferedCharSourceRange]"* %other) #3 { + %this.addr = alloca %"RangeWithLookahead[BufferedCharSourceRange]"* + store %"RangeWithLookahead[BufferedCharSourceRange]"* %this, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %other.addr = alloca %"RangeWithLookahead[BufferedCharSourceRange]"* + store %"RangeWithLookahead[BufferedCharSourceRange]"* %other, %"RangeWithLookahead[BufferedCharSourceRange]"** %other.addr br label %code code: ; preds = %0 - %1 = load %Token*, %Token** %this.addr - %2 = getelementptr inbounds %Token, %Token* %1, i32 0, i32 0 - %3 = load %Token*, %Token** %other.addr - %4 = getelementptr inbounds %Token, %Token* %3, i32 0, i32 0 - call void @ctor.171(%Location* %2, %Location* %4) - %5 = load %Token*, %Token** %this.addr - %6 = getelementptr inbounds %Token, %Token* %5, i32 0, i32 1 - %7 = load %Token*, %Token** %other.addr - %8 = getelementptr inbounds %Token, %Token* %7, i32 0, i32 1 - call void @ctor.183(%TokenType* %6, %TokenType* %8) - %9 = load %Token*, %Token** %this.addr - %10 = getelementptr inbounds %Token, %Token* %9, i32 0, i32 2 - %11 = load %Token*, %Token** %other.addr - %12 = getelementptr inbounds %Token, %Token* %11, i32 0, i32 2 - call void @ctor.184(%String* %10, %String* %12) - %13 = load %Token*, %Token** %other.addr - %14 = getelementptr inbounds %Token, %Token* %13, i32 0, i32 3 - %15 = load i64, i64* %14 - %16 = load %Token*, %Token** %this.addr - %17 = getelementptr inbounds %Token, %Token* %16, i32 0, i32 3 - store i64 %15, i64* %17 - %18 = load %Token*, %Token** %other.addr - %19 = getelementptr inbounds %Token, %Token* %18, i32 0, i32 4 - %20 = load double, double* %19 - %21 = load %Token*, %Token** %this.addr - %22 = getelementptr inbounds %Token, %Token* %21, i32 0, i32 4 - store double %20, double* %22 + %1 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %2 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %1, i32 0, i32 0 + %3 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %other.addr + %4 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %3, i32 0, i32 0 + call void @ctor.197(%BufferedCharSourceRange* %2, %BufferedCharSourceRange* %4) + %5 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %6 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %5, i32 0, i32 1 + %7 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %other.addr + %8 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %7, i32 0, i32 1 + call void @ctor.198(%"Vector[Char]"* %6, %"Vector[Char]"* %8) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.183(%TokenType* %this, %TokenType* %other) #3 { - %this.addr = alloca %TokenType* - store %TokenType* %this, %TokenType** %this.addr - %other.addr = alloca %TokenType* - store %TokenType* %other, %TokenType** %other.addr +define internal void @ctor.197(%BufferedCharSourceRange* %this, %BufferedCharSourceRange* %other) #3 { + %this.addr = alloca %BufferedCharSourceRange* + store %BufferedCharSourceRange* %this, %BufferedCharSourceRange** %this.addr + %other.addr = alloca %BufferedCharSourceRange* + store %BufferedCharSourceRange* %other, %BufferedCharSourceRange** %other.addr br label %code code: ; preds = %0 - %1 = load %TokenType*, %TokenType** %other.addr - %2 = getelementptr inbounds %TokenType, %TokenType* %1, i32 0, i32 0 - %3 = load i32, i32* %2 - %4 = load %TokenType*, %TokenType** %this.addr - %5 = getelementptr inbounds %TokenType, %TokenType* %4, i32 0, i32 0 - store i32 %3, i32* %5 + %1 = load %BufferedCharSourceRange*, %BufferedCharSourceRange** %other.addr + %2 = getelementptr inbounds %BufferedCharSourceRange, %BufferedCharSourceRange* %1, i32 0, i32 0 + %3 = load %BufferedCharSource*, %BufferedCharSource** %2 + %4 = load %BufferedCharSourceRange*, %BufferedCharSourceRange** %this.addr + %5 = getelementptr inbounds %BufferedCharSourceRange, %BufferedCharSourceRange* %4, i32 0, i32 0 + store %BufferedCharSource* %3, %BufferedCharSource** %5 ret void } ; Function Attrs: inlinehint nounwind -define internal void @ctor.184(%String* %this, %String* %other) #4 { - %this.addr = alloca %String* - store %String* %this, %String** %this.addr - %other.addr = alloca %String* - store %String* %other, %String** %other.addr +define internal void @ctor.198(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #4 { + %this.addr = alloca %"Vector[Char]"* + store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr + %other.addr = alloca %"Vector[Char]"* + store %"Vector[Char]"* %other, %"Vector[Char]"** %other.addr %size = alloca i64 + %"$tmpC" = alloca %"RawPtr[Char]" + %"$tmpC1" = alloca %"RawPtr[Char]" + %dst = alloca %"RawPtr[Char]" + %src = alloca %"RawPtr[Char]" br label %code code: ; preds = %0 - %1 = load %String*, %String** %other.addr - %2 = call i64 @size.185(%String* %1) - store i64 %2, i64* %size - %3 = load %String*, %String** %this.addr - %4 = load i64, i64* %size - call void @ctor.186(%String* %3, i64 %4) - %5 = load %String*, %String** %this.addr - %6 = getelementptr inbounds %String, %String* %5, i32 0, i32 0 - %7 = load %"RawPtr[Char]", %"RawPtr[Char]"* %6 - %8 = call i8* @bytePtr(%"RawPtr[Char]" %7) - %9 = load %String*, %String** %other.addr - %10 = getelementptr inbounds %String, %String* %9, i32 0, i32 0 - %11 = load %"RawPtr[Char]", %"RawPtr[Char]"* %10 - %12 = call i8* @bytePtr(%"RawPtr[Char]" %11) - %13 = load i64, i64* %size - call void @_spr_memcpy(i8* %8, i8* %12, i64 %13) + %1 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr + %2 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %1, i32 0, i32 0 + call void @ctor.138(%"RawPtr[Char]"* %2) + %3 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr + %4 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %3, i32 0, i32 1 + call void @ctor.138(%"RawPtr[Char]"* %4) + %5 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr + %6 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %5, i32 0, i32 2 + call void @ctor.138(%"RawPtr[Char]"* %6) + %7 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr + %8 = call i64 @size.199(%"Vector[Char]"* %7) + store i64 %8, i64* %size + %9 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr + %10 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %9, i32 0, i32 0 + %11 = load i64, i64* %size + call void @allocRawPtr(%"RawPtr[Char]"* %"$tmpC", i64 %11) + call void @"=.200"(%"RawPtr[Char]"* %10, %"RawPtr[Char]"* %"$tmpC") + %12 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr + %13 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %12, i32 0, i32 1 + %14 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr + %15 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %14, i32 0, i32 0 + %16 = load %"RawPtr[Char]", %"RawPtr[Char]"* %15 + %17 = load i64, i64* %size + call void @advance.201(%"RawPtr[Char]"* %"$tmpC1", %"RawPtr[Char]" %16, i64 %17) + call void @"=.200"(%"RawPtr[Char]"* %13, %"RawPtr[Char]"* %"$tmpC1") + %18 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr + %19 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %18, i32 0, i32 2 + %20 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr + %21 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %20, i32 0, i32 1 + call void @"=.200"(%"RawPtr[Char]"* %19, %"RawPtr[Char]"* %21) + %22 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr + %23 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %22, i32 0, i32 0 + call void @ctor.192(%"RawPtr[Char]"* %dst, %"RawPtr[Char]"* %23) + %24 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr + %25 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %24, i32 0, i32 0 + call void @ctor.192(%"RawPtr[Char]"* %src, %"RawPtr[Char]"* %25) + %26 = load %"RawPtr[Char]", %"RawPtr[Char]"* %dst + %27 = call i8* @bytePtr(%"RawPtr[Char]" %26) + %28 = load %"RawPtr[Char]", %"RawPtr[Char]"* %src + %29 = call i8* @bytePtr(%"RawPtr[Char]" %28) + %30 = load i64, i64* %size + %31 = mul i64 %30, 1 + call void @_spr_memcpy(i8* %27, i8* %29, i64 %31) ret void } ; Function Attrs: inlinehint nounwind -define internal i64 @size.185(%String* %this) #4 { - %this.addr = alloca %String* - store %String* %this, %String** %this.addr +define internal i64 @size.199(%"Vector[Char]"* %this) #4 { + %this.addr = alloca %"Vector[Char]"* + store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr %tmp.this = alloca i64 br label %code code: ; preds = %0 - %1 = load %String*, %String** %this.addr - %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 1 + %1 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr + %2 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %1, i32 0, i32 1 %3 = load %"RawPtr[Char]", %"RawPtr[Char]"* %2 - %4 = load %String*, %String** %this.addr - %5 = getelementptr inbounds %String, %String* %4, i32 0, i32 0 + %4 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr + %5 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %4, i32 0, i32 0 %6 = load %"RawPtr[Char]", %"RawPtr[Char]"* %5 %7 = call i64 @diff(%"RawPtr[Char]" %3, %"RawPtr[Char]" %6) store i64 %7, i64* %tmp.this @@ -6232,63 +6391,32 @@ code: ; preds = %0 ret i64 %8 } -; Function Attrs: inlinehint nounwind -define internal void @ctor.186(%String* %this, i64 %size) #4 { - %this.addr = alloca %String* - store %String* %this, %String** %this.addr - %size.addr = alloca i64 - store i64 %size, i64* %size.addr - %"$tmpC" = alloca %"RawPtr[Char]" - %tmp.this = alloca i64 - %"$tmpC1" = alloca %"RawPtr[Char]" - %tmp.this2 = alloca i64 - %tmp.this3 = alloca i8 +; Function Attrs: alwaysinline nounwind +define internal void @"=.200"(%"RawPtr[Char]"* %this, %"RawPtr[Char]"* %other) #3 { + %this.addr = alloca %"RawPtr[Char]"* + store %"RawPtr[Char]"* %this, %"RawPtr[Char]"** %this.addr + %other.addr = alloca %"RawPtr[Char]"* + store %"RawPtr[Char]"* %other, %"RawPtr[Char]"** %other.addr br label %code code: ; preds = %0 - %1 = load %String*, %String** %this.addr - %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 0 - %3 = load i64, i64* %size.addr - store i64 1, i64* %tmp.this - %4 = load i64, i64* %tmp.this - %5 = add i64 %3, %4 - call void @allocRawPtr(%"RawPtr[Char]"* %"$tmpC", i64 %5) - call void @ctor.181(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %"$tmpC") - %6 = load %String*, %String** %this.addr - %7 = getelementptr inbounds %String, %String* %6, i32 0, i32 1 - %8 = load %String*, %String** %this.addr - %9 = getelementptr inbounds %String, %String* %8, i32 0, i32 0 - %10 = load %"RawPtr[Char]", %"RawPtr[Char]"* %9 - %11 = load i64, i64* %size.addr - store i64 %11, i64* %tmp.this2 - %12 = load i64, i64* %tmp.this2 - call void @advance.187(%"RawPtr[Char]"* %"$tmpC1", %"RawPtr[Char]" %10, i64 %12) - call void @ctor.181(%"RawPtr[Char]"* %7, %"RawPtr[Char]"* %"$tmpC1") - %13 = load %String*, %String** %this.addr - %14 = getelementptr inbounds %String, %String* %13, i32 0, i32 2 - %15 = load %String*, %String** %this.addr - %16 = getelementptr inbounds %String, %String* %15, i32 0, i32 1 - call void @ctor.181(%"RawPtr[Char]"* %14, %"RawPtr[Char]"* %16) - store i8 0, i8* %tmp.this3 - %17 = load i8, i8* %tmp.this3 - %18 = load %String*, %String** %this.addr - %19 = getelementptr inbounds %String, %String* %18, i32 0, i32 1 - %20 = load %"RawPtr[Char]", %"RawPtr[Char]"* %19 - %21 = call i8* @value(%"RawPtr[Char]" %20) - store i8 %17, i8* %21 + %1 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %other.addr + %2 = getelementptr inbounds %"RawPtr[Char]", %"RawPtr[Char]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %this.addr + %5 = getelementptr inbounds %"RawPtr[Char]", %"RawPtr[Char]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 ret void } ; Function Attrs: inlinehint nounwind -define internal void @advance.187(%"RawPtr[Char]"* sret %_result, %"RawPtr[Char]" %this, i64 %n) #4 { +define internal void @advance.201(%"RawPtr[Char]"* sret %_result, %"RawPtr[Char]" %this, i64 %n) #4 { %_result.addr = alloca %"RawPtr[Char]"* store %"RawPtr[Char]"* %_result, %"RawPtr[Char]"** %_result.addr %this.addr = alloca %"RawPtr[Char]" store %"RawPtr[Char]" %this, %"RawPtr[Char]"* %this.addr %n.addr = alloca i64 store i64 %n, i64* %n.addr - %tmp.this = alloca i64 - %tmp.this1 = alloca i64 br label %code code: ; preds = %0 @@ -6296,90 +6424,176 @@ code: ; preds = %0 %2 = load %"RawPtr[Char]", %"RawPtr[Char]"* %this.addr %3 = call i8* @bytePtr(%"RawPtr[Char]" %2) %4 = load i64, i64* %n.addr - store i64 1, i64* %tmp.this1 - %5 = load i64, i64* %tmp.this1 - %6 = mul i64 %4, %5 - store i64 %6, i64* %tmp.this - %7 = load i64, i64* %tmp.this - %8 = call i8* @ptrAdd(i8* %3, i64 %7) - call void @ctor.180(%"RawPtr[Char]"* %1, i8* %8) + %5 = mul i64 %4, 1 + %6 = call i8* @ptrAdd(i8* %3, i64 %5) + call void @ctor.194(%"RawPtr[Char]"* %1, i8* %6) ret void } -; Function Attrs: inlinehint nounwind -define internal i8* @value(%"RawPtr[Char]" %this) #4 { - %this.addr = alloca %"RawPtr[Char]" - store %"RawPtr[Char]" %this, %"RawPtr[Char]"* %this.addr +; Function Attrs: alwaysinline nounwind +define internal void @ctor.202(%Token* %this, %Token* %other) #3 { + %this.addr = alloca %Token* + store %Token* %this, %Token** %this.addr + %other.addr = alloca %Token* + store %Token* %other, %Token** %other.addr br label %code code: ; preds = %0 - %1 = getelementptr inbounds %"RawPtr[Char]", %"RawPtr[Char]"* %this.addr, i32 0, i32 0 - %2 = load i8*, i8** %1 - ret i8* %2 + %1 = load %Token*, %Token** %this.addr + %2 = getelementptr inbounds %Token, %Token* %1, i32 0, i32 0 + %3 = load %Token*, %Token** %other.addr + %4 = getelementptr inbounds %Token, %Token* %3, i32 0, i32 0 + call void @ctor.182(%Location* %2, %Location* %4) + %5 = load %Token*, %Token** %this.addr + %6 = getelementptr inbounds %Token, %Token* %5, i32 0, i32 1 + %7 = load %Token*, %Token** %other.addr + %8 = getelementptr inbounds %Token, %Token* %7, i32 0, i32 1 + call void @ctor.203(%TokenType* %6, %TokenType* %8) + %9 = load %Token*, %Token** %this.addr + %10 = getelementptr inbounds %Token, %Token* %9, i32 0, i32 2 + %11 = load %Token*, %Token** %other.addr + %12 = getelementptr inbounds %Token, %Token* %11, i32 0, i32 2 + call void @ctor.189(%String* %10, %String* %12) + %13 = load %Token*, %Token** %other.addr + %14 = getelementptr inbounds %Token, %Token* %13, i32 0, i32 3 + %15 = load i64, i64* %14 + %16 = load %Token*, %Token** %this.addr + %17 = getelementptr inbounds %Token, %Token* %16, i32 0, i32 3 + store i64 %15, i64* %17 + %18 = load %Token*, %Token** %other.addr + %19 = getelementptr inbounds %Token, %Token* %18, i32 0, i32 4 + %20 = load double, double* %19 + %21 = load %Token*, %Token** %this.addr + %22 = getelementptr inbounds %Token, %Token* %21, i32 0, i32 4 + store double %20, double* %22 + ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.188(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %other) #3 { - %this.addr = alloca %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %other.addr = alloca %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %other, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr - br label %code - -code: ; preds = %0 - %1 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 0 - %3 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr - %4 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %3, i32 0, i32 0 - call void @ctor.189(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %2, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %4) - %5 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %6 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 2 - %7 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr - %8 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %7, i32 0, i32 2 - call void @ctor.203(%"Vector[UInt]"* %6, %"Vector[UInt]"* %8) - %9 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %10 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %9, i32 0, i32 3 - %11 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr - %12 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %11, i32 0, i32 3 - call void @ctor.176(%"Vector[Char]"* %10, %"Vector[Char]"* %12) - %13 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %14 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %13, i32 0, i32 4 - %15 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr - %16 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %15, i32 0, i32 4 - call void @ctor.183(%TokenType* %14, %TokenType* %16) - %17 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr - %18 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %17, i32 0, i32 5 - %19 = load i32, i32* %18 - %20 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %21 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %20, i32 0, i32 5 - store i32 %19, i32* %21 +define internal void @ctor.203(%TokenType* %this, %TokenType* %other) #3 { + %this.addr = alloca %TokenType* + store %TokenType* %this, %TokenType** %this.addr + %other.addr = alloca %TokenType* + store %TokenType* %other, %TokenType** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %TokenType*, %TokenType** %other.addr + %2 = getelementptr inbounds %TokenType, %TokenType* %1, i32 0, i32 0 + %3 = load i32, i32* %2 + %4 = load %TokenType*, %TokenType** %this.addr + %5 = getelementptr inbounds %TokenType, %TokenType* %4, i32 0, i32 0 + store i32 %3, i32* %5 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.204(%ErrorReporter* %this, %ErrorReporter* %other) #3 { + %this.addr = alloca %ErrorReporter* + store %ErrorReporter* %this, %ErrorReporter** %this.addr + %other.addr = alloca %ErrorReporter* + store %ErrorReporter* %other, %ErrorReporter** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %ErrorReporter*, %ErrorReporter** %this.addr + %2 = getelementptr inbounds %ErrorReporter, %ErrorReporter* %1, i32 0, i32 0 + %3 = load %ErrorReporter*, %ErrorReporter** %other.addr + %4 = getelementptr inbounds %ErrorReporter, %ErrorReporter* %3, i32 0, i32 0 + call void @ctor.187(%UntypedPtr* %2, %UntypedPtr* %4) + %5 = load %ErrorReporter*, %ErrorReporter** %this.addr + %6 = getelementptr inbounds %ErrorReporter, %ErrorReporter* %5, i32 0, i32 1 + %7 = load %ErrorReporter*, %ErrorReporter** %other.addr + %8 = getelementptr inbounds %ErrorReporter, %ErrorReporter* %7, i32 0, i32 1 + call void @ctor.205(%"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* %6, %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* %8) + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.205(%"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* %this, %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* + store %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* %this, %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* + store %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* %other, %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"*, %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]", %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"*, %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]", %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.206(%"SparrowLayoutDecoder[SparrowScanner]"* %this, %"SparrowLayoutDecoder[SparrowScanner]"* %other) #3 { + %this.addr = alloca %"SparrowLayoutDecoder[SparrowScanner]"* + store %"SparrowLayoutDecoder[SparrowScanner]"* %this, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %other.addr = alloca %"SparrowLayoutDecoder[SparrowScanner]"* + store %"SparrowLayoutDecoder[SparrowScanner]"* %other, %"SparrowLayoutDecoder[SparrowScanner]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %2 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %1, i32 0, i32 0 + %3 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %other.addr + %4 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %3, i32 0, i32 0 + call void @ctor.207(%"RangeWithLookahead[SparrowScanner]"* %2, %"RangeWithLookahead[SparrowScanner]"* %4) + %5 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %6 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %5, i32 0, i32 1 + %7 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %other.addr + %8 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %7, i32 0, i32 1 + call void @ctor.204(%ErrorReporter* %6, %ErrorReporter* %8) + %9 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %10 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %9, i32 0, i32 2 + %11 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %other.addr + %12 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %11, i32 0, i32 2 + call void @ctor.221(%"Vector[UInt]"* %10, %"Vector[UInt]"* %12) + %13 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %14 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %13, i32 0, i32 3 + %15 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %other.addr + %16 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %15, i32 0, i32 3 + call void @ctor.198(%"Vector[Char]"* %14, %"Vector[Char]"* %16) + %17 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %18 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %17, i32 0, i32 4 + %19 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %other.addr + %20 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %19, i32 0, i32 4 + call void @ctor.203(%TokenType* %18, %TokenType* %20) + %21 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %other.addr + %22 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %21, i32 0, i32 5 + %23 = load i32, i32* %22 + %24 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %25 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %24, i32 0, i32 5 + store i32 %23, i32* %25 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.189(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %other) #3 { - %this.addr = alloca %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* - store %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr - %other.addr = alloca %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* - store %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %other, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %other.addr +define internal void @ctor.207(%"RangeWithLookahead[SparrowScanner]"* %this, %"RangeWithLookahead[SparrowScanner]"* %other) #3 { + %this.addr = alloca %"RangeWithLookahead[SparrowScanner]"* + store %"RangeWithLookahead[SparrowScanner]"* %this, %"RangeWithLookahead[SparrowScanner]"** %this.addr + %other.addr = alloca %"RangeWithLookahead[SparrowScanner]"* + store %"RangeWithLookahead[SparrowScanner]"* %other, %"RangeWithLookahead[SparrowScanner]"** %other.addr br label %code code: ; preds = %0 - %1 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr - %2 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %1, i32 0, i32 0 - %3 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %other.addr - %4 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %3, i32 0, i32 0 - call void @ctor.170(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %2, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %4) - %5 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr - %6 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %5, i32 0, i32 1 - %7 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %other.addr - %8 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %7, i32 0, i32 1 - call void @ctor.190(%"Vector[Token]"* %6, %"Vector[Token]"* %8) + %1 = load %"RangeWithLookahead[SparrowScanner]"*, %"RangeWithLookahead[SparrowScanner]"** %this.addr + %2 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner]", %"RangeWithLookahead[SparrowScanner]"* %1, i32 0, i32 0 + %3 = load %"RangeWithLookahead[SparrowScanner]"*, %"RangeWithLookahead[SparrowScanner]"** %other.addr + %4 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner]", %"RangeWithLookahead[SparrowScanner]"* %3, i32 0, i32 0 + call void @ctor.181(%SparrowScanner* %2, %SparrowScanner* %4) + %5 = load %"RangeWithLookahead[SparrowScanner]"*, %"RangeWithLookahead[SparrowScanner]"** %this.addr + %6 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner]", %"RangeWithLookahead[SparrowScanner]"* %5, i32 0, i32 1 + %7 = load %"RangeWithLookahead[SparrowScanner]"*, %"RangeWithLookahead[SparrowScanner]"** %other.addr + %8 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner]", %"RangeWithLookahead[SparrowScanner]"* %7, i32 0, i32 1 + call void @ctor.208(%"Vector[Token]"* %6, %"Vector[Token]"* %8) ret void } ; Function Attrs: inlinehint nounwind -define internal void @ctor.190(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #4 { +define internal void @ctor.208(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #4 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr %other.addr = alloca %"Vector[Token]"* @@ -6396,61 +6610,61 @@ define internal void @ctor.190(%"Vector[Token]"* %this, %"Vector[Token]"* %other code: ; preds = %0 %1 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %2 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %1, i32 0, i32 0 - call void @ctor.162(%"RawPtr[Token]"* %2) + call void @ctor.150(%"RawPtr[Token]"* %2) %3 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %4 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %3, i32 0, i32 1 - call void @ctor.162(%"RawPtr[Token]"* %4) + call void @ctor.150(%"RawPtr[Token]"* %4) %5 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %6 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %5, i32 0, i32 2 - call void @ctor.162(%"RawPtr[Token]"* %6) + call void @ctor.150(%"RawPtr[Token]"* %6) %7 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr - %8 = call i64 @size.191(%"Vector[Token]"* %7) + %8 = call i64 @size.209(%"Vector[Token]"* %7) store i64 %8, i64* %size %9 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %10 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %9, i32 0, i32 0 %11 = load i64, i64* %size - call void @allocRawPtr.195(%"RawPtr[Token]"* %"$tmpC", i64 %11) - call void @"=.194"(%"RawPtr[Token]"* %10, %"RawPtr[Token]"* %"$tmpC") + call void @allocRawPtr.213(%"RawPtr[Token]"* %"$tmpC", i64 %11) + call void @"=.212"(%"RawPtr[Token]"* %10, %"RawPtr[Token]"* %"$tmpC") %12 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %13 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %12, i32 0, i32 1 %14 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %15 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %14, i32 0, i32 0 %16 = load %"RawPtr[Token]", %"RawPtr[Token]"* %15 %17 = load i64, i64* %size - call void @advance.197(%"RawPtr[Token]"* %"$tmpC1", %"RawPtr[Token]" %16, i64 %17) - call void @"=.194"(%"RawPtr[Token]"* %13, %"RawPtr[Token]"* %"$tmpC1") + call void @advance.215(%"RawPtr[Token]"* %"$tmpC1", %"RawPtr[Token]" %16, i64 %17) + call void @"=.212"(%"RawPtr[Token]"* %13, %"RawPtr[Token]"* %"$tmpC1") %18 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %19 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %18, i32 0, i32 2 %20 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %21 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %20, i32 0, i32 1 - call void @"=.194"(%"RawPtr[Token]"* %19, %"RawPtr[Token]"* %21) + call void @"=.212"(%"RawPtr[Token]"* %19, %"RawPtr[Token]"* %21) %22 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %23 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %22, i32 0, i32 0 - call void @ctor.199(%"RawPtr[Token]"* %dst, %"RawPtr[Token]"* %23) + call void @ctor.217(%"RawPtr[Token]"* %dst, %"RawPtr[Token]"* %23) %24 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr %25 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %24, i32 0, i32 0 - call void @ctor.199(%"RawPtr[Token]"* %src, %"RawPtr[Token]"* %25) + call void @ctor.217(%"RawPtr[Token]"* %src, %"RawPtr[Token]"* %25) br label %while_block while_block: ; preds = %while_step, %code %26 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %27 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %26, i32 0, i32 1 - %28 = call i1 @"==.200"(%"RawPtr[Token]"* %dst, %"RawPtr[Token]"* %27) + %28 = call i1 @"==.218"(%"RawPtr[Token]"* %dst, %"RawPtr[Token]"* %27) %29 = xor i1 true, %28 br i1 %29, label %while_body, label %while_end while_body: ; preds = %while_block %30 = load %"RawPtr[Token]", %"RawPtr[Token]"* %dst - %31 = call %Token* @value.201(%"RawPtr[Token]" %30) + %31 = call %Token* @value.219(%"RawPtr[Token]" %30) %32 = load %"RawPtr[Token]", %"RawPtr[Token]"* %src - %33 = call %Token* @value.201(%"RawPtr[Token]" %32) - call void @ctor.182(%Token* %31, %Token* %33) + %33 = call %Token* @value.219(%"RawPtr[Token]" %32) + call void @ctor.202(%Token* %31, %Token* %33) %34 = load %"RawPtr[Token]", %"RawPtr[Token]"* %dst - call void @advance.202(%"RawPtr[Token]"* %"$tmpC2", %"RawPtr[Token]" %34) - call void @"=.194"(%"RawPtr[Token]"* %dst, %"RawPtr[Token]"* %"$tmpC2") + call void @advance.220(%"RawPtr[Token]"* %"$tmpC2", %"RawPtr[Token]" %34) + call void @"=.212"(%"RawPtr[Token]"* %dst, %"RawPtr[Token]"* %"$tmpC2") %35 = load %"RawPtr[Token]", %"RawPtr[Token]"* %src - call void @advance.202(%"RawPtr[Token]"* %"$tmpC3", %"RawPtr[Token]" %35) - call void @"=.194"(%"RawPtr[Token]"* %src, %"RawPtr[Token]"* %"$tmpC3") + call void @advance.220(%"RawPtr[Token]"* %"$tmpC3", %"RawPtr[Token]" %35) + call void @"=.212"(%"RawPtr[Token]"* %src, %"RawPtr[Token]"* %"$tmpC3") br label %while_step while_step: ; preds = %while_body @@ -6461,7 +6675,7 @@ while_end: ; preds = %while_block } ; Function Attrs: inlinehint nounwind -define internal i64 @size.191(%"Vector[Token]"* %this) #4 { +define internal i64 @size.209(%"Vector[Token]"* %this) #4 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr %tmp.this = alloca i64 @@ -6474,14 +6688,14 @@ code: ; preds = %0 %4 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %5 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %4, i32 0, i32 0 %6 = load %"RawPtr[Token]", %"RawPtr[Token]"* %5 - %7 = call i64 @diff.192(%"RawPtr[Token]" %3, %"RawPtr[Token]" %6) + %7 = call i64 @diff.210(%"RawPtr[Token]" %3, %"RawPtr[Token]" %6) store i64 %7, i64* %tmp.this %8 = load i64, i64* %tmp.this ret i64 %8 } ; Function Attrs: inlinehint nounwind -define internal i64 @diff.192(%"RawPtr[Token]" %this, %"RawPtr[Token]" %other) #4 { +define internal i64 @diff.210(%"RawPtr[Token]" %this, %"RawPtr[Token]" %other) #4 { %this.addr = alloca %"RawPtr[Token]" store %"RawPtr[Token]" %this, %"RawPtr[Token]"* %this.addr %other.addr = alloca %"RawPtr[Token]" @@ -6492,9 +6706,9 @@ define internal i64 @diff.192(%"RawPtr[Token]" %this, %"RawPtr[Token]" %other) # code: ; preds = %0 %1 = load %"RawPtr[Token]", %"RawPtr[Token]"* %this.addr - %2 = call i8* @bytePtr.193(%"RawPtr[Token]" %1) + %2 = call i8* @bytePtr.211(%"RawPtr[Token]" %1) %3 = load %"RawPtr[Token]", %"RawPtr[Token]"* %other.addr - %4 = call i8* @bytePtr.193(%"RawPtr[Token]" %3) + %4 = call i8* @bytePtr.211(%"RawPtr[Token]" %3) %5 = call i64 @ptrDiff(i8* %2, i8* %4) store i64 72, i64* %tmp.this1 %6 = load i64, i64* %tmp.this1 @@ -6505,7 +6719,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i8* @bytePtr.193(%"RawPtr[Token]" %this) #4 { +define internal i8* @bytePtr.211(%"RawPtr[Token]" %this) #4 { %this.addr = alloca %"RawPtr[Token]" store %"RawPtr[Token]" %this, %"RawPtr[Token]"* %this.addr br label %code @@ -6518,7 +6732,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.194"(%"RawPtr[Token]"* %this, %"RawPtr[Token]"* %other) #3 { +define internal void @"=.212"(%"RawPtr[Token]"* %this, %"RawPtr[Token]"* %other) #3 { %this.addr = alloca %"RawPtr[Token]"* store %"RawPtr[Token]"* %this, %"RawPtr[Token]"** %this.addr %other.addr = alloca %"RawPtr[Token]"* @@ -6536,7 +6750,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @allocRawPtr.195(%"RawPtr[Token]"* sret %_result, i64 %num) #4 { +define internal void @allocRawPtr.213(%"RawPtr[Token]"* sret %_result, i64 %num) #4 { %_result.addr = alloca %"RawPtr[Token]"* store %"RawPtr[Token]"* %_result, %"RawPtr[Token]"** %_result.addr %num.addr = alloca i64 @@ -6549,12 +6763,12 @@ code: ; preds = %0 %3 = mul i64 %2, 72 %4 = call i8* @malloc(i64 %3) %5 = bitcast i8* %4 to %Token* - call void @ctor.196(%"RawPtr[Token]"* %1, %Token* %5) + call void @ctor.214(%"RawPtr[Token]"* %1, %Token* %5) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.196(%"RawPtr[Token]"* %this, %Token* %f_ptr) #3 { +define internal void @ctor.214(%"RawPtr[Token]"* %this, %Token* %f_ptr) #3 { %this.addr = alloca %"RawPtr[Token]"* store %"RawPtr[Token]"* %this, %"RawPtr[Token]"** %this.addr %f_ptr.addr = alloca %Token* @@ -6570,7 +6784,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @advance.197(%"RawPtr[Token]"* sret %_result, %"RawPtr[Token]" %this, i64 %n) #4 { +define internal void @advance.215(%"RawPtr[Token]"* sret %_result, %"RawPtr[Token]" %this, i64 %n) #4 { %_result.addr = alloca %"RawPtr[Token]"* store %"RawPtr[Token]"* %_result, %"RawPtr[Token]"** %_result.addr %this.addr = alloca %"RawPtr[Token]" @@ -6582,16 +6796,16 @@ define internal void @advance.197(%"RawPtr[Token]"* sret %_result, %"RawPtr[Toke code: ; preds = %0 %1 = load %"RawPtr[Token]"*, %"RawPtr[Token]"** %_result.addr %2 = load %"RawPtr[Token]", %"RawPtr[Token]"* %this.addr - %3 = call i8* @bytePtr.193(%"RawPtr[Token]" %2) + %3 = call i8* @bytePtr.211(%"RawPtr[Token]" %2) %4 = load i64, i64* %n.addr %5 = mul i64 %4, 72 %6 = call i8* @ptrAdd(i8* %3, i64 %5) - call void @ctor.198(%"RawPtr[Token]"* %1, i8* %6) + call void @ctor.216(%"RawPtr[Token]"* %1, i8* %6) ret void } ; Function Attrs: inlinehint nounwind -define internal void @ctor.198(%"RawPtr[Token]"* %this, i8* %byteRef) #4 { +define internal void @ctor.216(%"RawPtr[Token]"* %this, i8* %byteRef) #4 { %this.addr = alloca %"RawPtr[Token]"* store %"RawPtr[Token]"* %this, %"RawPtr[Token]"** %this.addr %byteRef.addr = alloca i8* @@ -6611,7 +6825,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.199(%"RawPtr[Token]"* %this, %"RawPtr[Token]"* %other) #3 { +define internal void @ctor.217(%"RawPtr[Token]"* %this, %"RawPtr[Token]"* %other) #3 { %this.addr = alloca %"RawPtr[Token]"* store %"RawPtr[Token]"* %this, %"RawPtr[Token]"** %this.addr %other.addr = alloca %"RawPtr[Token]"* @@ -6629,7 +6843,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.200"(%"RawPtr[Token]"* %this, %"RawPtr[Token]"* %other) #3 { +define internal i1 @"==.218"(%"RawPtr[Token]"* %this, %"RawPtr[Token]"* %other) #3 { %this.addr = alloca %"RawPtr[Token]"* store %"RawPtr[Token]"* %this, %"RawPtr[Token]"** %this.addr %other.addr = alloca %"RawPtr[Token]"* @@ -6650,7 +6864,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal %Token* @value.201(%"RawPtr[Token]" %this) #4 { +define internal %Token* @value.219(%"RawPtr[Token]" %this) #4 { %this.addr = alloca %"RawPtr[Token]" store %"RawPtr[Token]" %this, %"RawPtr[Token]"* %this.addr br label %code @@ -6662,7 +6876,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @advance.202(%"RawPtr[Token]"* sret %_result, %"RawPtr[Token]" %this) #4 { +define internal void @advance.220(%"RawPtr[Token]"* sret %_result, %"RawPtr[Token]" %this) #4 { %_result.addr = alloca %"RawPtr[Token]"* store %"RawPtr[Token]"* %_result, %"RawPtr[Token]"** %_result.addr %this.addr = alloca %"RawPtr[Token]" @@ -6672,14 +6886,14 @@ define internal void @advance.202(%"RawPtr[Token]"* sret %_result, %"RawPtr[Toke code: ; preds = %0 %1 = load %"RawPtr[Token]"*, %"RawPtr[Token]"** %_result.addr %2 = load %"RawPtr[Token]", %"RawPtr[Token]"* %this.addr - %3 = call i8* @bytePtr.193(%"RawPtr[Token]" %2) + %3 = call i8* @bytePtr.211(%"RawPtr[Token]" %2) %4 = call i8* @ptrAdd(i8* %3, i64 72) - call void @ctor.198(%"RawPtr[Token]"* %1, i8* %4) + call void @ctor.216(%"RawPtr[Token]"* %1, i8* %4) ret void } ; Function Attrs: inlinehint nounwind -define internal void @ctor.203(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #4 { +define internal void @ctor.221(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #4 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr %other.addr = alloca %"Vector[UInt]"* @@ -6694,44 +6908,44 @@ define internal void @ctor.203(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) code: ; preds = %0 %1 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %2 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %1, i32 0, i32 0 - call void @ctor.164(%"RawPtr[UInt]"* %2) + call void @ctor.152(%"RawPtr[UInt]"* %2) %3 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %4 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %3, i32 0, i32 1 - call void @ctor.164(%"RawPtr[UInt]"* %4) + call void @ctor.152(%"RawPtr[UInt]"* %4) %5 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %6 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %5, i32 0, i32 2 - call void @ctor.164(%"RawPtr[UInt]"* %6) + call void @ctor.152(%"RawPtr[UInt]"* %6) %7 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr - %8 = call i64 @size.204(%"Vector[UInt]"* %7) + %8 = call i64 @size.222(%"Vector[UInt]"* %7) store i64 %8, i64* %size %9 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %10 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %9, i32 0, i32 0 %11 = load i64, i64* %size - call void @allocRawPtr.208(%"RawPtr[UInt]"* %"$tmpC", i64 %11) - call void @"=.207"(%"RawPtr[UInt]"* %10, %"RawPtr[UInt]"* %"$tmpC") + call void @allocRawPtr.226(%"RawPtr[UInt]"* %"$tmpC", i64 %11) + call void @"=.225"(%"RawPtr[UInt]"* %10, %"RawPtr[UInt]"* %"$tmpC") %12 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %13 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %12, i32 0, i32 1 %14 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %15 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %14, i32 0, i32 0 %16 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %15 %17 = load i64, i64* %size - call void @advance.210(%"RawPtr[UInt]"* %"$tmpC1", %"RawPtr[UInt]" %16, i64 %17) - call void @"=.207"(%"RawPtr[UInt]"* %13, %"RawPtr[UInt]"* %"$tmpC1") + call void @advance.228(%"RawPtr[UInt]"* %"$tmpC1", %"RawPtr[UInt]" %16, i64 %17) + call void @"=.225"(%"RawPtr[UInt]"* %13, %"RawPtr[UInt]"* %"$tmpC1") %18 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %19 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %18, i32 0, i32 2 %20 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %21 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %20, i32 0, i32 1 - call void @"=.207"(%"RawPtr[UInt]"* %19, %"RawPtr[UInt]"* %21) + call void @"=.225"(%"RawPtr[UInt]"* %19, %"RawPtr[UInt]"* %21) %22 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %23 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %22, i32 0, i32 0 - call void @ctor.212(%"RawPtr[UInt]"* %dst, %"RawPtr[UInt]"* %23) + call void @ctor.230(%"RawPtr[UInt]"* %dst, %"RawPtr[UInt]"* %23) %24 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr %25 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %24, i32 0, i32 0 - call void @ctor.212(%"RawPtr[UInt]"* %src, %"RawPtr[UInt]"* %25) + call void @ctor.230(%"RawPtr[UInt]"* %src, %"RawPtr[UInt]"* %25) %26 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %dst - %27 = call i8* @bytePtr.206(%"RawPtr[UInt]" %26) + %27 = call i8* @bytePtr.224(%"RawPtr[UInt]" %26) %28 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %src - %29 = call i8* @bytePtr.206(%"RawPtr[UInt]" %28) + %29 = call i8* @bytePtr.224(%"RawPtr[UInt]" %28) %30 = load i64, i64* %size %31 = mul i64 %30, 4 call void @_spr_memcpy(i8* %27, i8* %29, i64 %31) @@ -6739,7 +6953,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i64 @size.204(%"Vector[UInt]"* %this) #4 { +define internal i64 @size.222(%"Vector[UInt]"* %this) #4 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr %tmp.this = alloca i64 @@ -6752,14 +6966,14 @@ code: ; preds = %0 %4 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %5 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %4, i32 0, i32 0 %6 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %5 - %7 = call i64 @diff.205(%"RawPtr[UInt]" %3, %"RawPtr[UInt]" %6) + %7 = call i64 @diff.223(%"RawPtr[UInt]" %3, %"RawPtr[UInt]" %6) store i64 %7, i64* %tmp.this %8 = load i64, i64* %tmp.this ret i64 %8 } ; Function Attrs: inlinehint nounwind -define internal i64 @diff.205(%"RawPtr[UInt]" %this, %"RawPtr[UInt]" %other) #4 { +define internal i64 @diff.223(%"RawPtr[UInt]" %this, %"RawPtr[UInt]" %other) #4 { %this.addr = alloca %"RawPtr[UInt]" store %"RawPtr[UInt]" %this, %"RawPtr[UInt]"* %this.addr %other.addr = alloca %"RawPtr[UInt]" @@ -6770,9 +6984,9 @@ define internal i64 @diff.205(%"RawPtr[UInt]" %this, %"RawPtr[UInt]" %other) #4 code: ; preds = %0 %1 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %this.addr - %2 = call i8* @bytePtr.206(%"RawPtr[UInt]" %1) + %2 = call i8* @bytePtr.224(%"RawPtr[UInt]" %1) %3 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %other.addr - %4 = call i8* @bytePtr.206(%"RawPtr[UInt]" %3) + %4 = call i8* @bytePtr.224(%"RawPtr[UInt]" %3) %5 = call i64 @ptrDiff(i8* %2, i8* %4) store i64 4, i64* %tmp.this1 %6 = load i64, i64* %tmp.this1 @@ -6783,7 +6997,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i8* @bytePtr.206(%"RawPtr[UInt]" %this) #4 { +define internal i8* @bytePtr.224(%"RawPtr[UInt]" %this) #4 { %this.addr = alloca %"RawPtr[UInt]" store %"RawPtr[UInt]" %this, %"RawPtr[UInt]"* %this.addr br label %code @@ -6796,7 +7010,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.207"(%"RawPtr[UInt]"* %this, %"RawPtr[UInt]"* %other) #3 { +define internal void @"=.225"(%"RawPtr[UInt]"* %this, %"RawPtr[UInt]"* %other) #3 { %this.addr = alloca %"RawPtr[UInt]"* store %"RawPtr[UInt]"* %this, %"RawPtr[UInt]"** %this.addr %other.addr = alloca %"RawPtr[UInt]"* @@ -6814,7 +7028,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @allocRawPtr.208(%"RawPtr[UInt]"* sret %_result, i64 %num) #4 { +define internal void @allocRawPtr.226(%"RawPtr[UInt]"* sret %_result, i64 %num) #4 { %_result.addr = alloca %"RawPtr[UInt]"* store %"RawPtr[UInt]"* %_result, %"RawPtr[UInt]"** %_result.addr %num.addr = alloca i64 @@ -6827,12 +7041,12 @@ code: ; preds = %0 %3 = mul i64 %2, 4 %4 = call i8* @malloc(i64 %3) %5 = bitcast i8* %4 to i32* - call void @ctor.209(%"RawPtr[UInt]"* %1, i32* %5) + call void @ctor.227(%"RawPtr[UInt]"* %1, i32* %5) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.209(%"RawPtr[UInt]"* %this, i32* %f_ptr) #3 { +define internal void @ctor.227(%"RawPtr[UInt]"* %this, i32* %f_ptr) #3 { %this.addr = alloca %"RawPtr[UInt]"* store %"RawPtr[UInt]"* %this, %"RawPtr[UInt]"** %this.addr %f_ptr.addr = alloca i32* @@ -6848,7 +7062,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @advance.210(%"RawPtr[UInt]"* sret %_result, %"RawPtr[UInt]" %this, i64 %n) #4 { +define internal void @advance.228(%"RawPtr[UInt]"* sret %_result, %"RawPtr[UInt]" %this, i64 %n) #4 { %_result.addr = alloca %"RawPtr[UInt]"* store %"RawPtr[UInt]"* %_result, %"RawPtr[UInt]"** %_result.addr %this.addr = alloca %"RawPtr[UInt]" @@ -6860,16 +7074,16 @@ define internal void @advance.210(%"RawPtr[UInt]"* sret %_result, %"RawPtr[UInt] code: ; preds = %0 %1 = load %"RawPtr[UInt]"*, %"RawPtr[UInt]"** %_result.addr %2 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %this.addr - %3 = call i8* @bytePtr.206(%"RawPtr[UInt]" %2) + %3 = call i8* @bytePtr.224(%"RawPtr[UInt]" %2) %4 = load i64, i64* %n.addr %5 = mul i64 %4, 4 %6 = call i8* @ptrAdd(i8* %3, i64 %5) - call void @ctor.211(%"RawPtr[UInt]"* %1, i8* %6) + call void @ctor.229(%"RawPtr[UInt]"* %1, i8* %6) ret void } ; Function Attrs: inlinehint nounwind -define internal void @ctor.211(%"RawPtr[UInt]"* %this, i8* %byteRef) #4 { +define internal void @ctor.229(%"RawPtr[UInt]"* %this, i8* %byteRef) #4 { %this.addr = alloca %"RawPtr[UInt]"* store %"RawPtr[UInt]"* %this, %"RawPtr[UInt]"** %this.addr %byteRef.addr = alloca i8* @@ -6889,7 +7103,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.212(%"RawPtr[UInt]"* %this, %"RawPtr[UInt]"* %other) #3 { +define internal void @ctor.230(%"RawPtr[UInt]"* %this, %"RawPtr[UInt]"* %other) #3 { %this.addr = alloca %"RawPtr[UInt]"* store %"RawPtr[UInt]"* %this, %"RawPtr[UInt]"** %this.addr %other.addr = alloca %"RawPtr[UInt]"* @@ -6907,128 +7121,779 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.213(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %other) #3 { - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %other.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %other, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %other.addr +define internal void @ctor.231(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %other) #3 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %other.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %other, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %other.addr br label %code code: ; preds = %0 - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 0 - %3 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %other.addr - %4 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %3, i32 0, i32 0 - call void @ctor.214(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %2, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %4) - %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 1 - %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %other.addr - %8 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %7, i32 0, i32 1 - call void @ctor.182(%Token* %6, %Token* %8) - %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %other.addr - %10 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9, i32 0, i32 2 + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, i32 0, i32 0 + %3 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %other.addr + %4 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %3, i32 0, i32 0 + call void @ctor.232(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %2, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %4) + %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %5, i32 0, i32 1 + %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %other.addr + %8 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %7, i32 0, i32 1 + call void @ctor.202(%Token* %6, %Token* %8) + %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %other.addr + %10 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %9, i32 0, i32 2 %11 = load i1, i1* %10 - %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %13 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %12, i32 0, i32 2 + %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %13 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %12, i32 0, i32 2 store i1 %11, i1* %13 + %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %15 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %14, i32 0, i32 3 + %16 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %other.addr + %17 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %16, i32 0, i32 3 + call void @ctor.233(%AstBuilder* %15, %AstBuilder* %17) + %18 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %19 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %18, i32 0, i32 4 + %20 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %other.addr + %21 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %20, i32 0, i32 4 + call void @ctor.204(%ErrorReporter* %19, %ErrorReporter* %21) + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.232(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %other) #3 { + %this.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* + store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %other.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* + store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %other, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %2 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %1, i32 0, i32 0 + %3 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %other.addr + %4 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %3, i32 0, i32 0 + call void @ctor.206(%"SparrowLayoutDecoder[SparrowScanner]"* %2, %"SparrowLayoutDecoder[SparrowScanner]"* %4) + %5 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %6 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %5, i32 0, i32 1 + %7 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %other.addr + %8 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %7, i32 0, i32 1 + call void @ctor.208(%"Vector[Token]"* %6, %"Vector[Token]"* %8) + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.233(%AstBuilder* %this, %AstBuilder* %other) #3 { + %this.addr = alloca %AstBuilder* + store %AstBuilder* %this, %AstBuilder** %this.addr + %other.addr = alloca %AstBuilder* + store %AstBuilder* %other, %AstBuilder** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %this.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 0 + %3 = load %AstBuilder*, %AstBuilder** %other.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + call void @ctor.187(%UntypedPtr* %2, %UntypedPtr* %4) + %5 = load %AstBuilder*, %AstBuilder** %this.addr + %6 = getelementptr inbounds %AstBuilder, %AstBuilder* %5, i32 0, i32 1 + %7 = load %AstBuilder*, %AstBuilder** %other.addr + %8 = getelementptr inbounds %AstBuilder, %AstBuilder* %7, i32 0, i32 1 + call void @ctor.234(%"FunctionPtr3[Node, UntypedPtr, Node, Node]"* %6, %"FunctionPtr3[Node, UntypedPtr, Node, Node]"* %8) + %9 = load %AstBuilder*, %AstBuilder** %this.addr + %10 = getelementptr inbounds %AstBuilder, %AstBuilder* %9, i32 0, i32 2 + %11 = load %AstBuilder*, %AstBuilder** %other.addr + %12 = getelementptr inbounds %AstBuilder, %AstBuilder* %11, i32 0, i32 2 + call void @ctor.235(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %10, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %12) + %13 = load %AstBuilder*, %AstBuilder** %this.addr + %14 = getelementptr inbounds %AstBuilder, %AstBuilder* %13, i32 0, i32 3 + %15 = load %AstBuilder*, %AstBuilder** %other.addr + %16 = getelementptr inbounds %AstBuilder, %AstBuilder* %15, i32 0, i32 3 + call void @ctor.235(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %14, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %16) + %17 = load %AstBuilder*, %AstBuilder** %this.addr + %18 = getelementptr inbounds %AstBuilder, %AstBuilder* %17, i32 0, i32 4 + %19 = load %AstBuilder*, %AstBuilder** %other.addr + %20 = getelementptr inbounds %AstBuilder, %AstBuilder* %19, i32 0, i32 4 + call void @ctor.236(%"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %18, %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %20) + %21 = load %AstBuilder*, %AstBuilder** %this.addr + %22 = getelementptr inbounds %AstBuilder, %AstBuilder* %21, i32 0, i32 5 + %23 = load %AstBuilder*, %AstBuilder** %other.addr + %24 = getelementptr inbounds %AstBuilder, %AstBuilder* %23, i32 0, i32 5 + call void @ctor.237(%"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %22, %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %24) + %25 = load %AstBuilder*, %AstBuilder** %this.addr + %26 = getelementptr inbounds %AstBuilder, %AstBuilder* %25, i32 0, i32 6 + %27 = load %AstBuilder*, %AstBuilder** %other.addr + %28 = getelementptr inbounds %AstBuilder, %AstBuilder* %27, i32 0, i32 6 + call void @ctor.238(%"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %26, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %28) + %29 = load %AstBuilder*, %AstBuilder** %this.addr + %30 = getelementptr inbounds %AstBuilder, %AstBuilder* %29, i32 0, i32 7 + %31 = load %AstBuilder*, %AstBuilder** %other.addr + %32 = getelementptr inbounds %AstBuilder, %AstBuilder* %31, i32 0, i32 7 + call void @ctor.239(%"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* %30, %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* %32) + %33 = load %AstBuilder*, %AstBuilder** %this.addr + %34 = getelementptr inbounds %AstBuilder, %AstBuilder* %33, i32 0, i32 8 + %35 = load %AstBuilder*, %AstBuilder** %other.addr + %36 = getelementptr inbounds %AstBuilder, %AstBuilder* %35, i32 0, i32 8 + call void @ctor.236(%"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %34, %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %36) + %37 = load %AstBuilder*, %AstBuilder** %this.addr + %38 = getelementptr inbounds %AstBuilder, %AstBuilder* %37, i32 0, i32 9 + %39 = load %AstBuilder*, %AstBuilder** %other.addr + %40 = getelementptr inbounds %AstBuilder, %AstBuilder* %39, i32 0, i32 9 + call void @ctor.240(%"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* %38, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* %40) + %41 = load %AstBuilder*, %AstBuilder** %this.addr + %42 = getelementptr inbounds %AstBuilder, %AstBuilder* %41, i32 0, i32 10 + %43 = load %AstBuilder*, %AstBuilder** %other.addr + %44 = getelementptr inbounds %AstBuilder, %AstBuilder* %43, i32 0, i32 10 + call void @ctor.236(%"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %42, %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %44) + %45 = load %AstBuilder*, %AstBuilder** %this.addr + %46 = getelementptr inbounds %AstBuilder, %AstBuilder* %45, i32 0, i32 11 + %47 = load %AstBuilder*, %AstBuilder** %other.addr + %48 = getelementptr inbounds %AstBuilder, %AstBuilder* %47, i32 0, i32 11 + call void @ctor.236(%"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %46, %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %48) + %49 = load %AstBuilder*, %AstBuilder** %this.addr + %50 = getelementptr inbounds %AstBuilder, %AstBuilder* %49, i32 0, i32 12 + %51 = load %AstBuilder*, %AstBuilder** %other.addr + %52 = getelementptr inbounds %AstBuilder, %AstBuilder* %51, i32 0, i32 12 + call void @ctor.241(%"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* %50, %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* %52) + %53 = load %AstBuilder*, %AstBuilder** %this.addr + %54 = getelementptr inbounds %AstBuilder, %AstBuilder* %53, i32 0, i32 13 + %55 = load %AstBuilder*, %AstBuilder** %other.addr + %56 = getelementptr inbounds %AstBuilder, %AstBuilder* %55, i32 0, i32 13 + call void @ctor.242(%"FunctionPtr2[Node, UntypedPtr, Node]"* %54, %"FunctionPtr2[Node, UntypedPtr, Node]"* %56) + %57 = load %AstBuilder*, %AstBuilder** %this.addr + %58 = getelementptr inbounds %AstBuilder, %AstBuilder* %57, i32 0, i32 14 + %59 = load %AstBuilder*, %AstBuilder** %other.addr + %60 = getelementptr inbounds %AstBuilder, %AstBuilder* %59, i32 0, i32 14 + call void @ctor.243(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %58, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %60) + %61 = load %AstBuilder*, %AstBuilder** %this.addr + %62 = getelementptr inbounds %AstBuilder, %AstBuilder* %61, i32 0, i32 15 + %63 = load %AstBuilder*, %AstBuilder** %other.addr + %64 = getelementptr inbounds %AstBuilder, %AstBuilder* %63, i32 0, i32 15 + call void @ctor.244(%"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* %62, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* %64) + %65 = load %AstBuilder*, %AstBuilder** %this.addr + %66 = getelementptr inbounds %AstBuilder, %AstBuilder* %65, i32 0, i32 16 + %67 = load %AstBuilder*, %AstBuilder** %other.addr + %68 = getelementptr inbounds %AstBuilder, %AstBuilder* %67, i32 0, i32 16 + call void @ctor.237(%"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %66, %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %68) + %69 = load %AstBuilder*, %AstBuilder** %this.addr + %70 = getelementptr inbounds %AstBuilder, %AstBuilder* %69, i32 0, i32 17 + %71 = load %AstBuilder*, %AstBuilder** %other.addr + %72 = getelementptr inbounds %AstBuilder, %AstBuilder* %71, i32 0, i32 17 + call void @ctor.245(%"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %70, %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %72) + %73 = load %AstBuilder*, %AstBuilder** %this.addr + %74 = getelementptr inbounds %AstBuilder, %AstBuilder* %73, i32 0, i32 18 + %75 = load %AstBuilder*, %AstBuilder** %other.addr + %76 = getelementptr inbounds %AstBuilder, %AstBuilder* %75, i32 0, i32 18 + call void @ctor.243(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %74, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %76) + %77 = load %AstBuilder*, %AstBuilder** %this.addr + %78 = getelementptr inbounds %AstBuilder, %AstBuilder* %77, i32 0, i32 19 + %79 = load %AstBuilder*, %AstBuilder** %other.addr + %80 = getelementptr inbounds %AstBuilder, %AstBuilder* %79, i32 0, i32 19 + call void @ctor.243(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %78, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %80) + %81 = load %AstBuilder*, %AstBuilder** %this.addr + %82 = getelementptr inbounds %AstBuilder, %AstBuilder* %81, i32 0, i32 20 + %83 = load %AstBuilder*, %AstBuilder** %other.addr + %84 = getelementptr inbounds %AstBuilder, %AstBuilder* %83, i32 0, i32 20 + call void @ctor.243(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %82, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %84) + %85 = load %AstBuilder*, %AstBuilder** %this.addr + %86 = getelementptr inbounds %AstBuilder, %AstBuilder* %85, i32 0, i32 21 + %87 = load %AstBuilder*, %AstBuilder** %other.addr + %88 = getelementptr inbounds %AstBuilder, %AstBuilder* %87, i32 0, i32 21 + call void @ctor.235(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %86, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %88) + %89 = load %AstBuilder*, %AstBuilder** %this.addr + %90 = getelementptr inbounds %AstBuilder, %AstBuilder* %89, i32 0, i32 22 + %91 = load %AstBuilder*, %AstBuilder** %other.addr + %92 = getelementptr inbounds %AstBuilder, %AstBuilder* %91, i32 0, i32 22 + call void @ctor.246(%"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* %90, %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* %92) + %93 = load %AstBuilder*, %AstBuilder** %this.addr + %94 = getelementptr inbounds %AstBuilder, %AstBuilder* %93, i32 0, i32 23 + %95 = load %AstBuilder*, %AstBuilder** %other.addr + %96 = getelementptr inbounds %AstBuilder, %AstBuilder* %95, i32 0, i32 23 + call void @ctor.247(%"FunctionPtr2[Node, UntypedPtr, @Location]"* %94, %"FunctionPtr2[Node, UntypedPtr, @Location]"* %96) + %97 = load %AstBuilder*, %AstBuilder** %this.addr + %98 = getelementptr inbounds %AstBuilder, %AstBuilder* %97, i32 0, i32 24 + %99 = load %AstBuilder*, %AstBuilder** %other.addr + %100 = getelementptr inbounds %AstBuilder, %AstBuilder* %99, i32 0, i32 24 + call void @ctor.248(%"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* %98, %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* %100) + %101 = load %AstBuilder*, %AstBuilder** %this.addr + %102 = getelementptr inbounds %AstBuilder, %AstBuilder* %101, i32 0, i32 25 + %103 = load %AstBuilder*, %AstBuilder** %other.addr + %104 = getelementptr inbounds %AstBuilder, %AstBuilder* %103, i32 0, i32 25 + call void @ctor.249(%"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* %102, %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* %104) + %105 = load %AstBuilder*, %AstBuilder** %this.addr + %106 = getelementptr inbounds %AstBuilder, %AstBuilder* %105, i32 0, i32 26 + %107 = load %AstBuilder*, %AstBuilder** %other.addr + %108 = getelementptr inbounds %AstBuilder, %AstBuilder* %107, i32 0, i32 26 + call void @ctor.250(%"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* %106, %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* %108) + %109 = load %AstBuilder*, %AstBuilder** %this.addr + %110 = getelementptr inbounds %AstBuilder, %AstBuilder* %109, i32 0, i32 27 + %111 = load %AstBuilder*, %AstBuilder** %other.addr + %112 = getelementptr inbounds %AstBuilder, %AstBuilder* %111, i32 0, i32 27 + call void @ctor.251(%"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* %110, %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* %112) + %113 = load %AstBuilder*, %AstBuilder** %this.addr + %114 = getelementptr inbounds %AstBuilder, %AstBuilder* %113, i32 0, i32 28 + %115 = load %AstBuilder*, %AstBuilder** %other.addr + %116 = getelementptr inbounds %AstBuilder, %AstBuilder* %115, i32 0, i32 28 + call void @ctor.252(%"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* %114, %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* %116) + %117 = load %AstBuilder*, %AstBuilder** %this.addr + %118 = getelementptr inbounds %AstBuilder, %AstBuilder* %117, i32 0, i32 29 + %119 = load %AstBuilder*, %AstBuilder** %other.addr + %120 = getelementptr inbounds %AstBuilder, %AstBuilder* %119, i32 0, i32 29 + call void @ctor.253(%"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* %118, %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* %120) + %121 = load %AstBuilder*, %AstBuilder** %this.addr + %122 = getelementptr inbounds %AstBuilder, %AstBuilder* %121, i32 0, i32 30 + %123 = load %AstBuilder*, %AstBuilder** %other.addr + %124 = getelementptr inbounds %AstBuilder, %AstBuilder* %123, i32 0, i32 30 + call void @ctor.254(%"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* %122, %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* %124) + %125 = load %AstBuilder*, %AstBuilder** %this.addr + %126 = getelementptr inbounds %AstBuilder, %AstBuilder* %125, i32 0, i32 31 + %127 = load %AstBuilder*, %AstBuilder** %other.addr + %128 = getelementptr inbounds %AstBuilder, %AstBuilder* %127, i32 0, i32 31 + call void @ctor.255(%"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* %126, %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* %128) + %129 = load %AstBuilder*, %AstBuilder** %this.addr + %130 = getelementptr inbounds %AstBuilder, %AstBuilder* %129, i32 0, i32 32 + %131 = load %AstBuilder*, %AstBuilder** %other.addr + %132 = getelementptr inbounds %AstBuilder, %AstBuilder* %131, i32 0, i32 32 + call void @ctor.245(%"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %130, %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %132) + %133 = load %AstBuilder*, %AstBuilder** %this.addr + %134 = getelementptr inbounds %AstBuilder, %AstBuilder* %133, i32 0, i32 33 + %135 = load %AstBuilder*, %AstBuilder** %other.addr + %136 = getelementptr inbounds %AstBuilder, %AstBuilder* %135, i32 0, i32 33 + call void @ctor.256(%"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %134, %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %136) + %137 = load %AstBuilder*, %AstBuilder** %this.addr + %138 = getelementptr inbounds %AstBuilder, %AstBuilder* %137, i32 0, i32 34 + %139 = load %AstBuilder*, %AstBuilder** %other.addr + %140 = getelementptr inbounds %AstBuilder, %AstBuilder* %139, i32 0, i32 34 + call void @ctor.257(%"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %138, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %140) + %141 = load %AstBuilder*, %AstBuilder** %this.addr + %142 = getelementptr inbounds %AstBuilder, %AstBuilder* %141, i32 0, i32 35 + %143 = load %AstBuilder*, %AstBuilder** %other.addr + %144 = getelementptr inbounds %AstBuilder, %AstBuilder* %143, i32 0, i32 35 + call void @ctor.238(%"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %142, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %144) + %145 = load %AstBuilder*, %AstBuilder** %this.addr + %146 = getelementptr inbounds %AstBuilder, %AstBuilder* %145, i32 0, i32 36 + %147 = load %AstBuilder*, %AstBuilder** %other.addr + %148 = getelementptr inbounds %AstBuilder, %AstBuilder* %147, i32 0, i32 36 + call void @ctor.257(%"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %146, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %148) + %149 = load %AstBuilder*, %AstBuilder** %this.addr + %150 = getelementptr inbounds %AstBuilder, %AstBuilder* %149, i32 0, i32 37 + %151 = load %AstBuilder*, %AstBuilder** %other.addr + %152 = getelementptr inbounds %AstBuilder, %AstBuilder* %151, i32 0, i32 37 + call void @ctor.247(%"FunctionPtr2[Node, UntypedPtr, @Location]"* %150, %"FunctionPtr2[Node, UntypedPtr, @Location]"* %152) + %153 = load %AstBuilder*, %AstBuilder** %this.addr + %154 = getelementptr inbounds %AstBuilder, %AstBuilder* %153, i32 0, i32 38 + %155 = load %AstBuilder*, %AstBuilder** %other.addr + %156 = getelementptr inbounds %AstBuilder, %AstBuilder* %155, i32 0, i32 38 + call void @ctor.247(%"FunctionPtr2[Node, UntypedPtr, @Location]"* %154, %"FunctionPtr2[Node, UntypedPtr, @Location]"* %156) + %157 = load %AstBuilder*, %AstBuilder** %this.addr + %158 = getelementptr inbounds %AstBuilder, %AstBuilder* %157, i32 0, i32 39 + %159 = load %AstBuilder*, %AstBuilder** %other.addr + %160 = getelementptr inbounds %AstBuilder, %AstBuilder* %159, i32 0, i32 39 + call void @ctor.256(%"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %158, %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %160) + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.234(%"FunctionPtr3[Node, UntypedPtr, Node, Node]"* %this, %"FunctionPtr3[Node, UntypedPtr, Node, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, Node, Node]"* + store %"FunctionPtr3[Node, UntypedPtr, Node, Node]"* %this, %"FunctionPtr3[Node, UntypedPtr, Node, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Node, UntypedPtr, Node, Node]"* + store %"FunctionPtr3[Node, UntypedPtr, Node, Node]"* %other, %"FunctionPtr3[Node, UntypedPtr, Node, Node]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, Node, Node]"*, %"FunctionPtr3[Node, UntypedPtr, Node, Node]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, Node, Node]", %"FunctionPtr3[Node, UntypedPtr, Node, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Node, UntypedPtr, Node, Node]"*, %"FunctionPtr3[Node, UntypedPtr, Node, Node]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, Node, Node]", %"FunctionPtr3[Node, UntypedPtr, Node, Node]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.214(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %other) #3 { - %this.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* - store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %other.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* - store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %other, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %other.addr +define internal void @ctor.235(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %this, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* + store %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %this, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* + store %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %other, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"** %other.addr br label %code code: ; preds = %0 - %1 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %2 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %1, i32 0, i32 0 - %3 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %other.addr - %4 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %3, i32 0, i32 0 - call void @ctor.188(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %2, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %4) - %5 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %6 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %5, i32 0, i32 1 - %7 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %other.addr - %8 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %7, i32 0, i32 1 - call void @ctor.190(%"Vector[Token]"* %6, %"Vector[Token]"* %8) + %1 = load %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"*, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]", %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"*, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]", %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.215(%ParserContext* %this) #3 { - %this.addr = alloca %ParserContext* - store %ParserContext* %this, %ParserContext** %this.addr +define internal void @ctor.236(%"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %this, %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* + store %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %this, %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* + store %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %other, %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"** %other.addr br label %code code: ; preds = %0 - %1 = load %ParserContext*, %ParserContext** %this.addr - %2 = getelementptr inbounds %ParserContext, %ParserContext* %1, i32 0, i32 5 - call void @dtor.216(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2) - %3 = load %ParserContext*, %ParserContext** %this.addr - %4 = getelementptr inbounds %ParserContext, %ParserContext* %3, i32 0, i32 4 - call void @dtor.223(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %4) - %5 = load %ParserContext*, %ParserContext** %this.addr - %6 = getelementptr inbounds %ParserContext, %ParserContext* %5, i32 0, i32 3 - call void @dtor.234(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %6) - %7 = load %ParserContext*, %ParserContext** %this.addr - %8 = getelementptr inbounds %ParserContext, %ParserContext* %7, i32 0, i32 0 - call void @dtor.237(%File* %8) + %1 = load %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"*, %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]", %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"*, %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]", %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.216(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this) #3 { - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal void @ctor.237(%"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %this, %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* + store %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %this, %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* + store %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %other, %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"** %other.addr br label %code code: ; preds = %0 - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 1 - call void @dtor.217(%Token* %2) - %3 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %4 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %3, i32 0, i32 0 - call void @dtor.219(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %4) + %1 = load %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"*, %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]", %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"*, %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]", %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.217(%Token* %this) #3 { - %this.addr = alloca %Token* - store %Token* %this, %Token** %this.addr +define internal void @ctor.238(%"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %this, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* + store %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %this, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* + store %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %other, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"** %other.addr br label %code code: ; preds = %0 - %1 = load %Token*, %Token** %this.addr - %2 = getelementptr inbounds %Token, %Token* %1, i32 0, i32 2 - call void @dtor.218(%String* %2) + %1 = load %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"*, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]", %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"*, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]", %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 ret void } -; Function Attrs: inlinehint nounwind -define internal void @dtor.218(%String* %this) #4 { - %this.addr = alloca %String* - store %String* %this, %String** %this.addr +; Function Attrs: alwaysinline nounwind +define internal void @ctor.239(%"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* %this, %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* + store %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* %this, %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* + store %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* %other, %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"** %other.addr br label %code code: ; preds = %0 - %1 = load %String*, %String** %this.addr - %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 0 - %3 = load %"RawPtr[Char]", %"RawPtr[Char]"* %2 - call void @freePtr(%"RawPtr[Char]" %3) + %1 = load %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"*, %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]", %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"*, %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]", %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 ret void } -; Function Attrs: inlinehint nounwind -define internal void @freePtr(%"RawPtr[Char]" %this) #4 { - %this.addr = alloca %"RawPtr[Char]" - store %"RawPtr[Char]" %this, %"RawPtr[Char]"* %this.addr +; Function Attrs: alwaysinline nounwind +define internal void @ctor.240(%"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* %this, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* + store %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* %this, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* + store %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* %other, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"** %other.addr br label %code code: ; preds = %0 - br label %if_block + %1 = load %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"*, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]", %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"*, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]", %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.241(%"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* %this, %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* + store %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* %this, %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* + store %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* %other, %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"*, %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]", %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"*, %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]", %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.242(%"FunctionPtr2[Node, UntypedPtr, Node]"* %this, %"FunctionPtr2[Node, UntypedPtr, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr2[Node, UntypedPtr, Node]"* + store %"FunctionPtr2[Node, UntypedPtr, Node]"* %this, %"FunctionPtr2[Node, UntypedPtr, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr2[Node, UntypedPtr, Node]"* + store %"FunctionPtr2[Node, UntypedPtr, Node]"* %other, %"FunctionPtr2[Node, UntypedPtr, Node]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr2[Node, UntypedPtr, Node]"*, %"FunctionPtr2[Node, UntypedPtr, Node]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr2[Node, UntypedPtr, Node]", %"FunctionPtr2[Node, UntypedPtr, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr2[Node, UntypedPtr, Node]"*, %"FunctionPtr2[Node, UntypedPtr, Node]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr2[Node, UntypedPtr, Node]", %"FunctionPtr2[Node, UntypedPtr, Node]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.243(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %this, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %other) #3 { + %this.addr = alloca %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* + store %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %this, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"** %this.addr + %other.addr = alloca %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* + store %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %other, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"*, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]", %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"*, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]", %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.244(%"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* %this, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* + store %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* %this, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* + store %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* %other, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"*, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]", %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"*, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]", %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.245(%"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %other, %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]", %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]", %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.246(%"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* %this, %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* + store %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* %this, %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* + store %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* %other, %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"*, %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]", %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"*, %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]", %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.247(%"FunctionPtr2[Node, UntypedPtr, @Location]"* %this, %"FunctionPtr2[Node, UntypedPtr, @Location]"* %other) #3 { + %this.addr = alloca %"FunctionPtr2[Node, UntypedPtr, @Location]"* + store %"FunctionPtr2[Node, UntypedPtr, @Location]"* %this, %"FunctionPtr2[Node, UntypedPtr, @Location]"** %this.addr + %other.addr = alloca %"FunctionPtr2[Node, UntypedPtr, @Location]"* + store %"FunctionPtr2[Node, UntypedPtr, @Location]"* %other, %"FunctionPtr2[Node, UntypedPtr, @Location]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr2[Node, UntypedPtr, @Location]"*, %"FunctionPtr2[Node, UntypedPtr, @Location]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr2[Node, UntypedPtr, @Location]", %"FunctionPtr2[Node, UntypedPtr, @Location]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr2[Node, UntypedPtr, @Location]"*, %"FunctionPtr2[Node, UntypedPtr, @Location]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr2[Node, UntypedPtr, @Location]", %"FunctionPtr2[Node, UntypedPtr, @Location]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.248(%"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* %other, %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]", %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]", %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.249(%"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* %other, %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Int]", %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Int]", %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.250(%"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* %other, %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]", %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]", %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.251(%"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* %other, %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Long]", %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Long]", %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.252(%"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* %other, %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]", %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]", %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.253(%"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* %other, %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Float]", %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Float]", %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.254(%"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* %other, %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Double]", %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Double]", %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.255(%"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* %other, %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Char]", %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Char]", %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.256(%"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %other, %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Node]", %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Node]", %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.257(%"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %this, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* + store %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %this, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* + store %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %other, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"*, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]", %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"*, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]", %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @dtor.258(%ParserContext* %this) #3 { + %this.addr = alloca %ParserContext* + store %ParserContext* %this, %ParserContext** %this.addr + br label %code + +code: ; preds = %0 + %1 = load %ParserContext*, %ParserContext** %this.addr + %2 = getelementptr inbounds %ParserContext, %ParserContext* %1, i32 0, i32 2 + call void @dtor.259(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %2) + %3 = load %ParserContext*, %ParserContext** %this.addr + %4 = getelementptr inbounds %ParserContext, %ParserContext* %3, i32 0, i32 1 + call void @dtor.266(%"SparrowLayoutDecoder[SparrowScanner]"* %4) + %5 = load %ParserContext*, %ParserContext** %this.addr + %6 = getelementptr inbounds %ParserContext, %ParserContext* %5, i32 0, i32 0 + call void @dtor.277(%SparrowScanner* %6) + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @dtor.259(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this) #3 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + br label %code + +code: ; preds = %0 + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, i32 0, i32 1 + call void @dtor.260(%Token* %2) + %3 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %4 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %3, i32 0, i32 0 + call void @dtor.262(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %4) + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @dtor.260(%Token* %this) #3 { + %this.addr = alloca %Token* + store %Token* %this, %Token** %this.addr + br label %code + +code: ; preds = %0 + %1 = load %Token*, %Token** %this.addr + %2 = getelementptr inbounds %Token, %Token* %1, i32 0, i32 2 + call void @dtor.261(%String* %2) + ret void +} + +; Function Attrs: inlinehint nounwind +define internal void @dtor.261(%String* %this) #4 { + %this.addr = alloca %String* + store %String* %this, %String** %this.addr + br label %code + +code: ; preds = %0 + %1 = load %String*, %String** %this.addr + %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 0 + %3 = load %"RawPtr[Char]", %"RawPtr[Char]"* %2 + call void @freePtr(%"RawPtr[Char]" %3) + ret void +} + +; Function Attrs: inlinehint nounwind +define internal void @freePtr(%"RawPtr[Char]" %this) #4 { + %this.addr = alloca %"RawPtr[Char]" + store %"RawPtr[Char]" %this, %"RawPtr[Char]"* %this.addr + br label %code + +code: ; preds = %0 + br label %if_block if_block: ; preds = %code %1 = load %"RawPtr[Char]", %"RawPtr[Char]"* %this.addr @@ -7059,23 +7924,23 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.219(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this) #3 { - %this.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* - store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr +define internal void @dtor.262(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %this) #3 { + %this.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* + store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr br label %code code: ; preds = %0 - %1 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %2 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %1, i32 0, i32 1 - call void @dtor.220(%"Vector[Token]"* %2) - %3 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %4 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %3, i32 0, i32 0 - call void @dtor.223(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %4) + %1 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %2 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %1, i32 0, i32 1 + call void @dtor.263(%"Vector[Token]"* %2) + %3 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %4 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %3, i32 0, i32 0 + call void @dtor.266(%"SparrowLayoutDecoder[SparrowScanner]"* %4) ret void } ; Function Attrs: inlinehint nounwind -define internal void @dtor.220(%"Vector[Token]"* %this) #4 { +define internal void @dtor.263(%"Vector[Token]"* %this) #4 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr %p = alloca %"RawPtr[Token]" @@ -7085,38 +7950,38 @@ define internal void @dtor.220(%"Vector[Token]"* %this) #4 { code: ; preds = %0 %1 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %2 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %1, i32 0, i32 0 - call void @ctor.199(%"RawPtr[Token]"* %p, %"RawPtr[Token]"* %2) + call void @ctor.217(%"RawPtr[Token]"* %p, %"RawPtr[Token]"* %2) br label %while_block while_block: ; preds = %while_step, %code %3 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %4 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %3, i32 0, i32 1 - %5 = call i1 @"==.200"(%"RawPtr[Token]"* %p, %"RawPtr[Token]"* %4) + %5 = call i1 @"==.218"(%"RawPtr[Token]"* %p, %"RawPtr[Token]"* %4) %6 = xor i1 true, %5 br i1 %6, label %while_body, label %while_end while_body: ; preds = %while_block %7 = load %"RawPtr[Token]", %"RawPtr[Token]"* %p - %8 = call %Token* @value.201(%"RawPtr[Token]" %7) - call void @dtor.217(%Token* %8) + %8 = call %Token* @value.219(%"RawPtr[Token]" %7) + call void @dtor.260(%Token* %8) br label %while_step while_step: ; preds = %while_body %9 = load %"RawPtr[Token]", %"RawPtr[Token]"* %p - call void @advance.202(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %9) - call void @"=.194"(%"RawPtr[Token]"* %p, %"RawPtr[Token]"* %"$tmpC") + call void @advance.220(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %9) + call void @"=.212"(%"RawPtr[Token]"* %p, %"RawPtr[Token]"* %"$tmpC") br label %while_block while_end: ; preds = %while_block %10 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %11 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %10, i32 0, i32 0 %12 = load %"RawPtr[Token]", %"RawPtr[Token]"* %11 - call void @freePtr.221(%"RawPtr[Token]" %12) + call void @freePtr.264(%"RawPtr[Token]" %12) ret void } ; Function Attrs: inlinehint nounwind -define internal void @freePtr.221(%"RawPtr[Token]" %this) #4 { +define internal void @freePtr.264(%"RawPtr[Token]" %this) #4 { %this.addr = alloca %"RawPtr[Token]" store %"RawPtr[Token]" %this, %"RawPtr[Token]"* %this.addr br label %code @@ -7126,12 +7991,12 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %"RawPtr[Token]", %"RawPtr[Token]"* %this.addr - %2 = call i1 @isSet.222(%"RawPtr[Token]" %1) + %2 = call i1 @isSet.265(%"RawPtr[Token]" %1) br i1 %2, label %if_then, label %if_end if_then: ; preds = %if_block %3 = load %"RawPtr[Token]", %"RawPtr[Token]"* %this.addr - %4 = call i8* @bytePtr.193(%"RawPtr[Token]" %3) + %4 = call i8* @bytePtr.211(%"RawPtr[Token]" %3) call void @free(i8* %4) br label %if_end @@ -7140,7 +8005,7 @@ if_end: ; preds = %if_then, %if_block } ; Function Attrs: inlinehint nounwind -define internal i1 @isSet.222(%"RawPtr[Token]" %this) #4 { +define internal i1 @isSet.265(%"RawPtr[Token]" %this) #4 { %this.addr = alloca %"RawPtr[Token]" store %"RawPtr[Token]" %this, %"RawPtr[Token]"* %this.addr br label %code @@ -7154,26 +8019,26 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.223(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this) #3 { - %this.addr = alloca %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal void @dtor.266(%"SparrowLayoutDecoder[SparrowScanner]"* %this) #3 { + %this.addr = alloca %"SparrowLayoutDecoder[SparrowScanner]"* + store %"SparrowLayoutDecoder[SparrowScanner]"* %this, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr br label %code code: ; preds = %0 - %1 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 3 - call void @dtor.224(%"Vector[Char]"* %2) - %3 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %4 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %3, i32 0, i32 2 - call void @dtor.227(%"Vector[UInt]"* %4) - %5 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %6 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 0 - call void @dtor.233(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %6) + %1 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %2 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %1, i32 0, i32 3 + call void @dtor.267(%"Vector[Char]"* %2) + %3 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %4 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %3, i32 0, i32 2 + call void @dtor.270(%"Vector[UInt]"* %4) + %5 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %6 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %5, i32 0, i32 0 + call void @dtor.276(%"RangeWithLookahead[SparrowScanner]"* %6) ret void } ; Function Attrs: inlinehint nounwind -define internal void @dtor.224(%"Vector[Char]"* %this) #4 { +define internal void @dtor.267(%"Vector[Char]"* %this) #4 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr %p = alloca %"RawPtr[Char]" @@ -7183,13 +8048,13 @@ define internal void @dtor.224(%"Vector[Char]"* %this) #4 { code: ; preds = %0 %1 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %2 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %1, i32 0, i32 0 - call void @ctor.181(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %2) + call void @ctor.192(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %2) br label %while_block while_block: ; preds = %while_step, %code %3 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %4 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %3, i32 0, i32 1 - %5 = call i1 @"==.225"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %4) + %5 = call i1 @"==.268"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %4) %6 = xor i1 true, %5 br i1 %6, label %while_body, label %while_end @@ -7201,8 +8066,8 @@ while_body: ; preds = %while_block while_step: ; preds = %while_body %10 = load %"RawPtr[Char]", %"RawPtr[Char]"* %p - call void @advance.226(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %10) - call void @"=.178"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %"$tmpC") + call void @advance.269(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %10) + call void @"=.200"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %"$tmpC") br label %while_block while_end: ; preds = %while_block @@ -7214,7 +8079,7 @@ while_end: ; preds = %while_block } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.225"(%"RawPtr[Char]"* %this, %"RawPtr[Char]"* %other) #3 { +define internal i1 @"==.268"(%"RawPtr[Char]"* %this, %"RawPtr[Char]"* %other) #3 { %this.addr = alloca %"RawPtr[Char]"* store %"RawPtr[Char]"* %this, %"RawPtr[Char]"** %this.addr %other.addr = alloca %"RawPtr[Char]"* @@ -7233,7 +8098,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @advance.226(%"RawPtr[Char]"* sret %_result, %"RawPtr[Char]" %this) #4 { +define internal void @advance.269(%"RawPtr[Char]"* sret %_result, %"RawPtr[Char]" %this) #4 { %_result.addr = alloca %"RawPtr[Char]"* store %"RawPtr[Char]"* %_result, %"RawPtr[Char]"** %_result.addr %this.addr = alloca %"RawPtr[Char]" @@ -7245,12 +8110,12 @@ code: ; preds = %0 %2 = load %"RawPtr[Char]", %"RawPtr[Char]"* %this.addr %3 = call i8* @bytePtr(%"RawPtr[Char]" %2) %4 = call i8* @ptrAdd(i8* %3, i64 1) - call void @ctor.180(%"RawPtr[Char]"* %1, i8* %4) + call void @ctor.194(%"RawPtr[Char]"* %1, i8* %4) ret void } ; Function Attrs: inlinehint nounwind -define internal void @dtor.227(%"Vector[UInt]"* %this) #4 { +define internal void @dtor.270(%"Vector[UInt]"* %this) #4 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr %p = alloca %"RawPtr[UInt]" @@ -7260,38 +8125,38 @@ define internal void @dtor.227(%"Vector[UInt]"* %this) #4 { code: ; preds = %0 %1 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %2 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %1, i32 0, i32 0 - call void @ctor.212(%"RawPtr[UInt]"* %p, %"RawPtr[UInt]"* %2) + call void @ctor.230(%"RawPtr[UInt]"* %p, %"RawPtr[UInt]"* %2) br label %while_block while_block: ; preds = %while_step, %code %3 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %4 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %3, i32 0, i32 1 - %5 = call i1 @"==.228"(%"RawPtr[UInt]"* %p, %"RawPtr[UInt]"* %4) + %5 = call i1 @"==.271"(%"RawPtr[UInt]"* %p, %"RawPtr[UInt]"* %4) %6 = xor i1 true, %5 br i1 %6, label %while_body, label %while_end while_body: ; preds = %while_block %7 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %p - %8 = call i32* @value.229(%"RawPtr[UInt]" %7) + %8 = call i32* @value.272(%"RawPtr[UInt]" %7) %9 = load i32, i32* %8 br label %while_step while_step: ; preds = %while_body %10 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %p - call void @advance.230(%"RawPtr[UInt]"* %"$tmpC", %"RawPtr[UInt]" %10) - call void @"=.207"(%"RawPtr[UInt]"* %p, %"RawPtr[UInt]"* %"$tmpC") + call void @advance.273(%"RawPtr[UInt]"* %"$tmpC", %"RawPtr[UInt]" %10) + call void @"=.225"(%"RawPtr[UInt]"* %p, %"RawPtr[UInt]"* %"$tmpC") br label %while_block while_end: ; preds = %while_block %11 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %12 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %11, i32 0, i32 0 %13 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %12 - call void @freePtr.231(%"RawPtr[UInt]" %13) + call void @freePtr.274(%"RawPtr[UInt]" %13) ret void } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.228"(%"RawPtr[UInt]"* %this, %"RawPtr[UInt]"* %other) #3 { +define internal i1 @"==.271"(%"RawPtr[UInt]"* %this, %"RawPtr[UInt]"* %other) #3 { %this.addr = alloca %"RawPtr[UInt]"* store %"RawPtr[UInt]"* %this, %"RawPtr[UInt]"** %this.addr %other.addr = alloca %"RawPtr[UInt]"* @@ -7312,7 +8177,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i32* @value.229(%"RawPtr[UInt]" %this) #4 { +define internal i32* @value.272(%"RawPtr[UInt]" %this) #4 { %this.addr = alloca %"RawPtr[UInt]" store %"RawPtr[UInt]" %this, %"RawPtr[UInt]"* %this.addr br label %code @@ -7324,7 +8189,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @advance.230(%"RawPtr[UInt]"* sret %_result, %"RawPtr[UInt]" %this) #4 { +define internal void @advance.273(%"RawPtr[UInt]"* sret %_result, %"RawPtr[UInt]" %this) #4 { %_result.addr = alloca %"RawPtr[UInt]"* store %"RawPtr[UInt]"* %_result, %"RawPtr[UInt]"** %_result.addr %this.addr = alloca %"RawPtr[UInt]" @@ -7334,14 +8199,14 @@ define internal void @advance.230(%"RawPtr[UInt]"* sret %_result, %"RawPtr[UInt] code: ; preds = %0 %1 = load %"RawPtr[UInt]"*, %"RawPtr[UInt]"** %_result.addr %2 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %this.addr - %3 = call i8* @bytePtr.206(%"RawPtr[UInt]" %2) + %3 = call i8* @bytePtr.224(%"RawPtr[UInt]" %2) %4 = call i8* @ptrAdd(i8* %3, i64 4) - call void @ctor.211(%"RawPtr[UInt]"* %1, i8* %4) + call void @ctor.229(%"RawPtr[UInt]"* %1, i8* %4) ret void } ; Function Attrs: inlinehint nounwind -define internal void @freePtr.231(%"RawPtr[UInt]" %this) #4 { +define internal void @freePtr.274(%"RawPtr[UInt]" %this) #4 { %this.addr = alloca %"RawPtr[UInt]" store %"RawPtr[UInt]" %this, %"RawPtr[UInt]"* %this.addr br label %code @@ -7351,12 +8216,12 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %this.addr - %2 = call i1 @isSet.232(%"RawPtr[UInt]" %1) + %2 = call i1 @isSet.275(%"RawPtr[UInt]" %1) br i1 %2, label %if_then, label %if_end if_then: ; preds = %if_block %3 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %this.addr - %4 = call i8* @bytePtr.206(%"RawPtr[UInt]" %3) + %4 = call i8* @bytePtr.224(%"RawPtr[UInt]" %3) call void @free(i8* %4) br label %if_end @@ -7365,7 +8230,7 @@ if_end: ; preds = %if_then, %if_block } ; Function Attrs: inlinehint nounwind -define internal i1 @isSet.232(%"RawPtr[UInt]" %this) #4 { +define internal i1 @isSet.275(%"RawPtr[UInt]" %this) #4 { %this.addr = alloca %"RawPtr[UInt]" store %"RawPtr[UInt]" %this, %"RawPtr[UInt]"* %this.addr br label %code @@ -7379,247 +8244,157 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.233(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this) #3 { - %this.addr = alloca %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* - store %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr +define internal void @dtor.276(%"RangeWithLookahead[SparrowScanner]"* %this) #3 { + %this.addr = alloca %"RangeWithLookahead[SparrowScanner]"* + store %"RangeWithLookahead[SparrowScanner]"* %this, %"RangeWithLookahead[SparrowScanner]"** %this.addr br label %code code: ; preds = %0 - %1 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr - %2 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %1, i32 0, i32 1 - call void @dtor.220(%"Vector[Token]"* %2) - %3 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr - %4 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %3, i32 0, i32 0 - call void @dtor.234(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %4) + %1 = load %"RangeWithLookahead[SparrowScanner]"*, %"RangeWithLookahead[SparrowScanner]"** %this.addr + %2 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner]", %"RangeWithLookahead[SparrowScanner]"* %1, i32 0, i32 1 + call void @dtor.263(%"Vector[Token]"* %2) + %3 = load %"RangeWithLookahead[SparrowScanner]"*, %"RangeWithLookahead[SparrowScanner]"** %this.addr + %4 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner]", %"RangeWithLookahead[SparrowScanner]"* %3, i32 0, i32 0 + call void @dtor.277(%SparrowScanner* %4) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.234(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this) #3 { - %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* - store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr +define internal void @dtor.277(%SparrowScanner* %this) #3 { + %this.addr = alloca %SparrowScanner* + store %SparrowScanner* %this, %SparrowScanner** %this.addr br label %code code: ; preds = %0 - %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 2 - call void @dtor.217(%Token* %2) - %3 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %4 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %3, i32 0, i32 1 - call void @dtor.235(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %4) + %1 = load %SparrowScanner*, %SparrowScanner** %this.addr + %2 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %1, i32 0, i32 3 + call void @dtor.260(%Token* %2) + %3 = load %SparrowScanner*, %SparrowScanner** %this.addr + %4 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %3, i32 0, i32 2 + call void @dtor.278(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %4) + %5 = load %SparrowScanner*, %SparrowScanner** %this.addr + %6 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %5, i32 0, i32 1 + call void @dtor.280(%BufferedCharSource* %6) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.235(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this) #3 { - %this.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* - store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr +define internal void @dtor.278(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %this) #3 { + %this.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* + store %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %this.addr br label %code code: ; preds = %0 - %1 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr - %2 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1, i32 0, i32 0 - call void @dtor.236(%"RangeWithLookahead[_CharSource]"* %2) + %1 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %this.addr + %2 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]", %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %1, i32 0, i32 0 + call void @dtor.279(%"RangeWithLookahead[BufferedCharSourceRange]"* %2) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.236(%"RangeWithLookahead[_CharSource]"* %this) #3 { - %this.addr = alloca %"RangeWithLookahead[_CharSource]"* - store %"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"** %this.addr +define internal void @dtor.279(%"RangeWithLookahead[BufferedCharSourceRange]"* %this) #3 { + %this.addr = alloca %"RangeWithLookahead[BufferedCharSourceRange]"* + store %"RangeWithLookahead[BufferedCharSourceRange]"* %this, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr br label %code code: ; preds = %0 - %1 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %2 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %1, i32 0, i32 1 - call void @dtor.224(%"Vector[Char]"* %2) + %1 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %2 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %1, i32 0, i32 1 + call void @dtor.267(%"Vector[Char]"* %2) ret void } -; Function Attrs: inlinehint nounwind -define internal void @dtor.237(%File* %this) #4 { - %this.addr = alloca %File* - store %File* %this, %File** %this.addr +; Function Attrs: alwaysinline nounwind +define internal void @dtor.280(%BufferedCharSource* %this) #3 { + %this.addr = alloca %BufferedCharSource* + store %BufferedCharSource* %this, %BufferedCharSource** %this.addr br label %code code: ; preds = %0 - %1 = load %File*, %File** %this.addr - call void @close(%File* %1) + %1 = load %BufferedCharSource*, %BufferedCharSource** %this.addr + %2 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %1, i32 0, i32 1 + call void @dtor.261(%String* %2) ret void } -; Function Attrs: inlinehint nounwind -define internal void @close(%File* %this) #4 { - %this.addr = alloca %File* - store %File* %this, %File** %this.addr +; Function Attrs: alwaysinline nounwind +define internal void @"=.281"(%ParserContext* %this, %ParserContext* %other) #3 { + %this.addr = alloca %ParserContext* + store %ParserContext* %this, %ParserContext** %this.addr + %other.addr = alloca %ParserContext* + store %ParserContext* %other, %ParserContext** %other.addr br label %code code: ; preds = %0 - br label %if_block - -if_block: ; preds = %code - %1 = load %File*, %File** %this.addr - %2 = call i1 @isOpen(%File* %1) - br i1 %2, label %if_then, label %if_end - -if_then: ; preds = %if_block - %3 = load %File*, %File** %this.addr - %4 = getelementptr inbounds %File, %File* %3, i32 0, i32 0 - %5 = load i8*, i8** %4 - call void @fclose(i8* %5) - br label %if_end - -if_end: ; preds = %if_then, %if_block - %6 = load %File*, %File** %this.addr - %7 = getelementptr inbounds %File, %File* %6, i32 0, i32 0 - store i8* null, i8** %7 - ret void -} - -; Function Attrs: inlinehint nounwind -define internal i1 @isOpen(%File* %this) #4 { - %this.addr = alloca %File* - store %File* %this, %File** %this.addr - br label %code - -code: ; preds = %0 - %1 = load %File*, %File** %this.addr - %2 = getelementptr inbounds %File, %File* %1, i32 0, i32 0 - %3 = load i8*, i8** %2 - %4 = call i1 @implOpRefNE(i8* %3, i8* null) - ret i1 %4 -} - -declare void @fclose(i8*) - -; Function Attrs: alwaysinline nounwind -define internal void @"=.238"(%ParserContext* %this, %ParserContext* %other) #3 { - %this.addr = alloca %ParserContext* - store %ParserContext* %this, %ParserContext** %this.addr - %other.addr = alloca %ParserContext* - store %ParserContext* %other, %ParserContext** %other.addr - br label %code - -code: ; preds = %0 - %1 = load %ParserContext*, %ParserContext** %this.addr - %2 = getelementptr inbounds %ParserContext, %ParserContext* %1, i32 0, i32 0 - %3 = load %ParserContext*, %ParserContext** %other.addr - %4 = getelementptr inbounds %ParserContext, %ParserContext* %3, i32 0, i32 0 - call void @"=.239"(%File* %2, %File* %4) - %5 = load %ParserContext*, %ParserContext** %this.addr - %6 = getelementptr inbounds %ParserContext, %ParserContext* %5, i32 0, i32 1 - %7 = load %ParserContext*, %ParserContext** %other.addr - %8 = getelementptr inbounds %ParserContext, %ParserContext* %7, i32 0, i32 1 - call void @"=.240"(%FileRange* %6, %FileRange* %8) - %9 = load %ParserContext*, %ParserContext** %this.addr - %10 = getelementptr inbounds %ParserContext, %ParserContext* %9, i32 0, i32 2 - %11 = load %ParserContext*, %ParserContext** %other.addr - %12 = getelementptr inbounds %ParserContext, %ParserContext* %11, i32 0, i32 2 - call void @"=.136"(%_CharSource* %10, %_CharSource* %12) - %13 = load %ParserContext*, %ParserContext** %this.addr - %14 = getelementptr inbounds %ParserContext, %ParserContext* %13, i32 0, i32 3 - %15 = load %ParserContext*, %ParserContext** %other.addr - %16 = getelementptr inbounds %ParserContext, %ParserContext* %15, i32 0, i32 3 - call void @"=.241"(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %14, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %16) - %17 = load %ParserContext*, %ParserContext** %this.addr - %18 = getelementptr inbounds %ParserContext, %ParserContext* %17, i32 0, i32 4 - %19 = load %ParserContext*, %ParserContext** %other.addr - %20 = getelementptr inbounds %ParserContext, %ParserContext* %19, i32 0, i32 4 - call void @"=.253"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %18, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %20) - %21 = load %ParserContext*, %ParserContext** %this.addr - %22 = getelementptr inbounds %ParserContext, %ParserContext* %21, i32 0, i32 5 - %23 = load %ParserContext*, %ParserContext** %other.addr - %24 = getelementptr inbounds %ParserContext, %ParserContext* %23, i32 0, i32 5 - call void @"=.259"(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %22, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %24) - ret void -} - -; Function Attrs: inlinehint nounwind -define internal void @"=.239"(%File* %this, %File* %other) #4 { - %this.addr = alloca %File* - store %File* %this, %File** %this.addr - %other.addr = alloca %File* - store %File* %other, %File** %other.addr - br label %code - -code: ; preds = %0 - %1 = load %File*, %File** %other.addr - %2 = getelementptr inbounds %File, %File* %1, i32 0, i32 0 - %3 = load i8*, i8** %2 - %4 = load %File*, %File** %this.addr - %5 = getelementptr inbounds %File, %File* %4, i32 0, i32 0 - store i8* %3, i8** %5 - %6 = load %File*, %File** %other.addr - %7 = getelementptr inbounds %File, %File* %6, i32 0, i32 0 - store i8* null, i8** %7 - ret void -} - -; Function Attrs: alwaysinline nounwind -define internal void @"=.240"(%FileRange* %this, %FileRange* %other) #3 { - %this.addr = alloca %FileRange* - store %FileRange* %this, %FileRange** %this.addr - %other.addr = alloca %FileRange* - store %FileRange* %other, %FileRange** %other.addr - br label %code - -code: ; preds = %0 - %1 = load %FileRange*, %FileRange** %other.addr - %2 = getelementptr inbounds %FileRange, %FileRange* %1, i32 0, i32 0 - %3 = load %File*, %File** %2 - %4 = load %FileRange*, %FileRange** %this.addr - %5 = getelementptr inbounds %FileRange, %FileRange* %4, i32 0, i32 0 - store %File* %3, %File** %5 - %6 = load %FileRange*, %FileRange** %other.addr - %7 = getelementptr inbounds %FileRange, %FileRange* %6, i32 0, i32 1 - %8 = load i1, i1* %7 - %9 = load %FileRange*, %FileRange** %this.addr - %10 = getelementptr inbounds %FileRange, %FileRange* %9, i32 0, i32 1 - store i1 %8, i1* %10 - %11 = load %FileRange*, %FileRange** %other.addr - %12 = getelementptr inbounds %FileRange, %FileRange* %11, i32 0, i32 2 - %13 = load i8, i8* %12 - %14 = load %FileRange*, %FileRange** %this.addr - %15 = getelementptr inbounds %FileRange, %FileRange* %14, i32 0, i32 2 - store i8 %13, i8* %15 - ret void -} - -; Function Attrs: alwaysinline nounwind -define internal void @"=.241"(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %other) #3 { - %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* - store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %other.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* - store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %other, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %other.addr - br label %code - -code: ; preds = %0 - %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 0 - %3 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %other.addr - %4 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %3, i32 0, i32 0 - call void @"=.242"(%Location* %2, %Location* %4) - %5 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %6 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %5, i32 0, i32 1 - %7 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %other.addr - %8 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %7, i32 0, i32 1 - call void @"=.245"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %6, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %8) - %9 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %10 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %9, i32 0, i32 2 - %11 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %other.addr - %12 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %11, i32 0, i32 2 - call void @"=.248"(%Token* %10, %Token* %12) - %13 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %other.addr - %14 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %13, i32 0, i32 3 - %15 = load i1, i1* %14 - %16 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %17 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %16, i32 0, i32 3 - store i1 %15, i1* %17 + %1 = load %ParserContext*, %ParserContext** %this.addr + %2 = getelementptr inbounds %ParserContext, %ParserContext* %1, i32 0, i32 0 + %3 = load %ParserContext*, %ParserContext** %other.addr + %4 = getelementptr inbounds %ParserContext, %ParserContext* %3, i32 0, i32 0 + call void @"=.282"(%SparrowScanner* %2, %SparrowScanner* %4) + %5 = load %ParserContext*, %ParserContext** %this.addr + %6 = getelementptr inbounds %ParserContext, %ParserContext* %5, i32 0, i32 1 + %7 = load %ParserContext*, %ParserContext** %other.addr + %8 = getelementptr inbounds %ParserContext, %ParserContext* %7, i32 0, i32 1 + call void @"=.301"(%"SparrowLayoutDecoder[SparrowScanner]"* %6, %"SparrowLayoutDecoder[SparrowScanner]"* %8) + %9 = load %ParserContext*, %ParserContext** %this.addr + %10 = getelementptr inbounds %ParserContext, %ParserContext* %9, i32 0, i32 2 + %11 = load %ParserContext*, %ParserContext** %other.addr + %12 = getelementptr inbounds %ParserContext, %ParserContext* %11, i32 0, i32 2 + call void @"=.307"(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %10, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %12) + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @"=.282"(%SparrowScanner* %this, %SparrowScanner* %other) #3 { + %this.addr = alloca %SparrowScanner* + store %SparrowScanner* %this, %SparrowScanner** %this.addr + %other.addr = alloca %SparrowScanner* + store %SparrowScanner* %other, %SparrowScanner** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %SparrowScanner*, %SparrowScanner** %this.addr + %2 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %1, i32 0, i32 0 + %3 = load %SparrowScanner*, %SparrowScanner** %other.addr + %4 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %3, i32 0, i32 0 + call void @"=.283"(%Location* %2, %Location* %4) + %5 = load %SparrowScanner*, %SparrowScanner** %this.addr + %6 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %5, i32 0, i32 1 + %7 = load %SparrowScanner*, %SparrowScanner** %other.addr + %8 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %7, i32 0, i32 1 + call void @"=.286"(%BufferedCharSource* %6, %BufferedCharSource* %8) + %9 = load %SparrowScanner*, %SparrowScanner** %this.addr + %10 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %9, i32 0, i32 2 + %11 = load %SparrowScanner*, %SparrowScanner** %other.addr + %12 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %11, i32 0, i32 2 + call void @"=.292"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %10, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %12) + %13 = load %SparrowScanner*, %SparrowScanner** %this.addr + %14 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %13, i32 0, i32 3 + %15 = load %SparrowScanner*, %SparrowScanner** %other.addr + %16 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %15, i32 0, i32 3 + call void @"=.297"(%Token* %14, %Token* %16) + %17 = load %SparrowScanner*, %SparrowScanner** %other.addr + %18 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %17, i32 0, i32 4 + %19 = load i1, i1* %18 + %20 = load %SparrowScanner*, %SparrowScanner** %this.addr + %21 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %20, i32 0, i32 4 + store i1 %19, i1* %21 + %22 = load %SparrowScanner*, %SparrowScanner** %this.addr + %23 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %22, i32 0, i32 5 + %24 = load %SparrowScanner*, %SparrowScanner** %other.addr + %25 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %24, i32 0, i32 5 + call void @"=.299"(%ErrorReporter* %23, %ErrorReporter* %25) + %26 = load %SparrowScanner*, %SparrowScanner** %other.addr + %27 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %26, i32 0, i32 6 + %28 = load i1, i1* %27 + %29 = load %SparrowScanner*, %SparrowScanner** %this.addr + %30 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %29, i32 0, i32 6 + store i1 %28, i1* %30 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @"=.242"(%Location* %this, %Location* %other) #3 { +define internal void @"=.283"(%Location* %this, %Location* %other) #3 { %this.addr = alloca %Location* store %Location* %this, %Location** %this.addr %other.addr = alloca %Location* @@ -7631,22 +8406,22 @@ code: ; preds = %0 %2 = getelementptr inbounds %Location, %Location* %1, i32 0, i32 0 %3 = load %Location*, %Location** %other.addr %4 = getelementptr inbounds %Location, %Location* %3, i32 0, i32 0 - call void @"=.243"(%SourceCode* %2, %SourceCode* %4) + call void @"=.284"(%SourceCode* %2, %SourceCode* %4) %5 = load %Location*, %Location** %this.addr %6 = getelementptr inbounds %Location, %Location* %5, i32 0, i32 1 %7 = load %Location*, %Location** %other.addr %8 = getelementptr inbounds %Location, %Location* %7, i32 0, i32 1 - call void @"=.244"(%LineCol* %6, %LineCol* %8) + call void @"=.285"(%LineCol* %6, %LineCol* %8) %9 = load %Location*, %Location** %this.addr %10 = getelementptr inbounds %Location, %Location* %9, i32 0, i32 2 %11 = load %Location*, %Location** %other.addr %12 = getelementptr inbounds %Location, %Location* %11, i32 0, i32 2 - call void @"=.244"(%LineCol* %10, %LineCol* %12) + call void @"=.285"(%LineCol* %10, %LineCol* %12) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @"=.243"(%SourceCode* %this, %SourceCode* %other) #3 { +define internal void @"=.284"(%SourceCode* %this, %SourceCode* %other) #3 { %this.addr = alloca %SourceCode* store %SourceCode* %this, %SourceCode** %this.addr %other.addr = alloca %SourceCode* @@ -7664,7 +8439,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.244"(%LineCol* %this, %LineCol* %other) #3 { +define internal void @"=.285"(%LineCol* %this, %LineCol* %other) #3 { %this.addr = alloca %LineCol* store %LineCol* %this, %LineCol** %this.addr %other.addr = alloca %LineCol* @@ -7688,52 +8463,233 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.245"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %other) #3 { - %this.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* - store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr - %other.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* - store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %other, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %other.addr +define internal void @"=.286"(%BufferedCharSource* %this, %BufferedCharSource* %other) #3 { + %this.addr = alloca %BufferedCharSource* + store %BufferedCharSource* %this, %BufferedCharSource** %this.addr + %other.addr = alloca %BufferedCharSource* + store %BufferedCharSource* %other, %BufferedCharSource** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %BufferedCharSource*, %BufferedCharSource** %this.addr + %2 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %1, i32 0, i32 0 + %3 = load %BufferedCharSource*, %BufferedCharSource** %other.addr + %4 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %3, i32 0, i32 0 + call void @"=.287"(%CharSource* %2, %CharSource* %4) + %5 = load %BufferedCharSource*, %BufferedCharSource** %this.addr + %6 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %5, i32 0, i32 1 + %7 = load %BufferedCharSource*, %BufferedCharSource** %other.addr + %8 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %7, i32 0, i32 1 + %9 = call %String* @"=.290"(%String* %6, %String* %8) + %10 = load %BufferedCharSource*, %BufferedCharSource** %other.addr + %11 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %10, i32 0, i32 2 + %12 = load i32, i32* %11 + %13 = load %BufferedCharSource*, %BufferedCharSource** %this.addr + %14 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %13, i32 0, i32 2 + store i32 %12, i32* %14 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @"=.287"(%CharSource* %this, %CharSource* %other) #3 { + %this.addr = alloca %CharSource* + store %CharSource* %this, %CharSource** %this.addr + %other.addr = alloca %CharSource* + store %CharSource* %other, %CharSource** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %CharSource*, %CharSource** %this.addr + %2 = getelementptr inbounds %CharSource, %CharSource* %1, i32 0, i32 0 + %3 = load %CharSource*, %CharSource** %other.addr + %4 = getelementptr inbounds %CharSource, %CharSource* %3, i32 0, i32 0 + call void @"=.288"(%UntypedPtr* %2, %UntypedPtr* %4) + %5 = load %CharSource*, %CharSource** %this.addr + %6 = getelementptr inbounds %CharSource, %CharSource* %5, i32 0, i32 1 + %7 = load %CharSource*, %CharSource** %other.addr + %8 = getelementptr inbounds %CharSource, %CharSource* %7, i32 0, i32 1 + call void @"=.289"(%"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %6, %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %8) + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @"=.288"(%UntypedPtr* %this, %UntypedPtr* %other) #3 { + %this.addr = alloca %UntypedPtr* + store %UntypedPtr* %this, %UntypedPtr** %this.addr + %other.addr = alloca %UntypedPtr* + store %UntypedPtr* %other, %UntypedPtr** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %UntypedPtr*, %UntypedPtr** %other.addr + %2 = getelementptr inbounds %UntypedPtr, %UntypedPtr* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %UntypedPtr*, %UntypedPtr** %this.addr + %5 = getelementptr inbounds %UntypedPtr, %UntypedPtr* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @"=.289"(%"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %this, %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* + store %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %this, %"FunctionPtr3[Void, UntypedPtr, @String, Int]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* + store %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %other, %"FunctionPtr3[Void, UntypedPtr, @String, Int]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Void, UntypedPtr, @String, Int]"*, %"FunctionPtr3[Void, UntypedPtr, @String, Int]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr3[Void, UntypedPtr, @String, Int]", %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Void, UntypedPtr, @String, Int]"*, %"FunctionPtr3[Void, UntypedPtr, @String, Int]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr3[Void, UntypedPtr, @String, Int]", %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} + +; Function Attrs: inlinehint nounwind +define internal %String* @"=.290"(%String* %this, %String* %other) #4 { + %this.addr = alloca %String* + store %String* %this, %String** %this.addr + %other.addr = alloca %String* + store %String* %other, %String** %other.addr + %tmp = alloca %String + br label %code + +code: ; preds = %0 + %1 = load %String*, %String** %other.addr + call void @ctor.189(%String* %tmp, %String* %1) + %2 = load %String*, %String** %this.addr + call void @swap(%String* %tmp, %String* %2) + %3 = load %String*, %String** %this.addr + call void @dtor.261(%String* %tmp) + ret %String* %3 + +dumy_block: ; No predecessors! + call void @dtor.261(%String* %tmp) + unreachable +} + +; Function Attrs: inlinehint nounwind +define internal void @swap(%String* %this, %String* %other) #4 { + %this.addr = alloca %String* + store %String* %this, %String** %this.addr + %other.addr = alloca %String* + store %String* %other, %String** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %String*, %String** %this.addr + %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 0 + %3 = load %String*, %String** %other.addr + %4 = getelementptr inbounds %String, %String* %3, i32 0, i32 0 + call void @swap.291(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) + %5 = load %String*, %String** %this.addr + %6 = getelementptr inbounds %String, %String* %5, i32 0, i32 1 + %7 = load %String*, %String** %other.addr + %8 = getelementptr inbounds %String, %String* %7, i32 0, i32 1 + call void @swap.291(%"RawPtr[Char]"* %6, %"RawPtr[Char]"* %8) + %9 = load %String*, %String** %this.addr + %10 = getelementptr inbounds %String, %String* %9, i32 0, i32 2 + %11 = load %String*, %String** %other.addr + %12 = getelementptr inbounds %String, %String* %11, i32 0, i32 2 + call void @swap.291(%"RawPtr[Char]"* %10, %"RawPtr[Char]"* %12) + ret void +} + +; Function Attrs: inlinehint nounwind +define internal void @swap.291(%"RawPtr[Char]"* %this, %"RawPtr[Char]"* %other) #4 { + %this.addr = alloca %"RawPtr[Char]"* + store %"RawPtr[Char]"* %this, %"RawPtr[Char]"** %this.addr + %other.addr = alloca %"RawPtr[Char]"* + store %"RawPtr[Char]"* %other, %"RawPtr[Char]"** %other.addr + %t = alloca i8* + br label %code + +code: ; preds = %0 + %1 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %this.addr + %2 = getelementptr inbounds %"RawPtr[Char]", %"RawPtr[Char]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + store i8* %3, i8** %t + %4 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %other.addr + %5 = getelementptr inbounds %"RawPtr[Char]", %"RawPtr[Char]"* %4, i32 0, i32 0 + %6 = load i8*, i8** %5 + %7 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %this.addr + %8 = getelementptr inbounds %"RawPtr[Char]", %"RawPtr[Char]"* %7, i32 0, i32 0 + store i8* %6, i8** %8 + %9 = load i8*, i8** %t + %10 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %other.addr + %11 = getelementptr inbounds %"RawPtr[Char]", %"RawPtr[Char]"* %10, i32 0, i32 0 + store i8* %9, i8** %11 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @"=.292"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %other) #3 { + %this.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* + store %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %this.addr + %other.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* + store %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %other, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %other.addr br label %code code: ; preds = %0 - %1 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr - %2 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1, i32 0, i32 0 - %3 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %other.addr - %4 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %3, i32 0, i32 0 - call void @"=.246"(%"RangeWithLookahead[_CharSource]"* %2, %"RangeWithLookahead[_CharSource]"* %4) - %5 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %other.addr - %6 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5, i32 0, i32 1 + %1 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %this.addr + %2 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]", %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %1, i32 0, i32 0 + %3 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %other.addr + %4 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]", %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %3, i32 0, i32 0 + call void @"=.293"(%"RangeWithLookahead[BufferedCharSourceRange]"* %2, %"RangeWithLookahead[BufferedCharSourceRange]"* %4) + %5 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %other.addr + %6 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]", %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %5, i32 0, i32 1 %7 = load %Location*, %Location** %6 - %8 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr - %9 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %8, i32 0, i32 1 + %8 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %this.addr + %9 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]", %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %8, i32 0, i32 1 store %Location* %7, %Location** %9 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @"=.246"(%"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"* %other) #3 { - %this.addr = alloca %"RangeWithLookahead[_CharSource]"* - store %"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"** %this.addr - %other.addr = alloca %"RangeWithLookahead[_CharSource]"* - store %"RangeWithLookahead[_CharSource]"* %other, %"RangeWithLookahead[_CharSource]"** %other.addr +define internal void @"=.293"(%"RangeWithLookahead[BufferedCharSourceRange]"* %this, %"RangeWithLookahead[BufferedCharSourceRange]"* %other) #3 { + %this.addr = alloca %"RangeWithLookahead[BufferedCharSourceRange]"* + store %"RangeWithLookahead[BufferedCharSourceRange]"* %this, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %other.addr = alloca %"RangeWithLookahead[BufferedCharSourceRange]"* + store %"RangeWithLookahead[BufferedCharSourceRange]"* %other, %"RangeWithLookahead[BufferedCharSourceRange]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %2 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %1, i32 0, i32 0 + %3 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %other.addr + %4 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %3, i32 0, i32 0 + call void @"=.294"(%BufferedCharSourceRange* %2, %BufferedCharSourceRange* %4) + %5 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %6 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %5, i32 0, i32 1 + %7 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %other.addr + %8 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %7, i32 0, i32 1 + %9 = call %"Vector[Char]"** @"=.295"(%"Vector[Char]"* %6, %"Vector[Char]"* %8) + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @"=.294"(%BufferedCharSourceRange* %this, %BufferedCharSourceRange* %other) #3 { + %this.addr = alloca %BufferedCharSourceRange* + store %BufferedCharSourceRange* %this, %BufferedCharSourceRange** %this.addr + %other.addr = alloca %BufferedCharSourceRange* + store %BufferedCharSourceRange* %other, %BufferedCharSourceRange** %other.addr br label %code code: ; preds = %0 - %1 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %2 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %1, i32 0, i32 0 - %3 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %other.addr - %4 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %3, i32 0, i32 0 - call void @"=.136"(%_CharSource* %2, %_CharSource* %4) - %5 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %6 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %5, i32 0, i32 1 - %7 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %other.addr - %8 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %7, i32 0, i32 1 - %9 = call %"Vector[Char]"** @"=.247"(%"Vector[Char]"* %6, %"Vector[Char]"* %8) + %1 = load %BufferedCharSourceRange*, %BufferedCharSourceRange** %other.addr + %2 = getelementptr inbounds %BufferedCharSourceRange, %BufferedCharSourceRange* %1, i32 0, i32 0 + %3 = load %BufferedCharSource*, %BufferedCharSource** %2 + %4 = load %BufferedCharSourceRange*, %BufferedCharSourceRange** %this.addr + %5 = getelementptr inbounds %BufferedCharSourceRange, %BufferedCharSourceRange* %4, i32 0, i32 0 + store %BufferedCharSource* %3, %BufferedCharSource** %5 ret void } ; Function Attrs: inlinehint nounwind -define internal %"Vector[Char]"** @"=.247"(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #4 { +define internal %"Vector[Char]"** @"=.295"(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #4 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr %other.addr = alloca %"Vector[Char]"* @@ -7743,19 +8699,19 @@ define internal %"Vector[Char]"** @"=.247"(%"Vector[Char]"* %this, %"Vector[Char code: ; preds = %0 %1 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr - call void @ctor.176(%"Vector[Char]"* %tmp, %"Vector[Char]"* %1) + call void @ctor.198(%"Vector[Char]"* %tmp, %"Vector[Char]"* %1) %2 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - call void @swap(%"Vector[Char]"* %tmp, %"Vector[Char]"* %2) - call void @dtor.224(%"Vector[Char]"* %tmp) + call void @swap.296(%"Vector[Char]"* %tmp, %"Vector[Char]"* %2) + call void @dtor.267(%"Vector[Char]"* %tmp) ret %"Vector[Char]"** %this.addr dumy_block: ; No predecessors! - call void @dtor.224(%"Vector[Char]"* %tmp) + call void @dtor.267(%"Vector[Char]"* %tmp) unreachable } ; Function Attrs: inlinehint nounwind -define internal void @swap(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #4 { +define internal void @swap.296(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #4 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr %other.addr = alloca %"Vector[Char]"* @@ -7766,42 +8722,42 @@ define internal void @swap(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #4 { code: ; preds = %0 %1 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %2 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %1, i32 0, i32 0 - call void @ctor.181(%"RawPtr[Char]"* %tmp, %"RawPtr[Char]"* %2) + call void @ctor.192(%"RawPtr[Char]"* %tmp, %"RawPtr[Char]"* %2) %3 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %4 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %3, i32 0, i32 0 %5 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr %6 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %5, i32 0, i32 0 - call void @"=.178"(%"RawPtr[Char]"* %4, %"RawPtr[Char]"* %6) + call void @"=.200"(%"RawPtr[Char]"* %4, %"RawPtr[Char]"* %6) %7 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr %8 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %7, i32 0, i32 0 - call void @"=.178"(%"RawPtr[Char]"* %8, %"RawPtr[Char]"* %tmp) + call void @"=.200"(%"RawPtr[Char]"* %8, %"RawPtr[Char]"* %tmp) %9 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %10 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %9, i32 0, i32 1 - call void @"=.178"(%"RawPtr[Char]"* %tmp, %"RawPtr[Char]"* %10) + call void @"=.200"(%"RawPtr[Char]"* %tmp, %"RawPtr[Char]"* %10) %11 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %12 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %11, i32 0, i32 1 %13 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr %14 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %13, i32 0, i32 1 - call void @"=.178"(%"RawPtr[Char]"* %12, %"RawPtr[Char]"* %14) + call void @"=.200"(%"RawPtr[Char]"* %12, %"RawPtr[Char]"* %14) %15 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr %16 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %15, i32 0, i32 1 - call void @"=.178"(%"RawPtr[Char]"* %16, %"RawPtr[Char]"* %tmp) + call void @"=.200"(%"RawPtr[Char]"* %16, %"RawPtr[Char]"* %tmp) %17 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %18 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %17, i32 0, i32 2 - call void @"=.178"(%"RawPtr[Char]"* %tmp, %"RawPtr[Char]"* %18) + call void @"=.200"(%"RawPtr[Char]"* %tmp, %"RawPtr[Char]"* %18) %19 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %20 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %19, i32 0, i32 2 %21 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr %22 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %21, i32 0, i32 2 - call void @"=.178"(%"RawPtr[Char]"* %20, %"RawPtr[Char]"* %22) + call void @"=.200"(%"RawPtr[Char]"* %20, %"RawPtr[Char]"* %22) %23 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr %24 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %23, i32 0, i32 2 - call void @"=.178"(%"RawPtr[Char]"* %24, %"RawPtr[Char]"* %tmp) + call void @"=.200"(%"RawPtr[Char]"* %24, %"RawPtr[Char]"* %tmp) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @"=.248"(%Token* %this, %Token* %other) #3 { +define internal void @"=.297"(%Token* %this, %Token* %other) #3 { %this.addr = alloca %Token* store %Token* %this, %Token** %this.addr %other.addr = alloca %Token* @@ -7813,17 +8769,17 @@ code: ; preds = %0 %2 = getelementptr inbounds %Token, %Token* %1, i32 0, i32 0 %3 = load %Token*, %Token** %other.addr %4 = getelementptr inbounds %Token, %Token* %3, i32 0, i32 0 - call void @"=.242"(%Location* %2, %Location* %4) + call void @"=.283"(%Location* %2, %Location* %4) %5 = load %Token*, %Token** %this.addr %6 = getelementptr inbounds %Token, %Token* %5, i32 0, i32 1 %7 = load %Token*, %Token** %other.addr %8 = getelementptr inbounds %Token, %Token* %7, i32 0, i32 1 - call void @"=.249"(%TokenType* %6, %TokenType* %8) + call void @"=.298"(%TokenType* %6, %TokenType* %8) %9 = load %Token*, %Token** %this.addr %10 = getelementptr inbounds %Token, %Token* %9, i32 0, i32 2 %11 = load %Token*, %Token** %other.addr %12 = getelementptr inbounds %Token, %Token* %11, i32 0, i32 2 - %13 = call %String* @"=.250"(%String* %10, %String* %12) + %13 = call %String* @"=.290"(%String* %10, %String* %12) %14 = load %Token*, %Token** %other.addr %15 = getelementptr inbounds %Token, %Token* %14, i32 0, i32 3 %16 = load i64, i64* %15 @@ -7840,7 +8796,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.249"(%TokenType* %this, %TokenType* %other) #3 { +define internal void @"=.298"(%TokenType* %this, %TokenType* %other) #3 { %this.addr = alloca %TokenType* store %TokenType* %this, %TokenType** %this.addr %other.addr = alloca %TokenType* @@ -7857,145 +8813,113 @@ code: ; preds = %0 ret void } -; Function Attrs: inlinehint nounwind -define internal %String* @"=.250"(%String* %this, %String* %other) #4 { - %this.addr = alloca %String* - store %String* %this, %String** %this.addr - %other.addr = alloca %String* - store %String* %other, %String** %other.addr - %tmp = alloca %String +; Function Attrs: alwaysinline nounwind +define internal void @"=.299"(%ErrorReporter* %this, %ErrorReporter* %other) #3 { + %this.addr = alloca %ErrorReporter* + store %ErrorReporter* %this, %ErrorReporter** %this.addr + %other.addr = alloca %ErrorReporter* + store %ErrorReporter* %other, %ErrorReporter** %other.addr br label %code code: ; preds = %0 - %1 = load %String*, %String** %other.addr - call void @ctor.184(%String* %tmp, %String* %1) - %2 = load %String*, %String** %this.addr - call void @swap.251(%String* %tmp, %String* %2) - %3 = load %String*, %String** %this.addr - call void @dtor.218(%String* %tmp) - ret %String* %3 + %1 = load %ErrorReporter*, %ErrorReporter** %this.addr + %2 = getelementptr inbounds %ErrorReporter, %ErrorReporter* %1, i32 0, i32 0 + %3 = load %ErrorReporter*, %ErrorReporter** %other.addr + %4 = getelementptr inbounds %ErrorReporter, %ErrorReporter* %3, i32 0, i32 0 + call void @"=.288"(%UntypedPtr* %2, %UntypedPtr* %4) + %5 = load %ErrorReporter*, %ErrorReporter** %this.addr + %6 = getelementptr inbounds %ErrorReporter, %ErrorReporter* %5, i32 0, i32 1 + %7 = load %ErrorReporter*, %ErrorReporter** %other.addr + %8 = getelementptr inbounds %ErrorReporter, %ErrorReporter* %7, i32 0, i32 1 + call void @"=.300"(%"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* %6, %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* %8) + ret void +} -dumy_block: ; No predecessors! - call void @dtor.218(%String* %tmp) - unreachable +; Function Attrs: alwaysinline nounwind +define internal void @"=.300"(%"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* %this, %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* + store %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* %this, %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* + store %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* %other, %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"*, %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]", %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"*, %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]", %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void } -; Function Attrs: inlinehint nounwind -define internal void @swap.251(%String* %this, %String* %other) #4 { - %this.addr = alloca %String* - store %String* %this, %String** %this.addr - %other.addr = alloca %String* - store %String* %other, %String** %other.addr +; Function Attrs: alwaysinline nounwind +define internal void @"=.301"(%"SparrowLayoutDecoder[SparrowScanner]"* %this, %"SparrowLayoutDecoder[SparrowScanner]"* %other) #3 { + %this.addr = alloca %"SparrowLayoutDecoder[SparrowScanner]"* + store %"SparrowLayoutDecoder[SparrowScanner]"* %this, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %other.addr = alloca %"SparrowLayoutDecoder[SparrowScanner]"* + store %"SparrowLayoutDecoder[SparrowScanner]"* %other, %"SparrowLayoutDecoder[SparrowScanner]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %2 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %1, i32 0, i32 0 + %3 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %other.addr + %4 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %3, i32 0, i32 0 + call void @"=.302"(%"RangeWithLookahead[SparrowScanner]"* %2, %"RangeWithLookahead[SparrowScanner]"* %4) + %5 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %6 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %5, i32 0, i32 1 + %7 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %other.addr + %8 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %7, i32 0, i32 1 + call void @"=.299"(%ErrorReporter* %6, %ErrorReporter* %8) + %9 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %10 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %9, i32 0, i32 2 + %11 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %other.addr + %12 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %11, i32 0, i32 2 + %13 = call %"Vector[UInt]"** @"=.305"(%"Vector[UInt]"* %10, %"Vector[UInt]"* %12) + %14 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %15 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %14, i32 0, i32 3 + %16 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %other.addr + %17 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %16, i32 0, i32 3 + %18 = call %"Vector[Char]"** @"=.295"(%"Vector[Char]"* %15, %"Vector[Char]"* %17) + %19 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %20 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %19, i32 0, i32 4 + %21 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %other.addr + %22 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %21, i32 0, i32 4 + call void @"=.298"(%TokenType* %20, %TokenType* %22) + %23 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %other.addr + %24 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %23, i32 0, i32 5 + %25 = load i32, i32* %24 + %26 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %27 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %26, i32 0, i32 5 + store i32 %25, i32* %27 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @"=.302"(%"RangeWithLookahead[SparrowScanner]"* %this, %"RangeWithLookahead[SparrowScanner]"* %other) #3 { + %this.addr = alloca %"RangeWithLookahead[SparrowScanner]"* + store %"RangeWithLookahead[SparrowScanner]"* %this, %"RangeWithLookahead[SparrowScanner]"** %this.addr + %other.addr = alloca %"RangeWithLookahead[SparrowScanner]"* + store %"RangeWithLookahead[SparrowScanner]"* %other, %"RangeWithLookahead[SparrowScanner]"** %other.addr br label %code code: ; preds = %0 - %1 = load %String*, %String** %this.addr - %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 0 - %3 = load %String*, %String** %other.addr - %4 = getelementptr inbounds %String, %String* %3, i32 0, i32 0 - call void @swap.252(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) - %5 = load %String*, %String** %this.addr - %6 = getelementptr inbounds %String, %String* %5, i32 0, i32 1 - %7 = load %String*, %String** %other.addr - %8 = getelementptr inbounds %String, %String* %7, i32 0, i32 1 - call void @swap.252(%"RawPtr[Char]"* %6, %"RawPtr[Char]"* %8) - %9 = load %String*, %String** %this.addr - %10 = getelementptr inbounds %String, %String* %9, i32 0, i32 2 - %11 = load %String*, %String** %other.addr - %12 = getelementptr inbounds %String, %String* %11, i32 0, i32 2 - call void @swap.252(%"RawPtr[Char]"* %10, %"RawPtr[Char]"* %12) + %1 = load %"RangeWithLookahead[SparrowScanner]"*, %"RangeWithLookahead[SparrowScanner]"** %this.addr + %2 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner]", %"RangeWithLookahead[SparrowScanner]"* %1, i32 0, i32 0 + %3 = load %"RangeWithLookahead[SparrowScanner]"*, %"RangeWithLookahead[SparrowScanner]"** %other.addr + %4 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner]", %"RangeWithLookahead[SparrowScanner]"* %3, i32 0, i32 0 + call void @"=.282"(%SparrowScanner* %2, %SparrowScanner* %4) + %5 = load %"RangeWithLookahead[SparrowScanner]"*, %"RangeWithLookahead[SparrowScanner]"** %this.addr + %6 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner]", %"RangeWithLookahead[SparrowScanner]"* %5, i32 0, i32 1 + %7 = load %"RangeWithLookahead[SparrowScanner]"*, %"RangeWithLookahead[SparrowScanner]"** %other.addr + %8 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner]", %"RangeWithLookahead[SparrowScanner]"* %7, i32 0, i32 1 + %9 = call %"Vector[Token]"** @"=.303"(%"Vector[Token]"* %6, %"Vector[Token]"* %8) ret void } ; Function Attrs: inlinehint nounwind -define internal void @swap.252(%"RawPtr[Char]"* %this, %"RawPtr[Char]"* %other) #4 { - %this.addr = alloca %"RawPtr[Char]"* - store %"RawPtr[Char]"* %this, %"RawPtr[Char]"** %this.addr - %other.addr = alloca %"RawPtr[Char]"* - store %"RawPtr[Char]"* %other, %"RawPtr[Char]"** %other.addr - %t = alloca i8* - br label %code - -code: ; preds = %0 - %1 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %this.addr - %2 = getelementptr inbounds %"RawPtr[Char]", %"RawPtr[Char]"* %1, i32 0, i32 0 - %3 = load i8*, i8** %2 - store i8* %3, i8** %t - %4 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %other.addr - %5 = getelementptr inbounds %"RawPtr[Char]", %"RawPtr[Char]"* %4, i32 0, i32 0 - %6 = load i8*, i8** %5 - %7 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %this.addr - %8 = getelementptr inbounds %"RawPtr[Char]", %"RawPtr[Char]"* %7, i32 0, i32 0 - store i8* %6, i8** %8 - %9 = load i8*, i8** %t - %10 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %other.addr - %11 = getelementptr inbounds %"RawPtr[Char]", %"RawPtr[Char]"* %10, i32 0, i32 0 - store i8* %9, i8** %11 - ret void -} - -; Function Attrs: alwaysinline nounwind -define internal void @"=.253"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %other) #3 { - %this.addr = alloca %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %other.addr = alloca %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %other, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr - br label %code - -code: ; preds = %0 - %1 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 0 - %3 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr - %4 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %3, i32 0, i32 0 - call void @"=.254"(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %2, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %4) - %5 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %6 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 2 - %7 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr - %8 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %7, i32 0, i32 2 - %9 = call %"Vector[UInt]"** @"=.257"(%"Vector[UInt]"* %6, %"Vector[UInt]"* %8) - %10 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %11 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %10, i32 0, i32 3 - %12 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr - %13 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %12, i32 0, i32 3 - %14 = call %"Vector[Char]"** @"=.247"(%"Vector[Char]"* %11, %"Vector[Char]"* %13) - %15 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %16 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %15, i32 0, i32 4 - %17 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr - %18 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %17, i32 0, i32 4 - call void @"=.249"(%TokenType* %16, %TokenType* %18) - %19 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr - %20 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %19, i32 0, i32 5 - %21 = load i32, i32* %20 - %22 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %23 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %22, i32 0, i32 5 - store i32 %21, i32* %23 - ret void -} - -; Function Attrs: alwaysinline nounwind -define internal void @"=.254"(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %other) #3 { - %this.addr = alloca %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* - store %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr - %other.addr = alloca %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* - store %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %other, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %other.addr - br label %code - -code: ; preds = %0 - %1 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr - %2 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %1, i32 0, i32 0 - %3 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %other.addr - %4 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %3, i32 0, i32 0 - call void @"=.241"(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %2, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %4) - %5 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr - %6 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %5, i32 0, i32 1 - %7 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %other.addr - %8 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %7, i32 0, i32 1 - %9 = call %"Vector[Token]"** @"=.255"(%"Vector[Token]"* %6, %"Vector[Token]"* %8) - ret void -} - -; Function Attrs: inlinehint nounwind -define internal %"Vector[Token]"** @"=.255"(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #4 { +define internal %"Vector[Token]"** @"=.303"(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #4 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr %other.addr = alloca %"Vector[Token]"* @@ -8005,19 +8929,19 @@ define internal %"Vector[Token]"** @"=.255"(%"Vector[Token]"* %this, %"Vector[To code: ; preds = %0 %1 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr - call void @ctor.190(%"Vector[Token]"* %tmp, %"Vector[Token]"* %1) + call void @ctor.208(%"Vector[Token]"* %tmp, %"Vector[Token]"* %1) %2 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr - call void @swap.256(%"Vector[Token]"* %tmp, %"Vector[Token]"* %2) - call void @dtor.220(%"Vector[Token]"* %tmp) + call void @swap.304(%"Vector[Token]"* %tmp, %"Vector[Token]"* %2) + call void @dtor.263(%"Vector[Token]"* %tmp) ret %"Vector[Token]"** %this.addr dumy_block: ; No predecessors! - call void @dtor.220(%"Vector[Token]"* %tmp) + call void @dtor.263(%"Vector[Token]"* %tmp) unreachable } ; Function Attrs: inlinehint nounwind -define internal void @swap.256(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #4 { +define internal void @swap.304(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #4 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr %other.addr = alloca %"Vector[Token]"* @@ -8028,42 +8952,42 @@ define internal void @swap.256(%"Vector[Token]"* %this, %"Vector[Token]"* %other code: ; preds = %0 %1 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %2 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %1, i32 0, i32 0 - call void @ctor.199(%"RawPtr[Token]"* %tmp, %"RawPtr[Token]"* %2) + call void @ctor.217(%"RawPtr[Token]"* %tmp, %"RawPtr[Token]"* %2) %3 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %4 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %3, i32 0, i32 0 %5 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr %6 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %5, i32 0, i32 0 - call void @"=.194"(%"RawPtr[Token]"* %4, %"RawPtr[Token]"* %6) + call void @"=.212"(%"RawPtr[Token]"* %4, %"RawPtr[Token]"* %6) %7 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr %8 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %7, i32 0, i32 0 - call void @"=.194"(%"RawPtr[Token]"* %8, %"RawPtr[Token]"* %tmp) + call void @"=.212"(%"RawPtr[Token]"* %8, %"RawPtr[Token]"* %tmp) %9 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %10 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %9, i32 0, i32 1 - call void @"=.194"(%"RawPtr[Token]"* %tmp, %"RawPtr[Token]"* %10) + call void @"=.212"(%"RawPtr[Token]"* %tmp, %"RawPtr[Token]"* %10) %11 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %12 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %11, i32 0, i32 1 %13 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr %14 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %13, i32 0, i32 1 - call void @"=.194"(%"RawPtr[Token]"* %12, %"RawPtr[Token]"* %14) + call void @"=.212"(%"RawPtr[Token]"* %12, %"RawPtr[Token]"* %14) %15 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr %16 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %15, i32 0, i32 1 - call void @"=.194"(%"RawPtr[Token]"* %16, %"RawPtr[Token]"* %tmp) + call void @"=.212"(%"RawPtr[Token]"* %16, %"RawPtr[Token]"* %tmp) %17 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %18 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %17, i32 0, i32 2 - call void @"=.194"(%"RawPtr[Token]"* %tmp, %"RawPtr[Token]"* %18) + call void @"=.212"(%"RawPtr[Token]"* %tmp, %"RawPtr[Token]"* %18) %19 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %20 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %19, i32 0, i32 2 %21 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr %22 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %21, i32 0, i32 2 - call void @"=.194"(%"RawPtr[Token]"* %20, %"RawPtr[Token]"* %22) + call void @"=.212"(%"RawPtr[Token]"* %20, %"RawPtr[Token]"* %22) %23 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr %24 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %23, i32 0, i32 2 - call void @"=.194"(%"RawPtr[Token]"* %24, %"RawPtr[Token]"* %tmp) + call void @"=.212"(%"RawPtr[Token]"* %24, %"RawPtr[Token]"* %tmp) ret void } ; Function Attrs: inlinehint nounwind -define internal %"Vector[UInt]"** @"=.257"(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #4 { +define internal %"Vector[UInt]"** @"=.305"(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #4 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr %other.addr = alloca %"Vector[UInt]"* @@ -8073,19 +8997,19 @@ define internal %"Vector[UInt]"** @"=.257"(%"Vector[UInt]"* %this, %"Vector[UInt code: ; preds = %0 %1 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr - call void @ctor.203(%"Vector[UInt]"* %tmp, %"Vector[UInt]"* %1) + call void @ctor.221(%"Vector[UInt]"* %tmp, %"Vector[UInt]"* %1) %2 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr - call void @swap.258(%"Vector[UInt]"* %tmp, %"Vector[UInt]"* %2) - call void @dtor.227(%"Vector[UInt]"* %tmp) + call void @swap.306(%"Vector[UInt]"* %tmp, %"Vector[UInt]"* %2) + call void @dtor.270(%"Vector[UInt]"* %tmp) ret %"Vector[UInt]"** %this.addr dumy_block: ; No predecessors! - call void @dtor.227(%"Vector[UInt]"* %tmp) + call void @dtor.270(%"Vector[UInt]"* %tmp) unreachable } ; Function Attrs: inlinehint nounwind -define internal void @swap.258(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #4 { +define internal void @swap.306(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #4 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr %other.addr = alloca %"Vector[UInt]"* @@ -8096,337 +9020,904 @@ define internal void @swap.258(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) code: ; preds = %0 %1 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %2 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %1, i32 0, i32 0 - call void @ctor.212(%"RawPtr[UInt]"* %tmp, %"RawPtr[UInt]"* %2) + call void @ctor.230(%"RawPtr[UInt]"* %tmp, %"RawPtr[UInt]"* %2) %3 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %4 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %3, i32 0, i32 0 %5 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr %6 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %5, i32 0, i32 0 - call void @"=.207"(%"RawPtr[UInt]"* %4, %"RawPtr[UInt]"* %6) + call void @"=.225"(%"RawPtr[UInt]"* %4, %"RawPtr[UInt]"* %6) %7 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr %8 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %7, i32 0, i32 0 - call void @"=.207"(%"RawPtr[UInt]"* %8, %"RawPtr[UInt]"* %tmp) + call void @"=.225"(%"RawPtr[UInt]"* %8, %"RawPtr[UInt]"* %tmp) %9 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %10 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %9, i32 0, i32 1 - call void @"=.207"(%"RawPtr[UInt]"* %tmp, %"RawPtr[UInt]"* %10) + call void @"=.225"(%"RawPtr[UInt]"* %tmp, %"RawPtr[UInt]"* %10) %11 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %12 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %11, i32 0, i32 1 %13 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr %14 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %13, i32 0, i32 1 - call void @"=.207"(%"RawPtr[UInt]"* %12, %"RawPtr[UInt]"* %14) + call void @"=.225"(%"RawPtr[UInt]"* %12, %"RawPtr[UInt]"* %14) %15 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr %16 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %15, i32 0, i32 1 - call void @"=.207"(%"RawPtr[UInt]"* %16, %"RawPtr[UInt]"* %tmp) + call void @"=.225"(%"RawPtr[UInt]"* %16, %"RawPtr[UInt]"* %tmp) %17 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %18 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %17, i32 0, i32 2 - call void @"=.207"(%"RawPtr[UInt]"* %tmp, %"RawPtr[UInt]"* %18) + call void @"=.225"(%"RawPtr[UInt]"* %tmp, %"RawPtr[UInt]"* %18) %19 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %20 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %19, i32 0, i32 2 %21 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr %22 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %21, i32 0, i32 2 - call void @"=.207"(%"RawPtr[UInt]"* %20, %"RawPtr[UInt]"* %22) + call void @"=.225"(%"RawPtr[UInt]"* %20, %"RawPtr[UInt]"* %22) %23 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr %24 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %23, i32 0, i32 2 - call void @"=.207"(%"RawPtr[UInt]"* %24, %"RawPtr[UInt]"* %tmp) + call void @"=.225"(%"RawPtr[UInt]"* %24, %"RawPtr[UInt]"* %tmp) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @"=.259"(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %other) #3 { - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %other.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %other, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %other.addr +define internal void @"=.307"(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %other) #3 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %other.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %other, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %other.addr br label %code code: ; preds = %0 - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 0 - %3 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %other.addr - %4 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %3, i32 0, i32 0 - call void @"=.260"(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %2, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %4) - %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 1 - %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %other.addr - %8 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %7, i32 0, i32 1 - call void @"=.248"(%Token* %6, %Token* %8) - %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %other.addr - %10 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9, i32 0, i32 2 + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, i32 0, i32 0 + %3 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %other.addr + %4 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %3, i32 0, i32 0 + call void @"=.308"(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %2, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %4) + %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %5, i32 0, i32 1 + %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %other.addr + %8 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %7, i32 0, i32 1 + call void @"=.297"(%Token* %6, %Token* %8) + %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %other.addr + %10 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %9, i32 0, i32 2 %11 = load i1, i1* %10 - %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %13 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %12, i32 0, i32 2 + %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %13 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %12, i32 0, i32 2 store i1 %11, i1* %13 + %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %15 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %14, i32 0, i32 3 + %16 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %other.addr + %17 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %16, i32 0, i32 3 + call void @"=.309"(%AstBuilder* %15, %AstBuilder* %17) + %18 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %19 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %18, i32 0, i32 4 + %20 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %other.addr + %21 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %20, i32 0, i32 4 + call void @"=.299"(%ErrorReporter* %19, %ErrorReporter* %21) + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @"=.308"(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %other) #3 { + %this.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* + store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %other.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* + store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %other, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %2 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %1, i32 0, i32 0 + %3 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %other.addr + %4 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %3, i32 0, i32 0 + call void @"=.301"(%"SparrowLayoutDecoder[SparrowScanner]"* %2, %"SparrowLayoutDecoder[SparrowScanner]"* %4) + %5 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %6 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %5, i32 0, i32 1 + %7 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %other.addr + %8 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %7, i32 0, i32 1 + %9 = call %"Vector[Token]"** @"=.303"(%"Vector[Token]"* %6, %"Vector[Token]"* %8) + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @"=.309"(%AstBuilder* %this, %AstBuilder* %other) #3 { + %this.addr = alloca %AstBuilder* + store %AstBuilder* %this, %AstBuilder** %this.addr + %other.addr = alloca %AstBuilder* + store %AstBuilder* %other, %AstBuilder** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %this.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 0 + %3 = load %AstBuilder*, %AstBuilder** %other.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + call void @"=.288"(%UntypedPtr* %2, %UntypedPtr* %4) + %5 = load %AstBuilder*, %AstBuilder** %this.addr + %6 = getelementptr inbounds %AstBuilder, %AstBuilder* %5, i32 0, i32 1 + %7 = load %AstBuilder*, %AstBuilder** %other.addr + %8 = getelementptr inbounds %AstBuilder, %AstBuilder* %7, i32 0, i32 1 + call void @"=.310"(%"FunctionPtr3[Node, UntypedPtr, Node, Node]"* %6, %"FunctionPtr3[Node, UntypedPtr, Node, Node]"* %8) + %9 = load %AstBuilder*, %AstBuilder** %this.addr + %10 = getelementptr inbounds %AstBuilder, %AstBuilder* %9, i32 0, i32 2 + %11 = load %AstBuilder*, %AstBuilder** %other.addr + %12 = getelementptr inbounds %AstBuilder, %AstBuilder* %11, i32 0, i32 2 + call void @"=.311"(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %10, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %12) + %13 = load %AstBuilder*, %AstBuilder** %this.addr + %14 = getelementptr inbounds %AstBuilder, %AstBuilder* %13, i32 0, i32 3 + %15 = load %AstBuilder*, %AstBuilder** %other.addr + %16 = getelementptr inbounds %AstBuilder, %AstBuilder* %15, i32 0, i32 3 + call void @"=.311"(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %14, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %16) + %17 = load %AstBuilder*, %AstBuilder** %this.addr + %18 = getelementptr inbounds %AstBuilder, %AstBuilder* %17, i32 0, i32 4 + %19 = load %AstBuilder*, %AstBuilder** %other.addr + %20 = getelementptr inbounds %AstBuilder, %AstBuilder* %19, i32 0, i32 4 + call void @"=.312"(%"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %18, %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %20) + %21 = load %AstBuilder*, %AstBuilder** %this.addr + %22 = getelementptr inbounds %AstBuilder, %AstBuilder* %21, i32 0, i32 5 + %23 = load %AstBuilder*, %AstBuilder** %other.addr + %24 = getelementptr inbounds %AstBuilder, %AstBuilder* %23, i32 0, i32 5 + call void @"=.313"(%"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %22, %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %24) + %25 = load %AstBuilder*, %AstBuilder** %this.addr + %26 = getelementptr inbounds %AstBuilder, %AstBuilder* %25, i32 0, i32 6 + %27 = load %AstBuilder*, %AstBuilder** %other.addr + %28 = getelementptr inbounds %AstBuilder, %AstBuilder* %27, i32 0, i32 6 + call void @"=.314"(%"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %26, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %28) + %29 = load %AstBuilder*, %AstBuilder** %this.addr + %30 = getelementptr inbounds %AstBuilder, %AstBuilder* %29, i32 0, i32 7 + %31 = load %AstBuilder*, %AstBuilder** %other.addr + %32 = getelementptr inbounds %AstBuilder, %AstBuilder* %31, i32 0, i32 7 + call void @"=.315"(%"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* %30, %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* %32) + %33 = load %AstBuilder*, %AstBuilder** %this.addr + %34 = getelementptr inbounds %AstBuilder, %AstBuilder* %33, i32 0, i32 8 + %35 = load %AstBuilder*, %AstBuilder** %other.addr + %36 = getelementptr inbounds %AstBuilder, %AstBuilder* %35, i32 0, i32 8 + call void @"=.312"(%"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %34, %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %36) + %37 = load %AstBuilder*, %AstBuilder** %this.addr + %38 = getelementptr inbounds %AstBuilder, %AstBuilder* %37, i32 0, i32 9 + %39 = load %AstBuilder*, %AstBuilder** %other.addr + %40 = getelementptr inbounds %AstBuilder, %AstBuilder* %39, i32 0, i32 9 + call void @"=.316"(%"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* %38, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* %40) + %41 = load %AstBuilder*, %AstBuilder** %this.addr + %42 = getelementptr inbounds %AstBuilder, %AstBuilder* %41, i32 0, i32 10 + %43 = load %AstBuilder*, %AstBuilder** %other.addr + %44 = getelementptr inbounds %AstBuilder, %AstBuilder* %43, i32 0, i32 10 + call void @"=.312"(%"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %42, %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %44) + %45 = load %AstBuilder*, %AstBuilder** %this.addr + %46 = getelementptr inbounds %AstBuilder, %AstBuilder* %45, i32 0, i32 11 + %47 = load %AstBuilder*, %AstBuilder** %other.addr + %48 = getelementptr inbounds %AstBuilder, %AstBuilder* %47, i32 0, i32 11 + call void @"=.312"(%"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %46, %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %48) + %49 = load %AstBuilder*, %AstBuilder** %this.addr + %50 = getelementptr inbounds %AstBuilder, %AstBuilder* %49, i32 0, i32 12 + %51 = load %AstBuilder*, %AstBuilder** %other.addr + %52 = getelementptr inbounds %AstBuilder, %AstBuilder* %51, i32 0, i32 12 + call void @"=.317"(%"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* %50, %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* %52) + %53 = load %AstBuilder*, %AstBuilder** %this.addr + %54 = getelementptr inbounds %AstBuilder, %AstBuilder* %53, i32 0, i32 13 + %55 = load %AstBuilder*, %AstBuilder** %other.addr + %56 = getelementptr inbounds %AstBuilder, %AstBuilder* %55, i32 0, i32 13 + call void @"=.318"(%"FunctionPtr2[Node, UntypedPtr, Node]"* %54, %"FunctionPtr2[Node, UntypedPtr, Node]"* %56) + %57 = load %AstBuilder*, %AstBuilder** %this.addr + %58 = getelementptr inbounds %AstBuilder, %AstBuilder* %57, i32 0, i32 14 + %59 = load %AstBuilder*, %AstBuilder** %other.addr + %60 = getelementptr inbounds %AstBuilder, %AstBuilder* %59, i32 0, i32 14 + call void @"=.319"(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %58, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %60) + %61 = load %AstBuilder*, %AstBuilder** %this.addr + %62 = getelementptr inbounds %AstBuilder, %AstBuilder* %61, i32 0, i32 15 + %63 = load %AstBuilder*, %AstBuilder** %other.addr + %64 = getelementptr inbounds %AstBuilder, %AstBuilder* %63, i32 0, i32 15 + call void @"=.320"(%"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* %62, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* %64) + %65 = load %AstBuilder*, %AstBuilder** %this.addr + %66 = getelementptr inbounds %AstBuilder, %AstBuilder* %65, i32 0, i32 16 + %67 = load %AstBuilder*, %AstBuilder** %other.addr + %68 = getelementptr inbounds %AstBuilder, %AstBuilder* %67, i32 0, i32 16 + call void @"=.313"(%"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %66, %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %68) + %69 = load %AstBuilder*, %AstBuilder** %this.addr + %70 = getelementptr inbounds %AstBuilder, %AstBuilder* %69, i32 0, i32 17 + %71 = load %AstBuilder*, %AstBuilder** %other.addr + %72 = getelementptr inbounds %AstBuilder, %AstBuilder* %71, i32 0, i32 17 + call void @"=.321"(%"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %70, %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %72) + %73 = load %AstBuilder*, %AstBuilder** %this.addr + %74 = getelementptr inbounds %AstBuilder, %AstBuilder* %73, i32 0, i32 18 + %75 = load %AstBuilder*, %AstBuilder** %other.addr + %76 = getelementptr inbounds %AstBuilder, %AstBuilder* %75, i32 0, i32 18 + call void @"=.319"(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %74, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %76) + %77 = load %AstBuilder*, %AstBuilder** %this.addr + %78 = getelementptr inbounds %AstBuilder, %AstBuilder* %77, i32 0, i32 19 + %79 = load %AstBuilder*, %AstBuilder** %other.addr + %80 = getelementptr inbounds %AstBuilder, %AstBuilder* %79, i32 0, i32 19 + call void @"=.319"(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %78, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %80) + %81 = load %AstBuilder*, %AstBuilder** %this.addr + %82 = getelementptr inbounds %AstBuilder, %AstBuilder* %81, i32 0, i32 20 + %83 = load %AstBuilder*, %AstBuilder** %other.addr + %84 = getelementptr inbounds %AstBuilder, %AstBuilder* %83, i32 0, i32 20 + call void @"=.319"(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %82, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %84) + %85 = load %AstBuilder*, %AstBuilder** %this.addr + %86 = getelementptr inbounds %AstBuilder, %AstBuilder* %85, i32 0, i32 21 + %87 = load %AstBuilder*, %AstBuilder** %other.addr + %88 = getelementptr inbounds %AstBuilder, %AstBuilder* %87, i32 0, i32 21 + call void @"=.311"(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %86, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %88) + %89 = load %AstBuilder*, %AstBuilder** %this.addr + %90 = getelementptr inbounds %AstBuilder, %AstBuilder* %89, i32 0, i32 22 + %91 = load %AstBuilder*, %AstBuilder** %other.addr + %92 = getelementptr inbounds %AstBuilder, %AstBuilder* %91, i32 0, i32 22 + call void @"=.322"(%"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* %90, %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* %92) + %93 = load %AstBuilder*, %AstBuilder** %this.addr + %94 = getelementptr inbounds %AstBuilder, %AstBuilder* %93, i32 0, i32 23 + %95 = load %AstBuilder*, %AstBuilder** %other.addr + %96 = getelementptr inbounds %AstBuilder, %AstBuilder* %95, i32 0, i32 23 + call void @"=.323"(%"FunctionPtr2[Node, UntypedPtr, @Location]"* %94, %"FunctionPtr2[Node, UntypedPtr, @Location]"* %96) + %97 = load %AstBuilder*, %AstBuilder** %this.addr + %98 = getelementptr inbounds %AstBuilder, %AstBuilder* %97, i32 0, i32 24 + %99 = load %AstBuilder*, %AstBuilder** %other.addr + %100 = getelementptr inbounds %AstBuilder, %AstBuilder* %99, i32 0, i32 24 + call void @"=.324"(%"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* %98, %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* %100) + %101 = load %AstBuilder*, %AstBuilder** %this.addr + %102 = getelementptr inbounds %AstBuilder, %AstBuilder* %101, i32 0, i32 25 + %103 = load %AstBuilder*, %AstBuilder** %other.addr + %104 = getelementptr inbounds %AstBuilder, %AstBuilder* %103, i32 0, i32 25 + call void @"=.325"(%"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* %102, %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* %104) + %105 = load %AstBuilder*, %AstBuilder** %this.addr + %106 = getelementptr inbounds %AstBuilder, %AstBuilder* %105, i32 0, i32 26 + %107 = load %AstBuilder*, %AstBuilder** %other.addr + %108 = getelementptr inbounds %AstBuilder, %AstBuilder* %107, i32 0, i32 26 + call void @"=.326"(%"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* %106, %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* %108) + %109 = load %AstBuilder*, %AstBuilder** %this.addr + %110 = getelementptr inbounds %AstBuilder, %AstBuilder* %109, i32 0, i32 27 + %111 = load %AstBuilder*, %AstBuilder** %other.addr + %112 = getelementptr inbounds %AstBuilder, %AstBuilder* %111, i32 0, i32 27 + call void @"=.327"(%"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* %110, %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* %112) + %113 = load %AstBuilder*, %AstBuilder** %this.addr + %114 = getelementptr inbounds %AstBuilder, %AstBuilder* %113, i32 0, i32 28 + %115 = load %AstBuilder*, %AstBuilder** %other.addr + %116 = getelementptr inbounds %AstBuilder, %AstBuilder* %115, i32 0, i32 28 + call void @"=.328"(%"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* %114, %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* %116) + %117 = load %AstBuilder*, %AstBuilder** %this.addr + %118 = getelementptr inbounds %AstBuilder, %AstBuilder* %117, i32 0, i32 29 + %119 = load %AstBuilder*, %AstBuilder** %other.addr + %120 = getelementptr inbounds %AstBuilder, %AstBuilder* %119, i32 0, i32 29 + call void @"=.329"(%"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* %118, %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* %120) + %121 = load %AstBuilder*, %AstBuilder** %this.addr + %122 = getelementptr inbounds %AstBuilder, %AstBuilder* %121, i32 0, i32 30 + %123 = load %AstBuilder*, %AstBuilder** %other.addr + %124 = getelementptr inbounds %AstBuilder, %AstBuilder* %123, i32 0, i32 30 + call void @"=.330"(%"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* %122, %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* %124) + %125 = load %AstBuilder*, %AstBuilder** %this.addr + %126 = getelementptr inbounds %AstBuilder, %AstBuilder* %125, i32 0, i32 31 + %127 = load %AstBuilder*, %AstBuilder** %other.addr + %128 = getelementptr inbounds %AstBuilder, %AstBuilder* %127, i32 0, i32 31 + call void @"=.331"(%"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* %126, %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* %128) + %129 = load %AstBuilder*, %AstBuilder** %this.addr + %130 = getelementptr inbounds %AstBuilder, %AstBuilder* %129, i32 0, i32 32 + %131 = load %AstBuilder*, %AstBuilder** %other.addr + %132 = getelementptr inbounds %AstBuilder, %AstBuilder* %131, i32 0, i32 32 + call void @"=.321"(%"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %130, %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %132) + %133 = load %AstBuilder*, %AstBuilder** %this.addr + %134 = getelementptr inbounds %AstBuilder, %AstBuilder* %133, i32 0, i32 33 + %135 = load %AstBuilder*, %AstBuilder** %other.addr + %136 = getelementptr inbounds %AstBuilder, %AstBuilder* %135, i32 0, i32 33 + call void @"=.332"(%"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %134, %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %136) + %137 = load %AstBuilder*, %AstBuilder** %this.addr + %138 = getelementptr inbounds %AstBuilder, %AstBuilder* %137, i32 0, i32 34 + %139 = load %AstBuilder*, %AstBuilder** %other.addr + %140 = getelementptr inbounds %AstBuilder, %AstBuilder* %139, i32 0, i32 34 + call void @"=.333"(%"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %138, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %140) + %141 = load %AstBuilder*, %AstBuilder** %this.addr + %142 = getelementptr inbounds %AstBuilder, %AstBuilder* %141, i32 0, i32 35 + %143 = load %AstBuilder*, %AstBuilder** %other.addr + %144 = getelementptr inbounds %AstBuilder, %AstBuilder* %143, i32 0, i32 35 + call void @"=.314"(%"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %142, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %144) + %145 = load %AstBuilder*, %AstBuilder** %this.addr + %146 = getelementptr inbounds %AstBuilder, %AstBuilder* %145, i32 0, i32 36 + %147 = load %AstBuilder*, %AstBuilder** %other.addr + %148 = getelementptr inbounds %AstBuilder, %AstBuilder* %147, i32 0, i32 36 + call void @"=.333"(%"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %146, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %148) + %149 = load %AstBuilder*, %AstBuilder** %this.addr + %150 = getelementptr inbounds %AstBuilder, %AstBuilder* %149, i32 0, i32 37 + %151 = load %AstBuilder*, %AstBuilder** %other.addr + %152 = getelementptr inbounds %AstBuilder, %AstBuilder* %151, i32 0, i32 37 + call void @"=.323"(%"FunctionPtr2[Node, UntypedPtr, @Location]"* %150, %"FunctionPtr2[Node, UntypedPtr, @Location]"* %152) + %153 = load %AstBuilder*, %AstBuilder** %this.addr + %154 = getelementptr inbounds %AstBuilder, %AstBuilder* %153, i32 0, i32 38 + %155 = load %AstBuilder*, %AstBuilder** %other.addr + %156 = getelementptr inbounds %AstBuilder, %AstBuilder* %155, i32 0, i32 38 + call void @"=.323"(%"FunctionPtr2[Node, UntypedPtr, @Location]"* %154, %"FunctionPtr2[Node, UntypedPtr, @Location]"* %156) + %157 = load %AstBuilder*, %AstBuilder** %this.addr + %158 = getelementptr inbounds %AstBuilder, %AstBuilder* %157, i32 0, i32 39 + %159 = load %AstBuilder*, %AstBuilder** %other.addr + %160 = getelementptr inbounds %AstBuilder, %AstBuilder* %159, i32 0, i32 39 + call void @"=.332"(%"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %158, %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %160) + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @"=.310"(%"FunctionPtr3[Node, UntypedPtr, Node, Node]"* %this, %"FunctionPtr3[Node, UntypedPtr, Node, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, Node, Node]"* + store %"FunctionPtr3[Node, UntypedPtr, Node, Node]"* %this, %"FunctionPtr3[Node, UntypedPtr, Node, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Node, UntypedPtr, Node, Node]"* + store %"FunctionPtr3[Node, UntypedPtr, Node, Node]"* %other, %"FunctionPtr3[Node, UntypedPtr, Node, Node]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, Node, Node]"*, %"FunctionPtr3[Node, UntypedPtr, Node, Node]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, Node, Node]", %"FunctionPtr3[Node, UntypedPtr, Node, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Node, UntypedPtr, Node, Node]"*, %"FunctionPtr3[Node, UntypedPtr, Node, Node]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, Node, Node]", %"FunctionPtr3[Node, UntypedPtr, Node, Node]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @"=.260"(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %other) #3 { - %this.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* - store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %other.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* - store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %other, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %other.addr +define internal void @"=.311"(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %this, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* + store %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %this, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* + store %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %other, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"** %other.addr br label %code code: ; preds = %0 - %1 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %2 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %1, i32 0, i32 0 - %3 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %other.addr - %4 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %3, i32 0, i32 0 - call void @"=.253"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %2, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %4) - %5 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %6 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %5, i32 0, i32 1 - %7 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %other.addr - %8 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %7, i32 0, i32 1 - %9 = call %"Vector[Token]"** @"=.255"(%"Vector[Token]"* %6, %"Vector[Token]"* %8) + %1 = load %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"*, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]", %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"*, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]", %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 ret void } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.261"(%ParserContext* %this, %ParserContext* %other) #3 { - %this.addr = alloca %ParserContext* - store %ParserContext* %this, %ParserContext** %this.addr - %other.addr = alloca %ParserContext* - store %ParserContext* %other, %ParserContext** %other.addr +define internal void @"=.312"(%"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %this, %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* + store %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %this, %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* + store %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %other, %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"** %other.addr br label %code code: ; preds = %0 - %1 = load %ParserContext*, %ParserContext** %this.addr - %2 = getelementptr inbounds %ParserContext, %ParserContext* %1, i32 0, i32 0 - %3 = load %ParserContext*, %ParserContext** %other.addr - %4 = getelementptr inbounds %ParserContext, %ParserContext* %3, i32 0, i32 0 - %5 = call i1 @"==.262"(%File* %2, %File* %4) - br i1 %5, label %cond.true10, label %cond.false11 - -cond.true: ; preds = %cond.end3 - %6 = load %ParserContext*, %ParserContext** %this.addr - %7 = getelementptr inbounds %ParserContext, %ParserContext* %6, i32 0, i32 5 - %8 = load %ParserContext*, %ParserContext** %other.addr - %9 = getelementptr inbounds %ParserContext, %ParserContext* %8, i32 0, i32 5 - %10 = call i1 @"==.283"(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %7, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9) - br label %cond.end + %1 = load %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"*, %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]", %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"*, %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]", %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} -cond.false: ; preds = %cond.end3 - br label %cond.end +; Function Attrs: alwaysinline nounwind +define internal void @"=.313"(%"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %this, %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* + store %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %this, %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* + store %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %other, %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"** %other.addr + br label %code -cond.end: ; preds = %cond.false, %cond.true - %cond.res16 = phi i1 [ %10, %cond.true ], [ false, %cond.false ] - ret i1 %cond.res16 +code: ; preds = %0 + %1 = load %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"*, %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]", %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"*, %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]", %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} -cond.true1: ; preds = %cond.end6 - %11 = load %ParserContext*, %ParserContext** %this.addr - %12 = getelementptr inbounds %ParserContext, %ParserContext* %11, i32 0, i32 4 - %13 = load %ParserContext*, %ParserContext** %other.addr - %14 = getelementptr inbounds %ParserContext, %ParserContext* %13, i32 0, i32 4 - %15 = call i1 @"==.277"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %12, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %14) - br label %cond.end3 +; Function Attrs: alwaysinline nounwind +define internal void @"=.314"(%"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %this, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* + store %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %this, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* + store %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %other, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"** %other.addr + br label %code -cond.false2: ; preds = %cond.end6 - br label %cond.end3 +code: ; preds = %0 + %1 = load %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"*, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]", %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"*, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]", %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} -cond.end3: ; preds = %cond.false2, %cond.true1 - %cond.res15 = phi i1 [ %15, %cond.true1 ], [ false, %cond.false2 ] - br i1 %cond.res15, label %cond.true, label %cond.false +; Function Attrs: alwaysinline nounwind +define internal void @"=.315"(%"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* %this, %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* + store %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* %this, %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* + store %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* %other, %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"** %other.addr + br label %code -cond.true4: ; preds = %cond.end9 - %16 = load %ParserContext*, %ParserContext** %this.addr - %17 = getelementptr inbounds %ParserContext, %ParserContext* %16, i32 0, i32 3 - %18 = load %ParserContext*, %ParserContext** %other.addr - %19 = getelementptr inbounds %ParserContext, %ParserContext* %18, i32 0, i32 3 - %20 = call i1 @"==.264"(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %17, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %19) - br label %cond.end6 +code: ; preds = %0 + %1 = load %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"*, %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]", %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"*, %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]", %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} -cond.false5: ; preds = %cond.end9 - br label %cond.end6 +; Function Attrs: alwaysinline nounwind +define internal void @"=.316"(%"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* %this, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* + store %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* %this, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* + store %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* %other, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"** %other.addr + br label %code -cond.end6: ; preds = %cond.false5, %cond.true4 - %cond.res14 = phi i1 [ %20, %cond.true4 ], [ false, %cond.false5 ] - br i1 %cond.res14, label %cond.true1, label %cond.false2 +code: ; preds = %0 + %1 = load %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"*, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]", %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"*, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]", %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} -cond.true7: ; preds = %cond.end12 - %21 = load %ParserContext*, %ParserContext** %this.addr - %22 = getelementptr inbounds %ParserContext, %ParserContext* %21, i32 0, i32 2 - %23 = load %ParserContext*, %ParserContext** %other.addr - %24 = getelementptr inbounds %ParserContext, %ParserContext* %23, i32 0, i32 2 - %25 = call i1 @"==.137"(%_CharSource* %22, %_CharSource* %24) - br label %cond.end9 +; Function Attrs: alwaysinline nounwind +define internal void @"=.317"(%"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* %this, %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* + store %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* %this, %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* + store %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* %other, %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"** %other.addr + br label %code -cond.false8: ; preds = %cond.end12 - br label %cond.end9 +code: ; preds = %0 + %1 = load %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"*, %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]", %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"*, %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]", %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} -cond.end9: ; preds = %cond.false8, %cond.true7 - %cond.res13 = phi i1 [ %25, %cond.true7 ], [ false, %cond.false8 ] - br i1 %cond.res13, label %cond.true4, label %cond.false5 +; Function Attrs: alwaysinline nounwind +define internal void @"=.318"(%"FunctionPtr2[Node, UntypedPtr, Node]"* %this, %"FunctionPtr2[Node, UntypedPtr, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr2[Node, UntypedPtr, Node]"* + store %"FunctionPtr2[Node, UntypedPtr, Node]"* %this, %"FunctionPtr2[Node, UntypedPtr, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr2[Node, UntypedPtr, Node]"* + store %"FunctionPtr2[Node, UntypedPtr, Node]"* %other, %"FunctionPtr2[Node, UntypedPtr, Node]"** %other.addr + br label %code -cond.true10: ; preds = %code - %26 = load %ParserContext*, %ParserContext** %this.addr - %27 = getelementptr inbounds %ParserContext, %ParserContext* %26, i32 0, i32 1 - %28 = load %ParserContext*, %ParserContext** %other.addr - %29 = getelementptr inbounds %ParserContext, %ParserContext* %28, i32 0, i32 1 - %30 = call i1 @"==.263"(%FileRange* %27, %FileRange* %29) - br label %cond.end12 +code: ; preds = %0 + %1 = load %"FunctionPtr2[Node, UntypedPtr, Node]"*, %"FunctionPtr2[Node, UntypedPtr, Node]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr2[Node, UntypedPtr, Node]", %"FunctionPtr2[Node, UntypedPtr, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr2[Node, UntypedPtr, Node]"*, %"FunctionPtr2[Node, UntypedPtr, Node]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr2[Node, UntypedPtr, Node]", %"FunctionPtr2[Node, UntypedPtr, Node]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} -cond.false11: ; preds = %code - br label %cond.end12 +; Function Attrs: alwaysinline nounwind +define internal void @"=.319"(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %this, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %other) #3 { + %this.addr = alloca %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* + store %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %this, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"** %this.addr + %other.addr = alloca %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* + store %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %other, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"** %other.addr + br label %code -cond.end12: ; preds = %cond.false11, %cond.true10 - %cond.res = phi i1 [ %30, %cond.true10 ], [ false, %cond.false11 ] - br i1 %cond.res, label %cond.true7, label %cond.false8 +code: ; preds = %0 + %1 = load %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"*, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]", %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"*, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]", %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.262"(%File* %this, %File* %other) #3 { - %this.addr = alloca %File* - store %File* %this, %File** %this.addr - %other.addr = alloca %File* - store %File* %other, %File** %other.addr +define internal void @"=.320"(%"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* %this, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* + store %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* %this, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* + store %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* %other, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"** %other.addr br label %code code: ; preds = %0 - %1 = load %File*, %File** %this.addr - %2 = getelementptr inbounds %File, %File* %1, i32 0, i32 0 + %1 = load %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"*, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]", %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* %1, i32 0, i32 0 %3 = load i8*, i8** %2 - %4 = load %File*, %File** %other.addr - %5 = getelementptr inbounds %File, %File* %4, i32 0, i32 0 - %6 = load i8*, i8** %5 - %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) - ret i1 %7 + %4 = load %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"*, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]", %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.263"(%FileRange* %this, %FileRange* %other) #3 { - %this.addr = alloca %FileRange* - store %FileRange* %this, %FileRange** %this.addr - %other.addr = alloca %FileRange* - store %FileRange* %other, %FileRange** %other.addr +define internal void @"=.321"(%"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %other, %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"** %other.addr br label %code code: ; preds = %0 - %1 = load %FileRange*, %FileRange** %this.addr - %2 = getelementptr inbounds %FileRange, %FileRange* %1, i32 0, i32 0 - %3 = load %File*, %File** %2 - %4 = bitcast %File* %3 to i8* - %5 = load %FileRange*, %FileRange** %other.addr - %6 = getelementptr inbounds %FileRange, %FileRange* %5, i32 0, i32 0 - %7 = load %File*, %File** %6 - %8 = bitcast %File* %7 to i8* - %9 = call i1 @implOpRefEQ(i8* %4, i8* %8) - br i1 %9, label %cond.true1, label %cond.false2 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]", %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]", %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} -cond.true: ; preds = %cond.end3 - %10 = load %FileRange*, %FileRange** %this.addr - %11 = getelementptr inbounds %FileRange, %FileRange* %10, i32 0, i32 2 - %12 = load i8, i8* %11 - %13 = load %FileRange*, %FileRange** %other.addr - %14 = getelementptr inbounds %FileRange, %FileRange* %13, i32 0, i32 2 - %15 = load i8, i8* %14 - %16 = icmp eq i8 %12, %15 - br label %cond.end +; Function Attrs: alwaysinline nounwind +define internal void @"=.322"(%"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* %this, %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* + store %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* %this, %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* + store %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* %other, %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"** %other.addr + br label %code -cond.false: ; preds = %cond.end3 - br label %cond.end +code: ; preds = %0 + %1 = load %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"*, %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]", %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"*, %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]", %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} -cond.end: ; preds = %cond.false, %cond.true - %cond.res4 = phi i1 [ %16, %cond.true ], [ false, %cond.false ] - ret i1 %cond.res4 +; Function Attrs: alwaysinline nounwind +define internal void @"=.323"(%"FunctionPtr2[Node, UntypedPtr, @Location]"* %this, %"FunctionPtr2[Node, UntypedPtr, @Location]"* %other) #3 { + %this.addr = alloca %"FunctionPtr2[Node, UntypedPtr, @Location]"* + store %"FunctionPtr2[Node, UntypedPtr, @Location]"* %this, %"FunctionPtr2[Node, UntypedPtr, @Location]"** %this.addr + %other.addr = alloca %"FunctionPtr2[Node, UntypedPtr, @Location]"* + store %"FunctionPtr2[Node, UntypedPtr, @Location]"* %other, %"FunctionPtr2[Node, UntypedPtr, @Location]"** %other.addr + br label %code -cond.true1: ; preds = %code - %17 = load %FileRange*, %FileRange** %this.addr - %18 = getelementptr inbounds %FileRange, %FileRange* %17, i32 0, i32 1 - %19 = load i1, i1* %18 - %20 = load %FileRange*, %FileRange** %other.addr - %21 = getelementptr inbounds %FileRange, %FileRange* %20, i32 0, i32 1 - %22 = load i1, i1* %21 - %23 = icmp eq i1 %19, %22 - br label %cond.end3 +code: ; preds = %0 + %1 = load %"FunctionPtr2[Node, UntypedPtr, @Location]"*, %"FunctionPtr2[Node, UntypedPtr, @Location]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr2[Node, UntypedPtr, @Location]", %"FunctionPtr2[Node, UntypedPtr, @Location]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr2[Node, UntypedPtr, @Location]"*, %"FunctionPtr2[Node, UntypedPtr, @Location]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr2[Node, UntypedPtr, @Location]", %"FunctionPtr2[Node, UntypedPtr, @Location]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} -cond.false2: ; preds = %code - br label %cond.end3 +; Function Attrs: alwaysinline nounwind +define internal void @"=.324"(%"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* %other, %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"** %other.addr + br label %code -cond.end3: ; preds = %cond.false2, %cond.true1 - %cond.res = phi i1 [ %23, %cond.true1 ], [ false, %cond.false2 ] - br i1 %cond.res, label %cond.true, label %cond.false +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]", %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]", %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.264"(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %other) #3 { - %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* - store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %other.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* - store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %other, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %other.addr +define internal void @"=.325"(%"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* %other, %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"** %other.addr br label %code code: ; preds = %0 - %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 0 - %3 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %other.addr - %4 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %3, i32 0, i32 0 - %5 = call i1 @"==.265"(%Location* %2, %Location* %4) - br i1 %5, label %cond.true7, label %cond.false8 - -cond.true: ; preds = %cond.end3 - %6 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %7 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %6, i32 0, i32 4 - %8 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %other.addr - %9 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %8, i32 0, i32 4 - %10 = call i1 @"==.132"(%ExternalErrorReporter* %7, %ExternalErrorReporter* %9) - br label %cond.end + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Int]", %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Int]", %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} -cond.false: ; preds = %cond.end3 - br label %cond.end +; Function Attrs: alwaysinline nounwind +define internal void @"=.326"(%"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* %other, %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"** %other.addr + br label %code -cond.end: ; preds = %cond.false, %cond.true - %cond.res12 = phi i1 [ %10, %cond.true ], [ false, %cond.false ] - ret i1 %cond.res12 +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]", %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]", %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} -cond.true1: ; preds = %cond.end6 - %11 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %12 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %11, i32 0, i32 3 - %13 = load i1, i1* %12 - %14 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %other.addr - %15 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %14, i32 0, i32 3 - %16 = load i1, i1* %15 - %17 = icmp eq i1 %13, %16 - br label %cond.end3 +; Function Attrs: alwaysinline nounwind +define internal void @"=.327"(%"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* %other, %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"** %other.addr + br label %code -cond.false2: ; preds = %cond.end6 - br label %cond.end3 +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Long]", %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Long]", %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} -cond.end3: ; preds = %cond.false2, %cond.true1 - %cond.res11 = phi i1 [ %17, %cond.true1 ], [ false, %cond.false2 ] - br i1 %cond.res11, label %cond.true, label %cond.false +; Function Attrs: alwaysinline nounwind +define internal void @"=.328"(%"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* %other, %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"** %other.addr + br label %code -cond.true4: ; preds = %cond.end9 - %18 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %19 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %18, i32 0, i32 2 - %20 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %other.addr - %21 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %20, i32 0, i32 2 - %22 = call i1 @"==.272"(%Token* %19, %Token* %21) - br label %cond.end6 +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]", %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]", %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @"=.329"(%"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* %other, %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Float]", %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Float]", %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @"=.330"(%"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* %other, %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Double]", %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Double]", %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @"=.331"(%"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* %other, %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Char]", %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Char]", %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @"=.332"(%"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %other, %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Node]", %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Node]", %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @"=.333"(%"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %this, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* + store %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %this, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* + store %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %other, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"*, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]", %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"*, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]", %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.334"(%ParserContext* %this, %ParserContext* %other) #3 { + %this.addr = alloca %ParserContext* + store %ParserContext* %this, %ParserContext** %this.addr + %other.addr = alloca %ParserContext* + store %ParserContext* %other, %ParserContext** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %ParserContext*, %ParserContext** %this.addr + %2 = getelementptr inbounds %ParserContext, %ParserContext* %1, i32 0, i32 0 + %3 = load %ParserContext*, %ParserContext** %other.addr + %4 = getelementptr inbounds %ParserContext, %ParserContext* %3, i32 0, i32 0 + %5 = call i1 @"==.335"(%SparrowScanner* %2, %SparrowScanner* %4) + br i1 %5, label %cond.true1, label %cond.false2 + +cond.true: ; preds = %cond.end3 + %6 = load %ParserContext*, %ParserContext** %this.addr + %7 = getelementptr inbounds %ParserContext, %ParserContext* %6, i32 0, i32 2 + %8 = load %ParserContext*, %ParserContext** %other.addr + %9 = getelementptr inbounds %ParserContext, %ParserContext* %8, i32 0, i32 2 + %10 = call i1 @"==.361"(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %7, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %9) + br label %cond.end + +cond.false: ; preds = %cond.end3 + br label %cond.end + +cond.end: ; preds = %cond.false, %cond.true + %cond.res4 = phi i1 [ %10, %cond.true ], [ false, %cond.false ] + ret i1 %cond.res4 + +cond.true1: ; preds = %code + %11 = load %ParserContext*, %ParserContext** %this.addr + %12 = getelementptr inbounds %ParserContext, %ParserContext* %11, i32 0, i32 1 + %13 = load %ParserContext*, %ParserContext** %other.addr + %14 = getelementptr inbounds %ParserContext, %ParserContext* %13, i32 0, i32 1 + %15 = call i1 @"==.355"(%"SparrowLayoutDecoder[SparrowScanner]"* %12, %"SparrowLayoutDecoder[SparrowScanner]"* %14) + br label %cond.end3 + +cond.false2: ; preds = %code + br label %cond.end3 + +cond.end3: ; preds = %cond.false2, %cond.true1 + %cond.res = phi i1 [ %15, %cond.true1 ], [ false, %cond.false2 ] + br i1 %cond.res, label %cond.true, label %cond.false +} + +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.335"(%SparrowScanner* %this, %SparrowScanner* %other) #3 { + %this.addr = alloca %SparrowScanner* + store %SparrowScanner* %this, %SparrowScanner** %this.addr + %other.addr = alloca %SparrowScanner* + store %SparrowScanner* %other, %SparrowScanner** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %SparrowScanner*, %SparrowScanner** %this.addr + %2 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %1, i32 0, i32 0 + %3 = load %SparrowScanner*, %SparrowScanner** %other.addr + %4 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %3, i32 0, i32 0 + %5 = call i1 @"==.336"(%Location* %2, %Location* %4) + br i1 %5, label %cond.true13, label %cond.false14 + +cond.true: ; preds = %cond.end3 + %6 = load %SparrowScanner*, %SparrowScanner** %this.addr + %7 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %6, i32 0, i32 6 + %8 = load i1, i1* %7 + %9 = load %SparrowScanner*, %SparrowScanner** %other.addr + %10 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %9, i32 0, i32 6 + %11 = load i1, i1* %10 + %12 = icmp eq i1 %8, %11 + br label %cond.end + +cond.false: ; preds = %cond.end3 + br label %cond.end + +cond.end: ; preds = %cond.false, %cond.true + %cond.res20 = phi i1 [ %12, %cond.true ], [ false, %cond.false ] + ret i1 %cond.res20 + +cond.true1: ; preds = %cond.end6 + %13 = load %SparrowScanner*, %SparrowScanner** %this.addr + %14 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %13, i32 0, i32 5 + %15 = load %SparrowScanner*, %SparrowScanner** %other.addr + %16 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %15, i32 0, i32 5 + %17 = call i1 @"==.353"(%ErrorReporter* %14, %ErrorReporter* %16) + br label %cond.end3 + +cond.false2: ; preds = %cond.end6 + br label %cond.end3 + +cond.end3: ; preds = %cond.false2, %cond.true1 + %cond.res19 = phi i1 [ %17, %cond.true1 ], [ false, %cond.false2 ] + br i1 %cond.res19, label %cond.true, label %cond.false + +cond.true4: ; preds = %cond.end9 + %18 = load %SparrowScanner*, %SparrowScanner** %this.addr + %19 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %18, i32 0, i32 4 + %20 = load i1, i1* %19 + %21 = load %SparrowScanner*, %SparrowScanner** %other.addr + %22 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %21, i32 0, i32 4 + %23 = load i1, i1* %22 + %24 = icmp eq i1 %20, %23 + br label %cond.end6 cond.false5: ; preds = %cond.end9 br label %cond.end6 cond.end6: ; preds = %cond.false5, %cond.true4 - %cond.res10 = phi i1 [ %22, %cond.true4 ], [ false, %cond.false5 ] - br i1 %cond.res10, label %cond.true1, label %cond.false2 + %cond.res18 = phi i1 [ %24, %cond.true4 ], [ false, %cond.false5 ] + br i1 %cond.res18, label %cond.true1, label %cond.false2 -cond.true7: ; preds = %code - %23 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %24 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %23, i32 0, i32 1 - %25 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %other.addr - %26 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %25, i32 0, i32 1 - %27 = call i1 @"==.268"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %24, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %26) +cond.true7: ; preds = %cond.end12 + %25 = load %SparrowScanner*, %SparrowScanner** %this.addr + %26 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %25, i32 0, i32 3 + %27 = load %SparrowScanner*, %SparrowScanner** %other.addr + %28 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %27, i32 0, i32 3 + %29 = call i1 @"==.351"(%Token* %26, %Token* %28) br label %cond.end9 -cond.false8: ; preds = %code +cond.false8: ; preds = %cond.end12 br label %cond.end9 cond.end9: ; preds = %cond.false8, %cond.true7 - %cond.res = phi i1 [ %27, %cond.true7 ], [ false, %cond.false8 ] - br i1 %cond.res, label %cond.true4, label %cond.false5 + %cond.res17 = phi i1 [ %29, %cond.true7 ], [ false, %cond.false8 ] + br i1 %cond.res17, label %cond.true4, label %cond.false5 + +cond.true10: ; preds = %cond.end15 + %30 = load %SparrowScanner*, %SparrowScanner** %this.addr + %31 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %30, i32 0, i32 2 + %32 = load %SparrowScanner*, %SparrowScanner** %other.addr + %33 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %32, i32 0, i32 2 + %34 = call i1 @"==.346"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %31, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %33) + br label %cond.end12 + +cond.false11: ; preds = %cond.end15 + br label %cond.end12 + +cond.end12: ; preds = %cond.false11, %cond.true10 + %cond.res16 = phi i1 [ %34, %cond.true10 ], [ false, %cond.false11 ] + br i1 %cond.res16, label %cond.true7, label %cond.false8 + +cond.true13: ; preds = %code + %35 = load %SparrowScanner*, %SparrowScanner** %this.addr + %36 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %35, i32 0, i32 1 + %37 = load %SparrowScanner*, %SparrowScanner** %other.addr + %38 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %37, i32 0, i32 1 + %39 = call i1 @"==.339"(%BufferedCharSource* %36, %BufferedCharSource* %38) + br label %cond.end15 + +cond.false14: ; preds = %code + br label %cond.end15 + +cond.end15: ; preds = %cond.false14, %cond.true13 + %cond.res = phi i1 [ %39, %cond.true13 ], [ false, %cond.false14 ] + br i1 %cond.res, label %cond.true10, label %cond.false11 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.265"(%Location* %this, %Location* %other) #3 { +define internal i1 @"==.336"(%Location* %this, %Location* %other) #3 { %this.addr = alloca %Location* store %Location* %this, %Location** %this.addr %other.addr = alloca %Location* @@ -8438,7 +9929,7 @@ code: ; preds = %0 %2 = getelementptr inbounds %Location, %Location* %1, i32 0, i32 0 %3 = load %Location*, %Location** %other.addr %4 = getelementptr inbounds %Location, %Location* %3, i32 0, i32 0 - %5 = call i1 @"==.266"(%SourceCode* %2, %SourceCode* %4) + %5 = call i1 @"==.337"(%SourceCode* %2, %SourceCode* %4) br i1 %5, label %cond.true1, label %cond.false2 cond.true: ; preds = %cond.end3 @@ -8446,7 +9937,7 @@ cond.true: ; preds = %cond.end3 %7 = getelementptr inbounds %Location, %Location* %6, i32 0, i32 2 %8 = load %Location*, %Location** %other.addr %9 = getelementptr inbounds %Location, %Location* %8, i32 0, i32 2 - %10 = call i1 @"==.267"(%LineCol* %7, %LineCol* %9) + %10 = call i1 @"==.338"(%LineCol* %7, %LineCol* %9) br label %cond.end cond.false: ; preds = %cond.end3 @@ -8461,7 +9952,7 @@ cond.true1: ; preds = %code %12 = getelementptr inbounds %Location, %Location* %11, i32 0, i32 1 %13 = load %Location*, %Location** %other.addr %14 = getelementptr inbounds %Location, %Location* %13, i32 0, i32 1 - %15 = call i1 @"==.267"(%LineCol* %12, %LineCol* %14) + %15 = call i1 @"==.338"(%LineCol* %12, %LineCol* %14) br label %cond.end3 cond.false2: ; preds = %code @@ -8473,7 +9964,7 @@ cond.end3: ; preds = %cond.false2, %cond. } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.266"(%SourceCode* %this, %SourceCode* %other) #3 { +define internal i1 @"==.337"(%SourceCode* %this, %SourceCode* %other) #3 { %this.addr = alloca %SourceCode* store %SourceCode* %this, %SourceCode** %this.addr %other.addr = alloca %SourceCode* @@ -8492,7 +9983,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.267"(%LineCol* %this, %LineCol* %other) #3 { +define internal i1 @"==.338"(%LineCol* %this, %LineCol* %other) #3 { %this.addr = alloca %LineCol* store %LineCol* %this, %LineCol** %this.addr %other.addr = alloca %LineCol* @@ -8528,63 +10019,76 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.268"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %other) #3 { - %this.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* - store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr - %other.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* - store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %other, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %other.addr +define internal i1 @"==.339"(%BufferedCharSource* %this, %BufferedCharSource* %other) #3 { + %this.addr = alloca %BufferedCharSource* + store %BufferedCharSource* %this, %BufferedCharSource** %this.addr + %other.addr = alloca %BufferedCharSource* + store %BufferedCharSource* %other, %BufferedCharSource** %other.addr br label %code code: ; preds = %0 - %1 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr - %2 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1, i32 0, i32 0 - %3 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %other.addr - %4 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %3, i32 0, i32 0 - %5 = call i1 @"==.269"(%"RangeWithLookahead[_CharSource]"* %2, %"RangeWithLookahead[_CharSource]"* %4) - br i1 %5, label %cond.true, label %cond.false + %1 = load %BufferedCharSource*, %BufferedCharSource** %this.addr + %2 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %1, i32 0, i32 0 + %3 = load %BufferedCharSource*, %BufferedCharSource** %other.addr + %4 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %3, i32 0, i32 0 + %5 = call i1 @"==.340"(%CharSource* %2, %CharSource* %4) + br i1 %5, label %cond.true1, label %cond.false2 -cond.true: ; preds = %code - %6 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr - %7 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %6, i32 0, i32 1 - %8 = load %Location*, %Location** %7 - %9 = bitcast %Location* %8 to i8* - %10 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %other.addr - %11 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %10, i32 0, i32 1 - %12 = load %Location*, %Location** %11 - %13 = bitcast %Location* %12 to i8* - %14 = call i1 @implOpRefEQ(i8* %9, i8* %13) +cond.true: ; preds = %cond.end3 + %6 = load %BufferedCharSource*, %BufferedCharSource** %this.addr + %7 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %6, i32 0, i32 2 + %8 = load i32, i32* %7 + %9 = load %BufferedCharSource*, %BufferedCharSource** %other.addr + %10 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %9, i32 0, i32 2 + %11 = load i32, i32* %10 + %12 = icmp eq i32 %8, %11 br label %cond.end -cond.false: ; preds = %code +cond.false: ; preds = %cond.end3 br label %cond.end cond.end: ; preds = %cond.false, %cond.true - %cond.res = phi i1 [ %14, %cond.true ], [ false, %cond.false ] - ret i1 %cond.res + %cond.res4 = phi i1 [ %12, %cond.true ], [ false, %cond.false ] + ret i1 %cond.res4 + +cond.true1: ; preds = %code + %13 = load %BufferedCharSource*, %BufferedCharSource** %this.addr + %14 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %13, i32 0, i32 1 + %15 = load %BufferedCharSource*, %BufferedCharSource** %other.addr + %16 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %15, i32 0, i32 1 + %17 = call i1 @"==.343"(%String* %14, %String* %16) + br label %cond.end3 + +cond.false2: ; preds = %code + br label %cond.end3 + +cond.end3: ; preds = %cond.false2, %cond.true1 + %cond.res = phi i1 [ %17, %cond.true1 ], [ false, %cond.false2 ] + br i1 %cond.res, label %cond.true, label %cond.false } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.269"(%"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"* %other) #3 { - %this.addr = alloca %"RangeWithLookahead[_CharSource]"* - store %"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"** %this.addr - %other.addr = alloca %"RangeWithLookahead[_CharSource]"* - store %"RangeWithLookahead[_CharSource]"* %other, %"RangeWithLookahead[_CharSource]"** %other.addr +define internal i1 @"==.340"(%CharSource* %this, %CharSource* %other) #3 { + %this.addr = alloca %CharSource* + store %CharSource* %this, %CharSource** %this.addr + %other.addr = alloca %CharSource* + store %CharSource* %other, %CharSource** %other.addr br label %code code: ; preds = %0 - %1 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %2 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %1, i32 0, i32 0 - %3 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %other.addr - %4 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %3, i32 0, i32 0 - %5 = call i1 @"==.137"(%_CharSource* %2, %_CharSource* %4) + %1 = load %CharSource*, %CharSource** %this.addr + %2 = getelementptr inbounds %CharSource, %CharSource* %1, i32 0, i32 0 + %3 = load %CharSource*, %CharSource** %other.addr + %4 = getelementptr inbounds %CharSource, %CharSource* %3, i32 0, i32 0 + %5 = call i1 @"==.341"(%UntypedPtr* %2, %UntypedPtr* %4) br i1 %5, label %cond.true, label %cond.false cond.true: ; preds = %code - %6 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %7 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %6, i32 0, i32 1 - %8 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %other.addr - %9 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %8, i32 0, i32 1 - %10 = call i1 @"==.270"(%"Vector[Char]"* %7, %"Vector[Char]"* %9) + %6 = load %CharSource*, %CharSource** %this.addr + %7 = getelementptr inbounds %CharSource, %CharSource* %6, i32 0, i32 1 + %8 = load %CharSource*, %CharSource** %other.addr + %9 = getelementptr inbounds %CharSource, %CharSource* %8, i32 0, i32 1 + %10 = call i1 @"==.342"(%"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %7, %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %9) br label %cond.end cond.false: ; preds = %code @@ -8595,27 +10099,62 @@ cond.end: ; preds = %cond.false, %cond.t ret i1 %cond.res } +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.341"(%UntypedPtr* %this, %UntypedPtr* %other) #3 { + %this.addr = alloca %UntypedPtr* + store %UntypedPtr* %this, %UntypedPtr** %this.addr + %other.addr = alloca %UntypedPtr* + store %UntypedPtr* %other, %UntypedPtr** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %UntypedPtr*, %UntypedPtr** %this.addr + %2 = getelementptr inbounds %UntypedPtr, %UntypedPtr* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %UntypedPtr*, %UntypedPtr** %other.addr + %5 = getelementptr inbounds %UntypedPtr, %UntypedPtr* %4, i32 0, i32 0 + %6 = load i8*, i8** %5 + %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) + ret i1 %7 +} + +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.342"(%"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %this, %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* + store %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %this, %"FunctionPtr3[Void, UntypedPtr, @String, Int]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* + store %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %other, %"FunctionPtr3[Void, UntypedPtr, @String, Int]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Void, UntypedPtr, @String, Int]"*, %"FunctionPtr3[Void, UntypedPtr, @String, Int]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr3[Void, UntypedPtr, @String, Int]", %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Void, UntypedPtr, @String, Int]"*, %"FunctionPtr3[Void, UntypedPtr, @String, Int]"** %other.addr + %5 = getelementptr inbounds %"FunctionPtr3[Void, UntypedPtr, @String, Int]", %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %4, i32 0, i32 0 + %6 = load i8*, i8** %5 + %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) + ret i1 %7 +} + ; Function Attrs: inlinehint nounwind -define internal i1 @"==.270"(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #4 { - %this.addr = alloca %"Vector[Char]"* - store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr - %other.addr = alloca %"Vector[Char]"* - store %"Vector[Char]"* %other, %"Vector[Char]"** %other.addr - %i = alloca i32 +define internal i1 @"==.343"(%String* %this, %String* %other) #4 { + %this.addr = alloca %String* + store %String* %this, %String** %this.addr + %other.addr = alloca %String* + store %String* %other, %String** %other.addr + %i = alloca i64 %s = alloca i64 - %tmp.this = alloca i64 - %tmp.this4 = alloca i64 - %tmp.this5 = alloca i64 br label %code code: ; preds = %0 br label %if_block if_block: ; preds = %code - %1 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %2 = call i64 @size.177(%"Vector[Char]"* %1) - %3 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr - %4 = call i64 @size.177(%"Vector[Char]"* %3) + %1 = load %String*, %String** %this.addr + %2 = call i64 @size.190(%String* %1) + %3 = load %String*, %String** %other.addr + %4 = call i64 @size.190(%String* %3) %5 = icmp ne i64 %2, %4 br i1 %5, label %if_then, label %if_end @@ -8623,9 +10162,9 @@ if_then: ; preds = %if_block ret i1 false if_end: ; preds = %dumy_block, %if_block - store i32 0, i32* %i - %6 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %7 = call i64 @size.177(%"Vector[Char]"* %6) + store i64 0, i64* %i + %6 = load %String*, %String** %this.addr + %7 = call i64 @size.190(%String* %6) store i64 %7, i64* %s br label %while_block @@ -8633,75 +10172,272 @@ dumy_block: ; No predecessors! br label %if_end while_block: ; preds = %while_step, %if_end - %8 = load i32, i32* %i - %9 = zext i32 %8 to i64 - store i64 %9, i64* %tmp.this - %10 = load i64, i64* %tmp.this - %11 = load i64, i64* %s - %12 = icmp slt i64 %10, %11 - br i1 %12, label %while_body, label %while_end + %8 = load i64, i64* %i + %9 = load i64, i64* %s + %10 = icmp slt i64 %8, %9 + br i1 %10, label %while_body, label %while_end while_body: ; preds = %while_block br label %if_block1 while_step: ; preds = %if_end3 - %13 = call i32 @"post_++.39"(i32* %i) + %11 = call i64 @"post_++.43"(i64* %i) br label %while_block while_end: ; preds = %while_block ret i1 true if_block1: ; preds = %while_body - %14 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %15 = load i32, i32* %i - %16 = zext i32 %15 to i64 - store i64 %16, i64* %tmp.this4 - %17 = load i64, i64* %tmp.this4 - %18 = call i8* @at.271(%"Vector[Char]"* %14, i64 %17) + %12 = load %String*, %String** %this.addr + %13 = load i64, i64* %i + %14 = call i8* @"().344"(%String* %12, i64 %13) + %15 = load i8, i8* %14 + %16 = load %String*, %String** %other.addr + %17 = load i64, i64* %i + %18 = call i8* @"().344"(%String* %16, i64 %17) %19 = load i8, i8* %18 - %20 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr - %21 = load i32, i32* %i - %22 = zext i32 %21 to i64 - store i64 %22, i64* %tmp.this5 - %23 = load i64, i64* %tmp.this5 - %24 = call i8* @at.271(%"Vector[Char]"* %20, i64 %23) - %25 = load i8, i8* %24 - %26 = icmp eq i8 %19, %25 - %27 = xor i1 true, %26 - br i1 %27, label %if_then2, label %if_end3 + %20 = icmp ne i8 %15, %19 + br i1 %20, label %if_then2, label %if_end3 if_then2: ; preds = %if_block1 ret i1 false -if_end3: ; preds = %dumy_block6, %if_block1 +if_end3: ; preds = %dumy_block4, %if_block1 br label %while_step -dumy_block6: ; No predecessors! +dumy_block4: ; No predecessors! br label %if_end3 } ; Function Attrs: inlinehint nounwind -define internal i8* @at.271(%"Vector[Char]"* %this, i64 %index) #4 { - %this.addr = alloca %"Vector[Char]"* - store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr +define internal i8* @"().344"(%String* %this, i64 %index) #4 { + %this.addr = alloca %String* + store %String* %this, %String** %this.addr %index.addr = alloca i64 store i64 %index, i64* %index.addr %"$tmpC" = alloca %"RawPtr[Char]" + %tmp.this = alloca i64 br label %code code: ; preds = %0 - %1 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %2 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %1, i32 0, i32 0 + %1 = load %String*, %String** %this.addr + %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 0 %3 = load %"RawPtr[Char]", %"RawPtr[Char]"* %2 %4 = load i64, i64* %index.addr - call void @advance(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %3, i64 %4) + store i64 %4, i64* %tmp.this + %5 = load i64, i64* %tmp.this + call void @advance(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %3, i64 %5) + %6 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC" + %7 = call i8* @value(%"RawPtr[Char]" %6) + ret i8* %7 +} + +; Function Attrs: alwaysinline nounwind +define internal void @dtor.345(%"RawPtr[Char]"* %this) #3 { + %this.addr = alloca %"RawPtr[Char]"* + store %"RawPtr[Char]"* %this, %"RawPtr[Char]"** %this.addr + br label %code + +code: ; preds = %0 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.346"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %other) #3 { + %this.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* + store %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %this.addr + %other.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* + store %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %other, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %this.addr + %2 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]", %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %1, i32 0, i32 0 + %3 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %other.addr + %4 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]", %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %3, i32 0, i32 0 + %5 = call i1 @"==.347"(%"RangeWithLookahead[BufferedCharSourceRange]"* %2, %"RangeWithLookahead[BufferedCharSourceRange]"* %4) + br i1 %5, label %cond.true, label %cond.false + +cond.true: ; preds = %code + %6 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %this.addr + %7 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]", %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %6, i32 0, i32 1 + %8 = load %Location*, %Location** %7 + %9 = bitcast %Location* %8 to i8* + %10 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %other.addr + %11 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]", %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %10, i32 0, i32 1 + %12 = load %Location*, %Location** %11 + %13 = bitcast %Location* %12 to i8* + %14 = call i1 @implOpRefEQ(i8* %9, i8* %13) + br label %cond.end + +cond.false: ; preds = %code + br label %cond.end + +cond.end: ; preds = %cond.false, %cond.true + %cond.res = phi i1 [ %14, %cond.true ], [ false, %cond.false ] + ret i1 %cond.res +} + +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.347"(%"RangeWithLookahead[BufferedCharSourceRange]"* %this, %"RangeWithLookahead[BufferedCharSourceRange]"* %other) #3 { + %this.addr = alloca %"RangeWithLookahead[BufferedCharSourceRange]"* + store %"RangeWithLookahead[BufferedCharSourceRange]"* %this, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %other.addr = alloca %"RangeWithLookahead[BufferedCharSourceRange]"* + store %"RangeWithLookahead[BufferedCharSourceRange]"* %other, %"RangeWithLookahead[BufferedCharSourceRange]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %2 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %1, i32 0, i32 0 + %3 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %other.addr + %4 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %3, i32 0, i32 0 + %5 = call i1 @"==.348"(%BufferedCharSourceRange* %2, %BufferedCharSourceRange* %4) + br i1 %5, label %cond.true, label %cond.false + +cond.true: ; preds = %code + %6 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %7 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %6, i32 0, i32 1 + %8 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %other.addr + %9 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %8, i32 0, i32 1 + %10 = call i1 @"==.349"(%"Vector[Char]"* %7, %"Vector[Char]"* %9) + br label %cond.end + +cond.false: ; preds = %code + br label %cond.end + +cond.end: ; preds = %cond.false, %cond.true + %cond.res = phi i1 [ %10, %cond.true ], [ false, %cond.false ] + ret i1 %cond.res +} + +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.348"(%BufferedCharSourceRange* %this, %BufferedCharSourceRange* %other) #3 { + %this.addr = alloca %BufferedCharSourceRange* + store %BufferedCharSourceRange* %this, %BufferedCharSourceRange** %this.addr + %other.addr = alloca %BufferedCharSourceRange* + store %BufferedCharSourceRange* %other, %BufferedCharSourceRange** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %BufferedCharSourceRange*, %BufferedCharSourceRange** %this.addr + %2 = getelementptr inbounds %BufferedCharSourceRange, %BufferedCharSourceRange* %1, i32 0, i32 0 + %3 = load %BufferedCharSource*, %BufferedCharSource** %2 + %4 = bitcast %BufferedCharSource* %3 to i8* + %5 = load %BufferedCharSourceRange*, %BufferedCharSourceRange** %other.addr + %6 = getelementptr inbounds %BufferedCharSourceRange, %BufferedCharSourceRange* %5, i32 0, i32 0 + %7 = load %BufferedCharSource*, %BufferedCharSource** %6 + %8 = bitcast %BufferedCharSource* %7 to i8* + %9 = call i1 @implOpRefEQ(i8* %4, i8* %8) + ret i1 %9 +} + +; Function Attrs: inlinehint nounwind +define internal i1 @"==.349"(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #4 { + %this.addr = alloca %"Vector[Char]"* + store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr + %other.addr = alloca %"Vector[Char]"* + store %"Vector[Char]"* %other, %"Vector[Char]"** %other.addr + %i = alloca i32 + %s = alloca i64 + %tmp.this = alloca i64 + %tmp.this4 = alloca i64 + %tmp.this5 = alloca i64 + br label %code + +code: ; preds = %0 + br label %if_block + +if_block: ; preds = %code + %1 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr + %2 = call i64 @size.199(%"Vector[Char]"* %1) + %3 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr + %4 = call i64 @size.199(%"Vector[Char]"* %3) + %5 = icmp ne i64 %2, %4 + br i1 %5, label %if_then, label %if_end + +if_then: ; preds = %if_block + ret i1 false + +if_end: ; preds = %dumy_block, %if_block + store i32 0, i32* %i + %6 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr + %7 = call i64 @size.199(%"Vector[Char]"* %6) + store i64 %7, i64* %s + br label %while_block + +dumy_block: ; No predecessors! + br label %if_end + +while_block: ; preds = %while_step, %if_end + %8 = load i32, i32* %i + %9 = zext i32 %8 to i64 + store i64 %9, i64* %tmp.this + %10 = load i64, i64* %tmp.this + %11 = load i64, i64* %s + %12 = icmp slt i64 %10, %11 + br i1 %12, label %while_body, label %while_end + +while_body: ; preds = %while_block + br label %if_block1 + +while_step: ; preds = %if_end3 + %13 = call i32 @"post_++.39"(i32* %i) + br label %while_block + +while_end: ; preds = %while_block + ret i1 true + +if_block1: ; preds = %while_body + %14 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr + %15 = load i32, i32* %i + %16 = zext i32 %15 to i64 + store i64 %16, i64* %tmp.this4 + %17 = load i64, i64* %tmp.this4 + %18 = call i8* @at.350(%"Vector[Char]"* %14, i64 %17) + %19 = load i8, i8* %18 + %20 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr + %21 = load i32, i32* %i + %22 = zext i32 %21 to i64 + store i64 %22, i64* %tmp.this5 + %23 = load i64, i64* %tmp.this5 + %24 = call i8* @at.350(%"Vector[Char]"* %20, i64 %23) + %25 = load i8, i8* %24 + %26 = icmp eq i8 %19, %25 + %27 = xor i1 true, %26 + br i1 %27, label %if_then2, label %if_end3 + +if_then2: ; preds = %if_block1 + ret i1 false + +if_end3: ; preds = %dumy_block6, %if_block1 + br label %while_step + +dumy_block6: ; No predecessors! + br label %if_end3 +} + +; Function Attrs: inlinehint nounwind +define internal i8* @at.350(%"Vector[Char]"* %this, i64 %index) #4 { + %this.addr = alloca %"Vector[Char]"* + store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr + %index.addr = alloca i64 + store i64 %index, i64* %index.addr + %"$tmpC" = alloca %"RawPtr[Char]" + br label %code + +code: ; preds = %0 + %1 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr + %2 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %1, i32 0, i32 0 + %3 = load %"RawPtr[Char]", %"RawPtr[Char]"* %2 + %4 = load i64, i64* %index.addr + call void @advance.201(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %3, i64 %4) %5 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC" %6 = call i8* @value(%"RawPtr[Char]" %5) ret i8* %6 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.272"(%Token* %this, %Token* %other) #3 { +define internal i1 @"==.351"(%Token* %this, %Token* %other) #3 { %this.addr = alloca %Token* store %Token* %this, %Token** %this.addr %other.addr = alloca %Token* @@ -8713,7 +10449,7 @@ code: ; preds = %0 %2 = getelementptr inbounds %Token, %Token* %1, i32 0, i32 0 %3 = load %Token*, %Token** %other.addr %4 = getelementptr inbounds %Token, %Token* %3, i32 0, i32 0 - %5 = call i1 @"==.265"(%Location* %2, %Location* %4) + %5 = call i1 @"==.336"(%Location* %2, %Location* %4) br i1 %5, label %cond.true7, label %cond.false8 cond.true: ; preds = %cond.end3 @@ -8755,7 +10491,7 @@ cond.true4: ; preds = %cond.end9 %21 = getelementptr inbounds %Token, %Token* %20, i32 0, i32 2 %22 = load %Token*, %Token** %other.addr %23 = getelementptr inbounds %Token, %Token* %22, i32 0, i32 2 - %24 = call i1 @"==.274"(%String* %21, %String* %23) + %24 = call i1 @"==.343"(%String* %21, %String* %23) br label %cond.end6 cond.false5: ; preds = %cond.end9 @@ -8770,7 +10506,7 @@ cond.true7: ; preds = %code %26 = getelementptr inbounds %Token, %Token* %25, i32 0, i32 1 %27 = load %Token*, %Token** %other.addr %28 = getelementptr inbounds %Token, %Token* %27, i32 0, i32 1 - %29 = call i1 @"==.273"(%TokenType* %26, %TokenType* %28) + %29 = call i1 @"==.352"(%TokenType* %26, %TokenType* %28) br label %cond.end9 cond.false8: ; preds = %code @@ -8782,7 +10518,7 @@ cond.end9: ; preds = %cond.false8, %cond. } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.273"(%TokenType* %this, %TokenType* %other) #3 { +define internal i1 @"==.352"(%TokenType* %this, %TokenType* %other) #3 { %this.addr = alloca %TokenType* store %TokenType* %this, %TokenType** %this.addr %other.addr = alloca %TokenType* @@ -8800,133 +10536,79 @@ code: ; preds = %0 ret i1 %7 } -; Function Attrs: inlinehint nounwind -define internal i1 @"==.274"(%String* %this, %String* %other) #4 { - %this.addr = alloca %String* - store %String* %this, %String** %this.addr - %other.addr = alloca %String* - store %String* %other, %String** %other.addr - %i = alloca i64 - %s = alloca i64 +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.353"(%ErrorReporter* %this, %ErrorReporter* %other) #3 { + %this.addr = alloca %ErrorReporter* + store %ErrorReporter* %this, %ErrorReporter** %this.addr + %other.addr = alloca %ErrorReporter* + store %ErrorReporter* %other, %ErrorReporter** %other.addr br label %code code: ; preds = %0 - br label %if_block - -if_block: ; preds = %code - %1 = load %String*, %String** %this.addr - %2 = call i64 @size.185(%String* %1) - %3 = load %String*, %String** %other.addr - %4 = call i64 @size.185(%String* %3) - %5 = icmp ne i64 %2, %4 - br i1 %5, label %if_then, label %if_end - -if_then: ; preds = %if_block - ret i1 false - -if_end: ; preds = %dumy_block, %if_block - store i64 0, i64* %i - %6 = load %String*, %String** %this.addr - %7 = call i64 @size.185(%String* %6) - store i64 %7, i64* %s - br label %while_block - -dumy_block: ; No predecessors! - br label %if_end - -while_block: ; preds = %while_step, %if_end - %8 = load i64, i64* %i - %9 = load i64, i64* %s - %10 = icmp slt i64 %8, %9 - br i1 %10, label %while_body, label %while_end - -while_body: ; preds = %while_block - br label %if_block1 - -while_step: ; preds = %if_end3 - %11 = call i64 @"post_++.43"(i64* %i) - br label %while_block - -while_end: ; preds = %while_block - ret i1 true - -if_block1: ; preds = %while_body - %12 = load %String*, %String** %this.addr - %13 = load i64, i64* %i - %14 = call i8* @"().275"(%String* %12, i64 %13) - %15 = load i8, i8* %14 - %16 = load %String*, %String** %other.addr - %17 = load i64, i64* %i - %18 = call i8* @"().275"(%String* %16, i64 %17) - %19 = load i8, i8* %18 - %20 = icmp ne i8 %15, %19 - br i1 %20, label %if_then2, label %if_end3 - -if_then2: ; preds = %if_block1 - ret i1 false - -if_end3: ; preds = %dumy_block4, %if_block1 - br label %while_step + %1 = load %ErrorReporter*, %ErrorReporter** %this.addr + %2 = getelementptr inbounds %ErrorReporter, %ErrorReporter* %1, i32 0, i32 0 + %3 = load %ErrorReporter*, %ErrorReporter** %other.addr + %4 = getelementptr inbounds %ErrorReporter, %ErrorReporter* %3, i32 0, i32 0 + %5 = call i1 @"==.341"(%UntypedPtr* %2, %UntypedPtr* %4) + br i1 %5, label %cond.true, label %cond.false -dumy_block4: ; No predecessors! - br label %if_end3 -} +cond.true: ; preds = %code + %6 = load %ErrorReporter*, %ErrorReporter** %this.addr + %7 = getelementptr inbounds %ErrorReporter, %ErrorReporter* %6, i32 0, i32 1 + %8 = load %ErrorReporter*, %ErrorReporter** %other.addr + %9 = getelementptr inbounds %ErrorReporter, %ErrorReporter* %8, i32 0, i32 1 + %10 = call i1 @"==.354"(%"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* %7, %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* %9) + br label %cond.end -; Function Attrs: inlinehint nounwind -define internal i8* @"().275"(%String* %this, i64 %index) #4 { - %this.addr = alloca %String* - store %String* %this, %String** %this.addr - %index.addr = alloca i64 - store i64 %index, i64* %index.addr - %"$tmpC" = alloca %"RawPtr[Char]" - %tmp.this = alloca i64 - br label %code +cond.false: ; preds = %code + br label %cond.end -code: ; preds = %0 - %1 = load %String*, %String** %this.addr - %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 0 - %3 = load %"RawPtr[Char]", %"RawPtr[Char]"* %2 - %4 = load i64, i64* %index.addr - store i64 %4, i64* %tmp.this - %5 = load i64, i64* %tmp.this - call void @advance.187(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %3, i64 %5) - %6 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC" - %7 = call i8* @value(%"RawPtr[Char]" %6) - ret i8* %7 +cond.end: ; preds = %cond.false, %cond.true + %cond.res = phi i1 [ %10, %cond.true ], [ false, %cond.false ] + ret i1 %cond.res } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.276(%"RawPtr[Char]"* %this) #3 { - %this.addr = alloca %"RawPtr[Char]"* - store %"RawPtr[Char]"* %this, %"RawPtr[Char]"** %this.addr +define internal i1 @"==.354"(%"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* %this, %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* + store %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* %this, %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* + store %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* %other, %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"** %other.addr br label %code code: ; preds = %0 - ret void + %1 = load %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"*, %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]", %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"*, %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"** %other.addr + %5 = getelementptr inbounds %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]", %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* %4, i32 0, i32 0 + %6 = load i8*, i8** %5 + %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) + ret i1 %7 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.277"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %other) #3 { - %this.addr = alloca %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %other.addr = alloca %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %other, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr +define internal i1 @"==.355"(%"SparrowLayoutDecoder[SparrowScanner]"* %this, %"SparrowLayoutDecoder[SparrowScanner]"* %other) #3 { + %this.addr = alloca %"SparrowLayoutDecoder[SparrowScanner]"* + store %"SparrowLayoutDecoder[SparrowScanner]"* %this, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %other.addr = alloca %"SparrowLayoutDecoder[SparrowScanner]"* + store %"SparrowLayoutDecoder[SparrowScanner]"* %other, %"SparrowLayoutDecoder[SparrowScanner]"** %other.addr br label %code code: ; preds = %0 - %1 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 0 - %3 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr - %4 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %3, i32 0, i32 0 - %5 = call i1 @"==.278"(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %2, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %4) + %1 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %2 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %1, i32 0, i32 0 + %3 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %other.addr + %4 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %3, i32 0, i32 0 + %5 = call i1 @"==.356"(%"RangeWithLookahead[SparrowScanner]"* %2, %"RangeWithLookahead[SparrowScanner]"* %4) br i1 %5, label %cond.true10, label %cond.false11 cond.true: ; preds = %cond.end3 - %6 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %7 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %6, i32 0, i32 5 + %6 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %7 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %6, i32 0, i32 5 %8 = load i32, i32* %7 - %9 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr - %10 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %9, i32 0, i32 5 + %9 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %other.addr + %10 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %9, i32 0, i32 5 %11 = load i32, i32* %10 %12 = icmp eq i32 %8, %11 br label %cond.end @@ -8939,11 +10621,11 @@ cond.end: ; preds = %cond.false, %cond.t ret i1 %cond.res16 cond.true1: ; preds = %cond.end6 - %13 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %14 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %13, i32 0, i32 4 - %15 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr - %16 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %15, i32 0, i32 4 - %17 = call i1 @"==.273"(%TokenType* %14, %TokenType* %16) + %13 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %14 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %13, i32 0, i32 4 + %15 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %other.addr + %16 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %15, i32 0, i32 4 + %17 = call i1 @"==.352"(%TokenType* %14, %TokenType* %16) br label %cond.end3 cond.false2: ; preds = %cond.end6 @@ -8954,11 +10636,11 @@ cond.end3: ; preds = %cond.false2, %cond. br i1 %cond.res15, label %cond.true, label %cond.false cond.true4: ; preds = %cond.end9 - %18 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %19 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %18, i32 0, i32 3 - %20 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr - %21 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %20, i32 0, i32 3 - %22 = call i1 @"==.270"(%"Vector[Char]"* %19, %"Vector[Char]"* %21) + %18 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %19 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %18, i32 0, i32 3 + %20 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %other.addr + %21 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %20, i32 0, i32 3 + %22 = call i1 @"==.349"(%"Vector[Char]"* %19, %"Vector[Char]"* %21) br label %cond.end6 cond.false5: ; preds = %cond.end9 @@ -8969,11 +10651,11 @@ cond.end6: ; preds = %cond.false5, %cond. br i1 %cond.res14, label %cond.true1, label %cond.false2 cond.true7: ; preds = %cond.end12 - %23 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %24 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %23, i32 0, i32 2 - %25 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr - %26 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %25, i32 0, i32 2 - %27 = call i1 @"==.281"(%"Vector[UInt]"* %24, %"Vector[UInt]"* %26) + %23 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %24 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %23, i32 0, i32 2 + %25 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %other.addr + %26 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %25, i32 0, i32 2 + %27 = call i1 @"==.359"(%"Vector[UInt]"* %24, %"Vector[UInt]"* %26) br label %cond.end9 cond.false8: ; preds = %cond.end12 @@ -8984,11 +10666,11 @@ cond.end9: ; preds = %cond.false8, %cond. br i1 %cond.res13, label %cond.true4, label %cond.false5 cond.true10: ; preds = %code - %28 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %29 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %28, i32 0, i32 1 - %30 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %other.addr - %31 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %30, i32 0, i32 1 - %32 = call i1 @"==.132"(%ExternalErrorReporter* %29, %ExternalErrorReporter* %31) + %28 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %29 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %28, i32 0, i32 1 + %30 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %other.addr + %31 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %30, i32 0, i32 1 + %32 = call i1 @"==.353"(%ErrorReporter* %29, %ErrorReporter* %31) br label %cond.end12 cond.false11: ; preds = %code @@ -9000,27 +10682,27 @@ cond.end12: ; preds = %cond.false11, %cond } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.278"(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %other) #3 { - %this.addr = alloca %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* - store %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr - %other.addr = alloca %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* - store %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %other, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %other.addr +define internal i1 @"==.356"(%"RangeWithLookahead[SparrowScanner]"* %this, %"RangeWithLookahead[SparrowScanner]"* %other) #3 { + %this.addr = alloca %"RangeWithLookahead[SparrowScanner]"* + store %"RangeWithLookahead[SparrowScanner]"* %this, %"RangeWithLookahead[SparrowScanner]"** %this.addr + %other.addr = alloca %"RangeWithLookahead[SparrowScanner]"* + store %"RangeWithLookahead[SparrowScanner]"* %other, %"RangeWithLookahead[SparrowScanner]"** %other.addr br label %code code: ; preds = %0 - %1 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr - %2 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %1, i32 0, i32 0 - %3 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %other.addr - %4 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %3, i32 0, i32 0 - %5 = call i1 @"==.264"(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %2, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %4) + %1 = load %"RangeWithLookahead[SparrowScanner]"*, %"RangeWithLookahead[SparrowScanner]"** %this.addr + %2 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner]", %"RangeWithLookahead[SparrowScanner]"* %1, i32 0, i32 0 + %3 = load %"RangeWithLookahead[SparrowScanner]"*, %"RangeWithLookahead[SparrowScanner]"** %other.addr + %4 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner]", %"RangeWithLookahead[SparrowScanner]"* %3, i32 0, i32 0 + %5 = call i1 @"==.335"(%SparrowScanner* %2, %SparrowScanner* %4) br i1 %5, label %cond.true, label %cond.false cond.true: ; preds = %code - %6 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr - %7 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %6, i32 0, i32 1 - %8 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %other.addr - %9 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %8, i32 0, i32 1 - %10 = call i1 @"==.279"(%"Vector[Token]"* %7, %"Vector[Token]"* %9) + %6 = load %"RangeWithLookahead[SparrowScanner]"*, %"RangeWithLookahead[SparrowScanner]"** %this.addr + %7 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner]", %"RangeWithLookahead[SparrowScanner]"* %6, i32 0, i32 1 + %8 = load %"RangeWithLookahead[SparrowScanner]"*, %"RangeWithLookahead[SparrowScanner]"** %other.addr + %9 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner]", %"RangeWithLookahead[SparrowScanner]"* %8, i32 0, i32 1 + %10 = call i1 @"==.357"(%"Vector[Token]"* %7, %"Vector[Token]"* %9) br label %cond.end cond.false: ; preds = %code @@ -9032,7 +10714,7 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: inlinehint nounwind -define internal i1 @"==.279"(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #4 { +define internal i1 @"==.357"(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #4 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr %other.addr = alloca %"Vector[Token]"* @@ -9049,9 +10731,9 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr - %2 = call i64 @size.191(%"Vector[Token]"* %1) + %2 = call i64 @size.209(%"Vector[Token]"* %1) %3 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr - %4 = call i64 @size.191(%"Vector[Token]"* %3) + %4 = call i64 @size.209(%"Vector[Token]"* %3) %5 = icmp ne i64 %2, %4 br i1 %5, label %if_then, label %if_end @@ -9061,7 +10743,7 @@ if_then: ; preds = %if_block if_end: ; preds = %dumy_block, %if_block store i32 0, i32* %i %6 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr - %7 = call i64 @size.191(%"Vector[Token]"* %6) + %7 = call i64 @size.209(%"Vector[Token]"* %6) store i64 %7, i64* %s br label %while_block @@ -9093,14 +10775,14 @@ if_block1: ; preds = %while_body %16 = zext i32 %15 to i64 store i64 %16, i64* %tmp.this4 %17 = load i64, i64* %tmp.this4 - %18 = call %Token* @at.280(%"Vector[Token]"* %14, i64 %17) + %18 = call %Token* @at.358(%"Vector[Token]"* %14, i64 %17) %19 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr %20 = load i32, i32* %i %21 = zext i32 %20 to i64 store i64 %21, i64* %tmp.this5 %22 = load i64, i64* %tmp.this5 - %23 = call %Token* @at.280(%"Vector[Token]"* %19, i64 %22) - %24 = call i1 @"==.272"(%Token* %18, %Token* %23) + %23 = call %Token* @at.358(%"Vector[Token]"* %19, i64 %22) + %24 = call i1 @"==.351"(%Token* %18, %Token* %23) %25 = xor i1 true, %24 br i1 %25, label %if_then2, label %if_end3 @@ -9115,7 +10797,7 @@ dumy_block6: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal %Token* @at.280(%"Vector[Token]"* %this, i64 %index) #4 { +define internal %Token* @at.358(%"Vector[Token]"* %this, i64 %index) #4 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr %index.addr = alloca i64 @@ -9128,14 +10810,14 @@ code: ; preds = %0 %2 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %1, i32 0, i32 0 %3 = load %"RawPtr[Token]", %"RawPtr[Token]"* %2 %4 = load i64, i64* %index.addr - call void @advance.197(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %3, i64 %4) + call void @advance.215(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %3, i64 %4) %5 = load %"RawPtr[Token]", %"RawPtr[Token]"* %"$tmpC" - %6 = call %Token* @value.201(%"RawPtr[Token]" %5) + %6 = call %Token* @value.219(%"RawPtr[Token]" %5) ret %Token* %6 } ; Function Attrs: inlinehint nounwind -define internal i1 @"==.281"(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #4 { +define internal i1 @"==.359"(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #4 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr %other.addr = alloca %"Vector[UInt]"* @@ -9152,9 +10834,9 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr - %2 = call i64 @size.204(%"Vector[UInt]"* %1) + %2 = call i64 @size.222(%"Vector[UInt]"* %1) %3 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr - %4 = call i64 @size.204(%"Vector[UInt]"* %3) + %4 = call i64 @size.222(%"Vector[UInt]"* %3) %5 = icmp ne i64 %2, %4 br i1 %5, label %if_then, label %if_end @@ -9164,7 +10846,7 @@ if_then: ; preds = %if_block if_end: ; preds = %dumy_block, %if_block store i32 0, i32* %i %6 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr - %7 = call i64 @size.204(%"Vector[UInt]"* %6) + %7 = call i64 @size.222(%"Vector[UInt]"* %6) store i64 %7, i64* %s br label %while_block @@ -9196,14 +10878,14 @@ if_block1: ; preds = %while_body %16 = zext i32 %15 to i64 store i64 %16, i64* %tmp.this4 %17 = load i64, i64* %tmp.this4 - %18 = call i32* @at.282(%"Vector[UInt]"* %14, i64 %17) + %18 = call i32* @at.360(%"Vector[UInt]"* %14, i64 %17) %19 = load i32, i32* %18 %20 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr %21 = load i32, i32* %i %22 = zext i32 %21 to i64 store i64 %22, i64* %tmp.this5 %23 = load i64, i64* %tmp.this5 - %24 = call i32* @at.282(%"Vector[UInt]"* %20, i64 %23) + %24 = call i32* @at.360(%"Vector[UInt]"* %20, i64 %23) %25 = load i32, i32* %24 %26 = icmp eq i32 %19, %25 %27 = xor i1 true, %26 @@ -9220,7 +10902,7 @@ dumy_block6: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal i32* @at.282(%"Vector[UInt]"* %this, i64 %index) #4 { +define internal i32* @at.360(%"Vector[UInt]"* %this, i64 %index) #4 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr %index.addr = alloca i64 @@ -9233,98 +10915,113 @@ code: ; preds = %0 %2 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %1, i32 0, i32 0 %3 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %2 %4 = load i64, i64* %index.addr - call void @advance.210(%"RawPtr[UInt]"* %"$tmpC", %"RawPtr[UInt]" %3, i64 %4) + call void @advance.228(%"RawPtr[UInt]"* %"$tmpC", %"RawPtr[UInt]" %3, i64 %4) %5 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %"$tmpC" - %6 = call i32* @value.229(%"RawPtr[UInt]" %5) + %6 = call i32* @value.272(%"RawPtr[UInt]" %5) ret i32* %6 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.283"(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %other) #3 { - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %other.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %other, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %other.addr +define internal i1 @"==.361"(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %other) #3 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %other.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %other, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %other.addr br label %code code: ; preds = %0 - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 0 - %3 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %other.addr - %4 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %3, i32 0, i32 0 - %5 = call i1 @"==.284"(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %2, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %4) - br i1 %5, label %cond.true4, label %cond.false5 + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, i32 0, i32 0 + %3 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %other.addr + %4 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %3, i32 0, i32 0 + %5 = call i1 @"==.362"(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %2, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %4) + br i1 %5, label %cond.true7, label %cond.false8 cond.true: ; preds = %cond.end3 - %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %7 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %6, i32 0, i32 3 - %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %other.addr - %9 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8, i32 0, i32 3 - %10 = call i1 @"==.132"(%ExternalErrorReporter* %7, %ExternalErrorReporter* %9) + %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %7 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %6, i32 0, i32 4 + %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %other.addr + %9 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %8, i32 0, i32 4 + %10 = call i1 @"==.353"(%ErrorReporter* %7, %ErrorReporter* %9) br label %cond.end cond.false: ; preds = %cond.end3 br label %cond.end cond.end: ; preds = %cond.false, %cond.true - %cond.res8 = phi i1 [ %10, %cond.true ], [ false, %cond.false ] - ret i1 %cond.res8 + %cond.res12 = phi i1 [ %10, %cond.true ], [ false, %cond.false ] + ret i1 %cond.res12 cond.true1: ; preds = %cond.end6 - %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %12 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11, i32 0, i32 2 - %13 = load i1, i1* %12 - %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %other.addr - %15 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %14, i32 0, i32 2 - %16 = load i1, i1* %15 - %17 = icmp eq i1 %13, %16 + %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %12 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %11, i32 0, i32 3 + %13 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %other.addr + %14 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %13, i32 0, i32 3 + %15 = call i1 @"==.363"(%AstBuilder* %12, %AstBuilder* %14) br label %cond.end3 cond.false2: ; preds = %cond.end6 br label %cond.end3 cond.end3: ; preds = %cond.false2, %cond.true1 - %cond.res7 = phi i1 [ %17, %cond.true1 ], [ false, %cond.false2 ] - br i1 %cond.res7, label %cond.true, label %cond.false - -cond.true4: ; preds = %code - %18 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %19 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %18, i32 0, i32 1 - %20 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %other.addr - %21 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %20, i32 0, i32 1 - %22 = call i1 @"==.272"(%Token* %19, %Token* %21) + %cond.res11 = phi i1 [ %15, %cond.true1 ], [ false, %cond.false2 ] + br i1 %cond.res11, label %cond.true, label %cond.false + +cond.true4: ; preds = %cond.end9 + %16 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %17 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %16, i32 0, i32 2 + %18 = load i1, i1* %17 + %19 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %other.addr + %20 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %19, i32 0, i32 2 + %21 = load i1, i1* %20 + %22 = icmp eq i1 %18, %21 br label %cond.end6 -cond.false5: ; preds = %code +cond.false5: ; preds = %cond.end9 br label %cond.end6 cond.end6: ; preds = %cond.false5, %cond.true4 - %cond.res = phi i1 [ %22, %cond.true4 ], [ false, %cond.false5 ] - br i1 %cond.res, label %cond.true1, label %cond.false2 + %cond.res10 = phi i1 [ %22, %cond.true4 ], [ false, %cond.false5 ] + br i1 %cond.res10, label %cond.true1, label %cond.false2 + +cond.true7: ; preds = %code + %23 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %24 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %23, i32 0, i32 1 + %25 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %other.addr + %26 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %25, i32 0, i32 1 + %27 = call i1 @"==.351"(%Token* %24, %Token* %26) + br label %cond.end9 + +cond.false8: ; preds = %code + br label %cond.end9 + +cond.end9: ; preds = %cond.false8, %cond.true7 + %cond.res = phi i1 [ %27, %cond.true7 ], [ false, %cond.false8 ] + br i1 %cond.res, label %cond.true4, label %cond.false5 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.284"(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %other) #3 { - %this.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* - store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %other.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* - store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %other, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %other.addr +define internal i1 @"==.362"(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %other) #3 { + %this.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* + store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %other.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* + store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %other, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %other.addr br label %code code: ; preds = %0 - %1 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %2 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %1, i32 0, i32 0 - %3 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %other.addr - %4 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %3, i32 0, i32 0 - %5 = call i1 @"==.277"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %2, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %4) + %1 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %2 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %1, i32 0, i32 0 + %3 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %other.addr + %4 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %3, i32 0, i32 0 + %5 = call i1 @"==.355"(%"SparrowLayoutDecoder[SparrowScanner]"* %2, %"SparrowLayoutDecoder[SparrowScanner]"* %4) br i1 %5, label %cond.true, label %cond.false cond.true: ; preds = %code - %6 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %7 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %6, i32 0, i32 1 - %8 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %other.addr - %9 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %8, i32 0, i32 1 - %10 = call i1 @"==.279"(%"Vector[Token]"* %7, %"Vector[Token]"* %9) + %6 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %7 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %6, i32 0, i32 1 + %8 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %other.addr + %9 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %8, i32 0, i32 1 + %10 = call i1 @"==.357"(%"Vector[Token]"* %7, %"Vector[Token]"* %9) br label %cond.end cond.false: ; preds = %code @@ -9335,489 +11032,1184 @@ cond.end: ; preds = %cond.false, %cond.t ret i1 %cond.res } -; Function Attrs: inlinehint nounwind -define internal void @ctor.285(%ParserContext* %this, %StringRef %filename, %StringRef %code, %Location %loc, i1 %scannerOnly) #4 { - %this.addr = alloca %ParserContext* - store %ParserContext* %this, %ParserContext** %this.addr - %filename.addr = alloca %StringRef - store %StringRef %filename, %StringRef* %filename.addr - %code.addr = alloca %StringRef - store %StringRef %code, %StringRef* %code.addr - %loc.addr = alloca %Location - store %Location %loc, %Location* %loc.addr - %scannerOnly.addr = alloca i1 - store i1 %scannerOnly, i1* %scannerOnly.addr - %reporter = alloca %ExternalErrorReporter - %tmp.StringRef = alloca %StringRef - %"$tmpC" = alloca %FileRange - %tmp.StringRef2 = alloca %StringRef - %"$tmpC6" = alloca %String - %tmp.StringRef7 = alloca %StringRef - br label %code1 +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.363"(%AstBuilder* %this, %AstBuilder* %other) #3 { + %this.addr = alloca %AstBuilder* + store %AstBuilder* %this, %AstBuilder** %this.addr + %other.addr = alloca %AstBuilder* + store %AstBuilder* %other, %AstBuilder** %other.addr + br label %code -code1: ; preds = %0 - %1 = load %ParserContext*, %ParserContext** %this.addr - %2 = getelementptr inbounds %ParserContext, %ParserContext* %1, i32 0, i32 0 - call void @ctor.146(%File* %2) - %3 = load %ParserContext*, %ParserContext** %this.addr - %4 = getelementptr inbounds %ParserContext, %ParserContext* %3, i32 0, i32 1 - call void @ctor.147(%FileRange* %4) - %5 = load %ParserContext*, %ParserContext** %this.addr - %6 = getelementptr inbounds %ParserContext, %ParserContext* %5, i32 0, i32 2 - call void @ctor.133(%_CharSource* %6) - %7 = load %ParserContext*, %ParserContext** %this.addr - %8 = getelementptr inbounds %ParserContext, %ParserContext* %7, i32 0, i32 4 - call void @ctor.159(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %8) - %9 = load %ParserContext*, %ParserContext** %this.addr - %10 = getelementptr inbounds %ParserContext, %ParserContext* %9, i32 0, i32 5 - call void @ctor.165(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %10) - br label %if_block +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %this.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 0 + %3 = load %AstBuilder*, %AstBuilder** %other.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = call i1 @"==.341"(%UntypedPtr* %2, %UntypedPtr* %4) + br i1 %5, label %cond.true112, label %cond.false113 -if_block: ; preds = %code1 - %11 = call i1 @isEmpty(%StringRef* %code.addr) - br i1 %11, label %if_then, label %if_else +cond.true: ; preds = %cond.end3 + %6 = load %AstBuilder*, %AstBuilder** %this.addr + %7 = getelementptr inbounds %AstBuilder, %AstBuilder* %6, i32 0, i32 39 + %8 = load %AstBuilder*, %AstBuilder** %other.addr + %9 = getelementptr inbounds %AstBuilder, %AstBuilder* %8, i32 0, i32 39 + %10 = call i1 @"==.386"(%"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %7, %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %9) + br label %cond.end -if_then: ; preds = %if_block - %12 = load %ParserContext*, %ParserContext** %this.addr - %13 = getelementptr inbounds %ParserContext, %ParserContext* %12, i32 0, i32 0 - %14 = load %StringRef, %StringRef* %filename.addr - %15 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 0 - %16 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 1 - store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.8, i32 0, i32 0), i8** %15 - store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.8, i32 0, i32 1), i8** %16 - %17 = load %StringRef, %StringRef* %tmp.StringRef - call void @ctor.286(%File* %13, %StringRef %14, %StringRef %17) - %18 = load %ParserContext*, %ParserContext** %this.addr - %19 = getelementptr inbounds %ParserContext, %ParserContext* %18, i32 0, i32 1 - %20 = load %ParserContext*, %ParserContext** %this.addr - %21 = getelementptr inbounds %ParserContext, %ParserContext* %20, i32 0, i32 0 - call void @all(%FileRange* %"$tmpC", %File* %21) - call void @ctor.169(%FileRange* %19, %FileRange* %"$tmpC") - %22 = load %ParserContext*, %ParserContext** %this.addr - %23 = getelementptr inbounds %ParserContext, %ParserContext* %22, i32 0, i32 2 - %24 = load %ParserContext*, %ParserContext** %this.addr - %25 = getelementptr inbounds %ParserContext, %ParserContext* %24, i32 0, i32 1 - %26 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef2, i32 0, i32 0 - %27 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef2, i32 0, i32 1 - store i8* getelementptr inbounds ([1 x i8], [1 x i8]* @str.9, i32 0, i32 0), i8** %26 - store i8* getelementptr inbounds ([1 x i8], [1 x i8]* @str.9, i32 0, i32 0), i8** %27 - %28 = load %StringRef, %StringRef* %tmp.StringRef2 - call void @ctor.138(%_CharSource* %23, %FileRange* %25, %StringRef %28) - br label %if_block3 +cond.false: ; preds = %cond.end3 + br label %cond.end -if_else: ; preds = %if_block - %29 = load %ParserContext*, %ParserContext** %this.addr - %30 = getelementptr inbounds %ParserContext, %ParserContext* %29, i32 0, i32 0 - call void @ctor.146(%File* %30) - %31 = load %ParserContext*, %ParserContext** %this.addr - %32 = getelementptr inbounds %ParserContext, %ParserContext* %31, i32 0, i32 1 - call void @ctor.147(%FileRange* %32) - %33 = load %ParserContext*, %ParserContext** %this.addr - %34 = getelementptr inbounds %ParserContext, %ParserContext* %33, i32 0, i32 2 - %35 = load %StringRef, %StringRef* %code.addr - call void @ctor.138(%_CharSource* %34, %FileRange* null, %StringRef %35) - br label %if_end +cond.end: ; preds = %cond.false, %cond.true + %cond.res152 = phi i1 [ %10, %cond.true ], [ false, %cond.false ] + ret i1 %cond.res152 -if_end: ; preds = %if_else, %if_end5 - %36 = load %ParserContext*, %ParserContext** %this.addr - %37 = getelementptr inbounds %ParserContext, %ParserContext* %36, i32 0, i32 3 - %38 = load %ParserContext*, %ParserContext** %this.addr - %39 = getelementptr inbounds %ParserContext, %ParserContext* %38, i32 0, i32 2 - %40 = load %_CharSource, %_CharSource* %39 - %41 = load %ExternalErrorReporter, %ExternalErrorReporter* %reporter - call void @ctor.292(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %37, %_CharSource %40, %ExternalErrorReporter %41, %Location* %loc.addr) - br label %if_block8 +cond.true1: ; preds = %cond.end6 + %11 = load %AstBuilder*, %AstBuilder** %this.addr + %12 = getelementptr inbounds %AstBuilder, %AstBuilder* %11, i32 0, i32 38 + %13 = load %AstBuilder*, %AstBuilder** %other.addr + %14 = getelementptr inbounds %AstBuilder, %AstBuilder* %13, i32 0, i32 38 + %15 = call i1 @"==.377"(%"FunctionPtr2[Node, UntypedPtr, @Location]"* %12, %"FunctionPtr2[Node, UntypedPtr, @Location]"* %14) + br label %cond.end3 -if_block3: ; preds = %if_then - %42 = load %ParserContext*, %ParserContext** %this.addr - %43 = getelementptr inbounds %ParserContext, %ParserContext* %42, i32 0, i32 0 - %44 = call i1 @isOpen(%File* %43) - %45 = xor i1 true, %44 - br i1 %45, label %if_then4, label %if_end5 +cond.false2: ; preds = %cond.end6 + br label %cond.end3 -if_then4: ; preds = %if_block3 - %46 = load %Location, %Location* %loc.addr - %47 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef7, i32 0, i32 0 - %48 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef7, i32 0, i32 1 - store i8* getelementptr inbounds ([19 x i8], [19 x i8]* @str.10, i32 0, i32 0), i8** %47 - store i8* getelementptr inbounds ([19 x i8], [19 x i8]* @str.10, i32 0, i32 18), i8** %48 - %49 = load %StringRef, %StringRef* %tmp.StringRef7 - %50 = load %StringRef, %StringRef* %filename.addr - call void @toString(%String* %"$tmpC6", %StringRef %49, %StringRef %50) - call void @reportError(%ExternalErrorReporter* %reporter, %Location %46, %String* %"$tmpC6") - call void @dtor.218(%String* %"$tmpC6") - br label %if_end5 +cond.end3: ; preds = %cond.false2, %cond.true1 + %cond.res151 = phi i1 [ %15, %cond.true1 ], [ false, %cond.false2 ] + br i1 %cond.res151, label %cond.true, label %cond.false -if_end5: ; preds = %if_then4, %if_block3 - br label %if_end +cond.true4: ; preds = %cond.end9 + %16 = load %AstBuilder*, %AstBuilder** %this.addr + %17 = getelementptr inbounds %AstBuilder, %AstBuilder* %16, i32 0, i32 37 + %18 = load %AstBuilder*, %AstBuilder** %other.addr + %19 = getelementptr inbounds %AstBuilder, %AstBuilder* %18, i32 0, i32 37 + %20 = call i1 @"==.377"(%"FunctionPtr2[Node, UntypedPtr, @Location]"* %17, %"FunctionPtr2[Node, UntypedPtr, @Location]"* %19) + br label %cond.end6 -if_block8: ; preds = %if_end - %51 = load i1, i1* %scannerOnly.addr - %52 = xor i1 true, %51 - br i1 %52, label %if_then9, label %if_end10 +cond.false5: ; preds = %cond.end9 + br label %cond.end6 -if_then9: ; preds = %if_block8 - %53 = load %ParserContext*, %ParserContext** %this.addr - %54 = getelementptr inbounds %ParserContext, %ParserContext* %53, i32 0, i32 4 - %55 = load %ParserContext*, %ParserContext** %this.addr - %56 = getelementptr inbounds %ParserContext, %ParserContext* %55, i32 0, i32 3 - %57 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %56 - %58 = load %ExternalErrorReporter, %ExternalErrorReporter* %reporter - call void @ctor.298(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %54, %"SparrowScanner[_CharSource, ExternalErrorReporter]" %57, %ExternalErrorReporter %58) - %59 = load %ParserContext*, %ParserContext** %this.addr - %60 = getelementptr inbounds %ParserContext, %ParserContext* %59, i32 0, i32 5 - %61 = load %ParserContext*, %ParserContext** %this.addr - %62 = getelementptr inbounds %ParserContext, %ParserContext* %61, i32 0, i32 4 - %63 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %62 - %64 = load %ExternalErrorReporter, %ExternalErrorReporter* %reporter - call void @ctor.413(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %60, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]" %63, %ExternalErrorReporter %64) - br label %if_end10 +cond.end6: ; preds = %cond.false5, %cond.true4 + %cond.res150 = phi i1 [ %20, %cond.true4 ], [ false, %cond.false5 ] + br i1 %cond.res150, label %cond.true1, label %cond.false2 -if_end10: ; preds = %if_then9, %if_block8 - ret void -} +cond.true7: ; preds = %cond.end12 + %21 = load %AstBuilder*, %AstBuilder** %this.addr + %22 = getelementptr inbounds %AstBuilder, %AstBuilder* %21, i32 0, i32 36 + %23 = load %AstBuilder*, %AstBuilder** %other.addr + %24 = getelementptr inbounds %AstBuilder, %AstBuilder* %23, i32 0, i32 36 + %25 = call i1 @"==.387"(%"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %22, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %24) + br label %cond.end9 -; Function Attrs: inlinehint nounwind -define internal void @ctor.286(%File* %this, %StringRef %filename, %StringRef %mode) #4 { - %this.addr = alloca %File* - store %File* %this, %File** %this.addr - %filename.addr = alloca %StringRef - store %StringRef %filename, %StringRef* %filename.addr - %mode.addr = alloca %StringRef - store %StringRef %mode, %StringRef* %mode.addr - br label %code +cond.false8: ; preds = %cond.end12 + br label %cond.end9 -code: ; preds = %0 - %1 = load %File*, %File** %this.addr - %2 = getelementptr inbounds %File, %File* %1, i32 0, i32 0 - store i8* null, i8** %2 - %3 = call i8* @cStr(%StringRef* %filename.addr) - %4 = call i8* @cStr(%StringRef* %mode.addr) - %5 = call i8* @fopen(i8* %3, i8* %4) - %6 = load %File*, %File** %this.addr - %7 = getelementptr inbounds %File, %File* %6, i32 0, i32 0 - store i8* %5, i8** %7 - ret void -} +cond.end9: ; preds = %cond.false8, %cond.true7 + %cond.res149 = phi i1 [ %25, %cond.true7 ], [ false, %cond.false8 ] + br i1 %cond.res149, label %cond.true4, label %cond.false5 -declare i8* @fopen(i8*, i8*) +cond.true10: ; preds = %cond.end15 + %26 = load %AstBuilder*, %AstBuilder** %this.addr + %27 = getelementptr inbounds %AstBuilder, %AstBuilder* %26, i32 0, i32 35 + %28 = load %AstBuilder*, %AstBuilder** %other.addr + %29 = getelementptr inbounds %AstBuilder, %AstBuilder* %28, i32 0, i32 35 + %30 = call i1 @"==.368"(%"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %27, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %29) + br label %cond.end12 -; Function Attrs: inlinehint nounwind -define internal void @all(%FileRange* sret %_result, %File* %this) #4 { - %_result.addr = alloca %FileRange* - store %FileRange* %_result, %FileRange** %_result.addr - %this.addr = alloca %File* - store %File* %this, %File** %this.addr - br label %code +cond.false11: ; preds = %cond.end15 + br label %cond.end12 -code: ; preds = %0 - %1 = load %FileRange*, %FileRange** %_result.addr - %2 = load %File*, %File** %this.addr - call void @ctor.287(%FileRange* %1, %File* %2) - ret void -} +cond.end12: ; preds = %cond.false11, %cond.true10 + %cond.res148 = phi i1 [ %30, %cond.true10 ], [ false, %cond.false11 ] + br i1 %cond.res148, label %cond.true7, label %cond.false8 -; Function Attrs: inlinehint nounwind -define internal void @ctor.287(%FileRange* %this, %File* %file) #4 { - %this.addr = alloca %FileRange* - store %FileRange* %this, %FileRange** %this.addr - %file.addr = alloca %File* - store %File* %file, %File** %file.addr - br label %code +cond.true13: ; preds = %cond.end18 + %31 = load %AstBuilder*, %AstBuilder** %this.addr + %32 = getelementptr inbounds %AstBuilder, %AstBuilder* %31, i32 0, i32 34 + %33 = load %AstBuilder*, %AstBuilder** %other.addr + %34 = getelementptr inbounds %AstBuilder, %AstBuilder* %33, i32 0, i32 34 + %35 = call i1 @"==.387"(%"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %32, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %34) + br label %cond.end15 -code: ; preds = %0 - %1 = load %FileRange*, %FileRange** %this.addr - %2 = getelementptr inbounds %FileRange, %FileRange* %1, i32 0, i32 0 - store %File* null, %File** %2 - %3 = load %FileRange*, %FileRange** %this.addr - %4 = getelementptr inbounds %FileRange, %FileRange* %3, i32 0, i32 1 - store i1 false, i1* %4 - %5 = load %File*, %File** %file.addr - %6 = load %FileRange*, %FileRange** %this.addr - %7 = getelementptr inbounds %FileRange, %FileRange* %6, i32 0, i32 0 - store %File* %5, %File** %7 - %8 = load %FileRange*, %FileRange** %this.addr - %9 = getelementptr inbounds %FileRange, %FileRange* %8, i32 0, i32 1 - store i1 true, i1* %9 - %10 = load %FileRange*, %FileRange** %this.addr - %11 = getelementptr inbounds %FileRange, %FileRange* %10, i32 0, i32 2 - store i8 0, i8* %11 - br label %if_block +cond.false14: ; preds = %cond.end18 + br label %cond.end15 -if_block: ; preds = %code - %12 = load %FileRange*, %FileRange** %this.addr - %13 = getelementptr inbounds %FileRange, %FileRange* %12, i32 0, i32 0 - %14 = load %File*, %File** %13 - %15 = call i1 @isEof(%File* %14) - %16 = xor i1 true, %15 - br i1 %16, label %if_then, label %if_end +cond.end15: ; preds = %cond.false14, %cond.true13 + %cond.res147 = phi i1 [ %35, %cond.true13 ], [ false, %cond.false14 ] + br i1 %cond.res147, label %cond.true10, label %cond.false11 -if_then: ; preds = %if_block - %17 = load %FileRange*, %FileRange** %this.addr - %18 = getelementptr inbounds %FileRange, %FileRange* %17, i32 0, i32 0 - %19 = load %File*, %File** %18 - %20 = call i8 @readChar(%File* %19) - %21 = load %FileRange*, %FileRange** %this.addr - %22 = getelementptr inbounds %FileRange, %FileRange* %21, i32 0, i32 2 - store i8 %20, i8* %22 - %23 = load %FileRange*, %FileRange** %this.addr - %24 = getelementptr inbounds %FileRange, %FileRange* %23, i32 0, i32 1 - store i1 false, i1* %24 - br label %if_end +cond.true16: ; preds = %cond.end21 + %36 = load %AstBuilder*, %AstBuilder** %this.addr + %37 = getelementptr inbounds %AstBuilder, %AstBuilder* %36, i32 0, i32 33 + %38 = load %AstBuilder*, %AstBuilder** %other.addr + %39 = getelementptr inbounds %AstBuilder, %AstBuilder* %38, i32 0, i32 33 + %40 = call i1 @"==.386"(%"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %37, %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %39) + br label %cond.end18 -if_end: ; preds = %if_then, %if_block - ret void -} +cond.false17: ; preds = %cond.end21 + br label %cond.end18 -; Function Attrs: alwaysinline nounwind -define internal void @dtor.288(%FileRange* %this) #3 { - %this.addr = alloca %FileRange* - store %FileRange* %this, %FileRange** %this.addr - br label %code +cond.end18: ; preds = %cond.false17, %cond.true16 + %cond.res146 = phi i1 [ %40, %cond.true16 ], [ false, %cond.false17 ] + br i1 %cond.res146, label %cond.true13, label %cond.false14 -code: ; preds = %0 - ret void -} +cond.true19: ; preds = %cond.end24 + %41 = load %AstBuilder*, %AstBuilder** %this.addr + %42 = getelementptr inbounds %AstBuilder, %AstBuilder* %41, i32 0, i32 32 + %43 = load %AstBuilder*, %AstBuilder** %other.addr + %44 = getelementptr inbounds %AstBuilder, %AstBuilder* %43, i32 0, i32 32 + %45 = call i1 @"==.375"(%"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %42, %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %44) + br label %cond.end21 -; Function Attrs: inlinehint nounwind -define internal void @toString(%String* sret %_result, %StringRef %a1, %StringRef %a2) #4 { - %_result.addr = alloca %String* - store %String* %_result, %String** %_result.addr - %a1.addr = alloca %StringRef - store %StringRef %a1, %StringRef* %a1.addr - %a2.addr = alloca %StringRef - store %StringRef %a2, %StringRef* %a2.addr - %s = alloca %StringOutputStream - br label %code +cond.false20: ; preds = %cond.end24 + br label %cond.end21 -code: ; preds = %0 - call void @ctor.289(%StringOutputStream* %s) - %1 = call %StringOutputStream* @"<<"(%StringOutputStream* %s, %StringRef* %a1.addr) - %2 = call %StringOutputStream* @"<<"(%StringOutputStream* %1, %StringRef* %a2.addr) - %3 = load %String*, %String** %_result.addr - %4 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %s, i32 0, i32 0 - call void @ctor.184(%String* %3, %String* %4) - call void @dtor.291(%StringOutputStream* %s) - ret void +cond.end21: ; preds = %cond.false20, %cond.true19 + %cond.res145 = phi i1 [ %45, %cond.true19 ], [ false, %cond.false20 ] + br i1 %cond.res145, label %cond.true16, label %cond.false17 -dumy_block: ; No predecessors! - call void @dtor.291(%StringOutputStream* %s) - ret void -} +cond.true22: ; preds = %cond.end27 + %46 = load %AstBuilder*, %AstBuilder** %this.addr + %47 = getelementptr inbounds %AstBuilder, %AstBuilder* %46, i32 0, i32 31 + %48 = load %AstBuilder*, %AstBuilder** %other.addr + %49 = getelementptr inbounds %AstBuilder, %AstBuilder* %48, i32 0, i32 31 + %50 = call i1 @"==.385"(%"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* %47, %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* %49) + br label %cond.end24 -; Function Attrs: alwaysinline nounwind -define internal void @ctor.289(%StringOutputStream* %this) #3 { - %this.addr = alloca %StringOutputStream* - store %StringOutputStream* %this, %StringOutputStream** %this.addr - br label %code +cond.false23: ; preds = %cond.end27 + br label %cond.end24 -code: ; preds = %0 - %1 = load %StringOutputStream*, %StringOutputStream** %this.addr - %2 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %1, i32 0, i32 0 - call void @ctor.158(%String* %2) - ret void -} +cond.end24: ; preds = %cond.false23, %cond.true22 + %cond.res144 = phi i1 [ %50, %cond.true22 ], [ false, %cond.false23 ] + br i1 %cond.res144, label %cond.true19, label %cond.false20 -; Function Attrs: inlinehint nounwind -define internal %StringOutputStream* @"<<"(%StringOutputStream* %s, %StringRef* %x) #4 { - %s.addr = alloca %StringOutputStream* - store %StringOutputStream* %s, %StringOutputStream** %s.addr - %x.addr = alloca %StringRef* - store %StringRef* %x, %StringRef** %x.addr - br label %code +cond.true25: ; preds = %cond.end30 + %51 = load %AstBuilder*, %AstBuilder** %this.addr + %52 = getelementptr inbounds %AstBuilder, %AstBuilder* %51, i32 0, i32 30 + %53 = load %AstBuilder*, %AstBuilder** %other.addr + %54 = getelementptr inbounds %AstBuilder, %AstBuilder* %53, i32 0, i32 30 + %55 = call i1 @"==.384"(%"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* %52, %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* %54) + br label %cond.end27 -code: ; preds = %0 - %1 = load %StringOutputStream*, %StringOutputStream** %s.addr - %2 = load %StringRef*, %StringRef** %x.addr - %3 = load %StringRef, %StringRef* %2 - call void @"<<<.290"(%StringOutputStream* %1, %StringRef %3) - %4 = load %StringOutputStream*, %StringOutputStream** %s.addr - ret %StringOutputStream* %4 -} +cond.false26: ; preds = %cond.end30 + br label %cond.end27 -; Function Attrs: alwaysinline nounwind -define internal void @"<<<.290"(%StringOutputStream* %this, %StringRef %s) #3 { - %this.addr = alloca %StringOutputStream* - store %StringOutputStream* %this, %StringOutputStream** %this.addr - %s.addr = alloca %StringRef - store %StringRef %s, %StringRef* %s.addr - br label %code +cond.end27: ; preds = %cond.false26, %cond.true25 + %cond.res143 = phi i1 [ %55, %cond.true25 ], [ false, %cond.false26 ] + br i1 %cond.res143, label %cond.true22, label %cond.false23 -code: ; preds = %0 - %1 = load %StringOutputStream*, %StringOutputStream** %this.addr - %2 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %1, i32 0, i32 0 - %3 = load %StringRef, %StringRef* %s.addr - call void @append(%String* %2, %StringRef %3) - ret void -} +cond.true28: ; preds = %cond.end33 + %56 = load %AstBuilder*, %AstBuilder** %this.addr + %57 = getelementptr inbounds %AstBuilder, %AstBuilder* %56, i32 0, i32 29 + %58 = load %AstBuilder*, %AstBuilder** %other.addr + %59 = getelementptr inbounds %AstBuilder, %AstBuilder* %58, i32 0, i32 29 + %60 = call i1 @"==.383"(%"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* %57, %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* %59) + br label %cond.end30 -; Function Attrs: inlinehint nounwind -define internal void @append(%String* %this, %StringRef %range) #4 { - %this.addr = alloca %String* - store %String* %this, %String** %this.addr - %range.addr = alloca %StringRef - store %StringRef %range, %StringRef* %range.addr - %tmp.this = alloca %StringRef - br label %code +cond.false29: ; preds = %cond.end33 + br label %cond.end30 -code: ; preds = %0 - %1 = load %String*, %String** %this.addr - %2 = load %StringRef, %StringRef* %range.addr - %3 = load %String*, %String** %this.addr - %4 = getelementptr inbounds %String, %String* %3, i32 0, i32 1 - %5 = load %"RawPtr[Char]", %"RawPtr[Char]"* %4 - %6 = call i8* @bytePtr(%"RawPtr[Char]" %5) - %7 = load %String*, %String** %this.addr - %8 = getelementptr inbounds %String, %String* %7, i32 0, i32 1 - %9 = load %"RawPtr[Char]", %"RawPtr[Char]"* %8 - %10 = call i8* @bytePtr(%"RawPtr[Char]" %9) - call void @ctor.57(%StringRef* %tmp.this, i8* %6, i8* %10) - %11 = load %StringRef, %StringRef* %tmp.this - call void @insertBefore(%String* %1, %StringRef %2, %StringRef %11) - ret void +cond.end30: ; preds = %cond.false29, %cond.true28 + %cond.res142 = phi i1 [ %60, %cond.true28 ], [ false, %cond.false29 ] + br i1 %cond.res142, label %cond.true25, label %cond.false26 + +cond.true31: ; preds = %cond.end36 + %61 = load %AstBuilder*, %AstBuilder** %this.addr + %62 = getelementptr inbounds %AstBuilder, %AstBuilder* %61, i32 0, i32 28 + %63 = load %AstBuilder*, %AstBuilder** %other.addr + %64 = getelementptr inbounds %AstBuilder, %AstBuilder* %63, i32 0, i32 28 + %65 = call i1 @"==.382"(%"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* %62, %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* %64) + br label %cond.end33 + +cond.false32: ; preds = %cond.end36 + br label %cond.end33 + +cond.end33: ; preds = %cond.false32, %cond.true31 + %cond.res141 = phi i1 [ %65, %cond.true31 ], [ false, %cond.false32 ] + br i1 %cond.res141, label %cond.true28, label %cond.false29 + +cond.true34: ; preds = %cond.end39 + %66 = load %AstBuilder*, %AstBuilder** %this.addr + %67 = getelementptr inbounds %AstBuilder, %AstBuilder* %66, i32 0, i32 27 + %68 = load %AstBuilder*, %AstBuilder** %other.addr + %69 = getelementptr inbounds %AstBuilder, %AstBuilder* %68, i32 0, i32 27 + %70 = call i1 @"==.381"(%"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* %67, %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* %69) + br label %cond.end36 + +cond.false35: ; preds = %cond.end39 + br label %cond.end36 + +cond.end36: ; preds = %cond.false35, %cond.true34 + %cond.res140 = phi i1 [ %70, %cond.true34 ], [ false, %cond.false35 ] + br i1 %cond.res140, label %cond.true31, label %cond.false32 + +cond.true37: ; preds = %cond.end42 + %71 = load %AstBuilder*, %AstBuilder** %this.addr + %72 = getelementptr inbounds %AstBuilder, %AstBuilder* %71, i32 0, i32 26 + %73 = load %AstBuilder*, %AstBuilder** %other.addr + %74 = getelementptr inbounds %AstBuilder, %AstBuilder* %73, i32 0, i32 26 + %75 = call i1 @"==.380"(%"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* %72, %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* %74) + br label %cond.end39 + +cond.false38: ; preds = %cond.end42 + br label %cond.end39 + +cond.end39: ; preds = %cond.false38, %cond.true37 + %cond.res139 = phi i1 [ %75, %cond.true37 ], [ false, %cond.false38 ] + br i1 %cond.res139, label %cond.true34, label %cond.false35 + +cond.true40: ; preds = %cond.end45 + %76 = load %AstBuilder*, %AstBuilder** %this.addr + %77 = getelementptr inbounds %AstBuilder, %AstBuilder* %76, i32 0, i32 25 + %78 = load %AstBuilder*, %AstBuilder** %other.addr + %79 = getelementptr inbounds %AstBuilder, %AstBuilder* %78, i32 0, i32 25 + %80 = call i1 @"==.379"(%"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* %77, %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* %79) + br label %cond.end42 + +cond.false41: ; preds = %cond.end45 + br label %cond.end42 + +cond.end42: ; preds = %cond.false41, %cond.true40 + %cond.res138 = phi i1 [ %80, %cond.true40 ], [ false, %cond.false41 ] + br i1 %cond.res138, label %cond.true37, label %cond.false38 + +cond.true43: ; preds = %cond.end48 + %81 = load %AstBuilder*, %AstBuilder** %this.addr + %82 = getelementptr inbounds %AstBuilder, %AstBuilder* %81, i32 0, i32 24 + %83 = load %AstBuilder*, %AstBuilder** %other.addr + %84 = getelementptr inbounds %AstBuilder, %AstBuilder* %83, i32 0, i32 24 + %85 = call i1 @"==.378"(%"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* %82, %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* %84) + br label %cond.end45 + +cond.false44: ; preds = %cond.end48 + br label %cond.end45 + +cond.end45: ; preds = %cond.false44, %cond.true43 + %cond.res137 = phi i1 [ %85, %cond.true43 ], [ false, %cond.false44 ] + br i1 %cond.res137, label %cond.true40, label %cond.false41 + +cond.true46: ; preds = %cond.end51 + %86 = load %AstBuilder*, %AstBuilder** %this.addr + %87 = getelementptr inbounds %AstBuilder, %AstBuilder* %86, i32 0, i32 23 + %88 = load %AstBuilder*, %AstBuilder** %other.addr + %89 = getelementptr inbounds %AstBuilder, %AstBuilder* %88, i32 0, i32 23 + %90 = call i1 @"==.377"(%"FunctionPtr2[Node, UntypedPtr, @Location]"* %87, %"FunctionPtr2[Node, UntypedPtr, @Location]"* %89) + br label %cond.end48 + +cond.false47: ; preds = %cond.end51 + br label %cond.end48 + +cond.end48: ; preds = %cond.false47, %cond.true46 + %cond.res136 = phi i1 [ %90, %cond.true46 ], [ false, %cond.false47 ] + br i1 %cond.res136, label %cond.true43, label %cond.false44 + +cond.true49: ; preds = %cond.end54 + %91 = load %AstBuilder*, %AstBuilder** %this.addr + %92 = getelementptr inbounds %AstBuilder, %AstBuilder* %91, i32 0, i32 22 + %93 = load %AstBuilder*, %AstBuilder** %other.addr + %94 = getelementptr inbounds %AstBuilder, %AstBuilder* %93, i32 0, i32 22 + %95 = call i1 @"==.376"(%"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* %92, %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* %94) + br label %cond.end51 + +cond.false50: ; preds = %cond.end54 + br label %cond.end51 + +cond.end51: ; preds = %cond.false50, %cond.true49 + %cond.res135 = phi i1 [ %95, %cond.true49 ], [ false, %cond.false50 ] + br i1 %cond.res135, label %cond.true46, label %cond.false47 + +cond.true52: ; preds = %cond.end57 + %96 = load %AstBuilder*, %AstBuilder** %this.addr + %97 = getelementptr inbounds %AstBuilder, %AstBuilder* %96, i32 0, i32 21 + %98 = load %AstBuilder*, %AstBuilder** %other.addr + %99 = getelementptr inbounds %AstBuilder, %AstBuilder* %98, i32 0, i32 21 + %100 = call i1 @"==.365"(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %97, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %99) + br label %cond.end54 + +cond.false53: ; preds = %cond.end57 + br label %cond.end54 + +cond.end54: ; preds = %cond.false53, %cond.true52 + %cond.res134 = phi i1 [ %100, %cond.true52 ], [ false, %cond.false53 ] + br i1 %cond.res134, label %cond.true49, label %cond.false50 + +cond.true55: ; preds = %cond.end60 + %101 = load %AstBuilder*, %AstBuilder** %this.addr + %102 = getelementptr inbounds %AstBuilder, %AstBuilder* %101, i32 0, i32 20 + %103 = load %AstBuilder*, %AstBuilder** %other.addr + %104 = getelementptr inbounds %AstBuilder, %AstBuilder* %103, i32 0, i32 20 + %105 = call i1 @"==.373"(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %102, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %104) + br label %cond.end57 + +cond.false56: ; preds = %cond.end60 + br label %cond.end57 + +cond.end57: ; preds = %cond.false56, %cond.true55 + %cond.res133 = phi i1 [ %105, %cond.true55 ], [ false, %cond.false56 ] + br i1 %cond.res133, label %cond.true52, label %cond.false53 + +cond.true58: ; preds = %cond.end63 + %106 = load %AstBuilder*, %AstBuilder** %this.addr + %107 = getelementptr inbounds %AstBuilder, %AstBuilder* %106, i32 0, i32 19 + %108 = load %AstBuilder*, %AstBuilder** %other.addr + %109 = getelementptr inbounds %AstBuilder, %AstBuilder* %108, i32 0, i32 19 + %110 = call i1 @"==.373"(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %107, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %109) + br label %cond.end60 + +cond.false59: ; preds = %cond.end63 + br label %cond.end60 + +cond.end60: ; preds = %cond.false59, %cond.true58 + %cond.res132 = phi i1 [ %110, %cond.true58 ], [ false, %cond.false59 ] + br i1 %cond.res132, label %cond.true55, label %cond.false56 + +cond.true61: ; preds = %cond.end66 + %111 = load %AstBuilder*, %AstBuilder** %this.addr + %112 = getelementptr inbounds %AstBuilder, %AstBuilder* %111, i32 0, i32 18 + %113 = load %AstBuilder*, %AstBuilder** %other.addr + %114 = getelementptr inbounds %AstBuilder, %AstBuilder* %113, i32 0, i32 18 + %115 = call i1 @"==.373"(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %112, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %114) + br label %cond.end63 + +cond.false62: ; preds = %cond.end66 + br label %cond.end63 + +cond.end63: ; preds = %cond.false62, %cond.true61 + %cond.res131 = phi i1 [ %115, %cond.true61 ], [ false, %cond.false62 ] + br i1 %cond.res131, label %cond.true58, label %cond.false59 + +cond.true64: ; preds = %cond.end69 + %116 = load %AstBuilder*, %AstBuilder** %this.addr + %117 = getelementptr inbounds %AstBuilder, %AstBuilder* %116, i32 0, i32 17 + %118 = load %AstBuilder*, %AstBuilder** %other.addr + %119 = getelementptr inbounds %AstBuilder, %AstBuilder* %118, i32 0, i32 17 + %120 = call i1 @"==.375"(%"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %117, %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %119) + br label %cond.end66 + +cond.false65: ; preds = %cond.end69 + br label %cond.end66 + +cond.end66: ; preds = %cond.false65, %cond.true64 + %cond.res130 = phi i1 [ %120, %cond.true64 ], [ false, %cond.false65 ] + br i1 %cond.res130, label %cond.true61, label %cond.false62 + +cond.true67: ; preds = %cond.end72 + %121 = load %AstBuilder*, %AstBuilder** %this.addr + %122 = getelementptr inbounds %AstBuilder, %AstBuilder* %121, i32 0, i32 16 + %123 = load %AstBuilder*, %AstBuilder** %other.addr + %124 = getelementptr inbounds %AstBuilder, %AstBuilder* %123, i32 0, i32 16 + %125 = call i1 @"==.367"(%"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %122, %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %124) + br label %cond.end69 + +cond.false68: ; preds = %cond.end72 + br label %cond.end69 + +cond.end69: ; preds = %cond.false68, %cond.true67 + %cond.res129 = phi i1 [ %125, %cond.true67 ], [ false, %cond.false68 ] + br i1 %cond.res129, label %cond.true64, label %cond.false65 + +cond.true70: ; preds = %cond.end75 + %126 = load %AstBuilder*, %AstBuilder** %this.addr + %127 = getelementptr inbounds %AstBuilder, %AstBuilder* %126, i32 0, i32 15 + %128 = load %AstBuilder*, %AstBuilder** %other.addr + %129 = getelementptr inbounds %AstBuilder, %AstBuilder* %128, i32 0, i32 15 + %130 = call i1 @"==.374"(%"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* %127, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* %129) + br label %cond.end72 + +cond.false71: ; preds = %cond.end75 + br label %cond.end72 + +cond.end72: ; preds = %cond.false71, %cond.true70 + %cond.res128 = phi i1 [ %130, %cond.true70 ], [ false, %cond.false71 ] + br i1 %cond.res128, label %cond.true67, label %cond.false68 + +cond.true73: ; preds = %cond.end78 + %131 = load %AstBuilder*, %AstBuilder** %this.addr + %132 = getelementptr inbounds %AstBuilder, %AstBuilder* %131, i32 0, i32 14 + %133 = load %AstBuilder*, %AstBuilder** %other.addr + %134 = getelementptr inbounds %AstBuilder, %AstBuilder* %133, i32 0, i32 14 + %135 = call i1 @"==.373"(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %132, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %134) + br label %cond.end75 + +cond.false74: ; preds = %cond.end78 + br label %cond.end75 + +cond.end75: ; preds = %cond.false74, %cond.true73 + %cond.res127 = phi i1 [ %135, %cond.true73 ], [ false, %cond.false74 ] + br i1 %cond.res127, label %cond.true70, label %cond.false71 + +cond.true76: ; preds = %cond.end81 + %136 = load %AstBuilder*, %AstBuilder** %this.addr + %137 = getelementptr inbounds %AstBuilder, %AstBuilder* %136, i32 0, i32 13 + %138 = load %AstBuilder*, %AstBuilder** %other.addr + %139 = getelementptr inbounds %AstBuilder, %AstBuilder* %138, i32 0, i32 13 + %140 = call i1 @"==.372"(%"FunctionPtr2[Node, UntypedPtr, Node]"* %137, %"FunctionPtr2[Node, UntypedPtr, Node]"* %139) + br label %cond.end78 + +cond.false77: ; preds = %cond.end81 + br label %cond.end78 + +cond.end78: ; preds = %cond.false77, %cond.true76 + %cond.res126 = phi i1 [ %140, %cond.true76 ], [ false, %cond.false77 ] + br i1 %cond.res126, label %cond.true73, label %cond.false74 + +cond.true79: ; preds = %cond.end84 + %141 = load %AstBuilder*, %AstBuilder** %this.addr + %142 = getelementptr inbounds %AstBuilder, %AstBuilder* %141, i32 0, i32 12 + %143 = load %AstBuilder*, %AstBuilder** %other.addr + %144 = getelementptr inbounds %AstBuilder, %AstBuilder* %143, i32 0, i32 12 + %145 = call i1 @"==.371"(%"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* %142, %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* %144) + br label %cond.end81 + +cond.false80: ; preds = %cond.end84 + br label %cond.end81 + +cond.end81: ; preds = %cond.false80, %cond.true79 + %cond.res125 = phi i1 [ %145, %cond.true79 ], [ false, %cond.false80 ] + br i1 %cond.res125, label %cond.true76, label %cond.false77 + +cond.true82: ; preds = %cond.end87 + %146 = load %AstBuilder*, %AstBuilder** %this.addr + %147 = getelementptr inbounds %AstBuilder, %AstBuilder* %146, i32 0, i32 11 + %148 = load %AstBuilder*, %AstBuilder** %other.addr + %149 = getelementptr inbounds %AstBuilder, %AstBuilder* %148, i32 0, i32 11 + %150 = call i1 @"==.366"(%"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %147, %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %149) + br label %cond.end84 + +cond.false83: ; preds = %cond.end87 + br label %cond.end84 + +cond.end84: ; preds = %cond.false83, %cond.true82 + %cond.res124 = phi i1 [ %150, %cond.true82 ], [ false, %cond.false83 ] + br i1 %cond.res124, label %cond.true79, label %cond.false80 + +cond.true85: ; preds = %cond.end90 + %151 = load %AstBuilder*, %AstBuilder** %this.addr + %152 = getelementptr inbounds %AstBuilder, %AstBuilder* %151, i32 0, i32 10 + %153 = load %AstBuilder*, %AstBuilder** %other.addr + %154 = getelementptr inbounds %AstBuilder, %AstBuilder* %153, i32 0, i32 10 + %155 = call i1 @"==.366"(%"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %152, %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %154) + br label %cond.end87 + +cond.false86: ; preds = %cond.end90 + br label %cond.end87 + +cond.end87: ; preds = %cond.false86, %cond.true85 + %cond.res123 = phi i1 [ %155, %cond.true85 ], [ false, %cond.false86 ] + br i1 %cond.res123, label %cond.true82, label %cond.false83 + +cond.true88: ; preds = %cond.end93 + %156 = load %AstBuilder*, %AstBuilder** %this.addr + %157 = getelementptr inbounds %AstBuilder, %AstBuilder* %156, i32 0, i32 9 + %158 = load %AstBuilder*, %AstBuilder** %other.addr + %159 = getelementptr inbounds %AstBuilder, %AstBuilder* %158, i32 0, i32 9 + %160 = call i1 @"==.370"(%"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* %157, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* %159) + br label %cond.end90 + +cond.false89: ; preds = %cond.end93 + br label %cond.end90 + +cond.end90: ; preds = %cond.false89, %cond.true88 + %cond.res122 = phi i1 [ %160, %cond.true88 ], [ false, %cond.false89 ] + br i1 %cond.res122, label %cond.true85, label %cond.false86 + +cond.true91: ; preds = %cond.end96 + %161 = load %AstBuilder*, %AstBuilder** %this.addr + %162 = getelementptr inbounds %AstBuilder, %AstBuilder* %161, i32 0, i32 8 + %163 = load %AstBuilder*, %AstBuilder** %other.addr + %164 = getelementptr inbounds %AstBuilder, %AstBuilder* %163, i32 0, i32 8 + %165 = call i1 @"==.366"(%"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %162, %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %164) + br label %cond.end93 + +cond.false92: ; preds = %cond.end96 + br label %cond.end93 + +cond.end93: ; preds = %cond.false92, %cond.true91 + %cond.res121 = phi i1 [ %165, %cond.true91 ], [ false, %cond.false92 ] + br i1 %cond.res121, label %cond.true88, label %cond.false89 + +cond.true94: ; preds = %cond.end99 + %166 = load %AstBuilder*, %AstBuilder** %this.addr + %167 = getelementptr inbounds %AstBuilder, %AstBuilder* %166, i32 0, i32 7 + %168 = load %AstBuilder*, %AstBuilder** %other.addr + %169 = getelementptr inbounds %AstBuilder, %AstBuilder* %168, i32 0, i32 7 + %170 = call i1 @"==.369"(%"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* %167, %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* %169) + br label %cond.end96 + +cond.false95: ; preds = %cond.end99 + br label %cond.end96 + +cond.end96: ; preds = %cond.false95, %cond.true94 + %cond.res120 = phi i1 [ %170, %cond.true94 ], [ false, %cond.false95 ] + br i1 %cond.res120, label %cond.true91, label %cond.false92 + +cond.true97: ; preds = %cond.end102 + %171 = load %AstBuilder*, %AstBuilder** %this.addr + %172 = getelementptr inbounds %AstBuilder, %AstBuilder* %171, i32 0, i32 6 + %173 = load %AstBuilder*, %AstBuilder** %other.addr + %174 = getelementptr inbounds %AstBuilder, %AstBuilder* %173, i32 0, i32 6 + %175 = call i1 @"==.368"(%"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %172, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %174) + br label %cond.end99 + +cond.false98: ; preds = %cond.end102 + br label %cond.end99 + +cond.end99: ; preds = %cond.false98, %cond.true97 + %cond.res119 = phi i1 [ %175, %cond.true97 ], [ false, %cond.false98 ] + br i1 %cond.res119, label %cond.true94, label %cond.false95 + +cond.true100: ; preds = %cond.end105 + %176 = load %AstBuilder*, %AstBuilder** %this.addr + %177 = getelementptr inbounds %AstBuilder, %AstBuilder* %176, i32 0, i32 5 + %178 = load %AstBuilder*, %AstBuilder** %other.addr + %179 = getelementptr inbounds %AstBuilder, %AstBuilder* %178, i32 0, i32 5 + %180 = call i1 @"==.367"(%"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %177, %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %179) + br label %cond.end102 + +cond.false101: ; preds = %cond.end105 + br label %cond.end102 + +cond.end102: ; preds = %cond.false101, %cond.true100 + %cond.res118 = phi i1 [ %180, %cond.true100 ], [ false, %cond.false101 ] + br i1 %cond.res118, label %cond.true97, label %cond.false98 + +cond.true103: ; preds = %cond.end108 + %181 = load %AstBuilder*, %AstBuilder** %this.addr + %182 = getelementptr inbounds %AstBuilder, %AstBuilder* %181, i32 0, i32 4 + %183 = load %AstBuilder*, %AstBuilder** %other.addr + %184 = getelementptr inbounds %AstBuilder, %AstBuilder* %183, i32 0, i32 4 + %185 = call i1 @"==.366"(%"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %182, %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %184) + br label %cond.end105 + +cond.false104: ; preds = %cond.end108 + br label %cond.end105 + +cond.end105: ; preds = %cond.false104, %cond.true103 + %cond.res117 = phi i1 [ %185, %cond.true103 ], [ false, %cond.false104 ] + br i1 %cond.res117, label %cond.true100, label %cond.false101 + +cond.true106: ; preds = %cond.end111 + %186 = load %AstBuilder*, %AstBuilder** %this.addr + %187 = getelementptr inbounds %AstBuilder, %AstBuilder* %186, i32 0, i32 3 + %188 = load %AstBuilder*, %AstBuilder** %other.addr + %189 = getelementptr inbounds %AstBuilder, %AstBuilder* %188, i32 0, i32 3 + %190 = call i1 @"==.365"(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %187, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %189) + br label %cond.end108 + +cond.false107: ; preds = %cond.end111 + br label %cond.end108 + +cond.end108: ; preds = %cond.false107, %cond.true106 + %cond.res116 = phi i1 [ %190, %cond.true106 ], [ false, %cond.false107 ] + br i1 %cond.res116, label %cond.true103, label %cond.false104 + +cond.true109: ; preds = %cond.end114 + %191 = load %AstBuilder*, %AstBuilder** %this.addr + %192 = getelementptr inbounds %AstBuilder, %AstBuilder* %191, i32 0, i32 2 + %193 = load %AstBuilder*, %AstBuilder** %other.addr + %194 = getelementptr inbounds %AstBuilder, %AstBuilder* %193, i32 0, i32 2 + %195 = call i1 @"==.365"(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %192, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %194) + br label %cond.end111 + +cond.false110: ; preds = %cond.end114 + br label %cond.end111 + +cond.end111: ; preds = %cond.false110, %cond.true109 + %cond.res115 = phi i1 [ %195, %cond.true109 ], [ false, %cond.false110 ] + br i1 %cond.res115, label %cond.true106, label %cond.false107 + +cond.true112: ; preds = %code + %196 = load %AstBuilder*, %AstBuilder** %this.addr + %197 = getelementptr inbounds %AstBuilder, %AstBuilder* %196, i32 0, i32 1 + %198 = load %AstBuilder*, %AstBuilder** %other.addr + %199 = getelementptr inbounds %AstBuilder, %AstBuilder* %198, i32 0, i32 1 + %200 = call i1 @"==.364"(%"FunctionPtr3[Node, UntypedPtr, Node, Node]"* %197, %"FunctionPtr3[Node, UntypedPtr, Node, Node]"* %199) + br label %cond.end114 + +cond.false113: ; preds = %code + br label %cond.end114 + +cond.end114: ; preds = %cond.false113, %cond.true112 + %cond.res = phi i1 [ %200, %cond.true112 ], [ false, %cond.false113 ] + br i1 %cond.res, label %cond.true109, label %cond.false110 +} + +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.364"(%"FunctionPtr3[Node, UntypedPtr, Node, Node]"* %this, %"FunctionPtr3[Node, UntypedPtr, Node, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, Node, Node]"* + store %"FunctionPtr3[Node, UntypedPtr, Node, Node]"* %this, %"FunctionPtr3[Node, UntypedPtr, Node, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Node, UntypedPtr, Node, Node]"* + store %"FunctionPtr3[Node, UntypedPtr, Node, Node]"* %other, %"FunctionPtr3[Node, UntypedPtr, Node, Node]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, Node, Node]"*, %"FunctionPtr3[Node, UntypedPtr, Node, Node]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, Node, Node]", %"FunctionPtr3[Node, UntypedPtr, Node, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Node, UntypedPtr, Node, Node]"*, %"FunctionPtr3[Node, UntypedPtr, Node, Node]"** %other.addr + %5 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, Node, Node]", %"FunctionPtr3[Node, UntypedPtr, Node, Node]"* %4, i32 0, i32 0 + %6 = load i8*, i8** %5 + %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) + ret i1 %7 } -; Function Attrs: inlinehint nounwind -define internal void @insertBefore(%String* %this, %StringRef %range, %StringRef %pos) #4 { - %this.addr = alloca %String* - store %String* %this, %String** %this.addr - %range.addr = alloca %StringRef - store %StringRef %range, %StringRef* %range.addr - %pos.addr = alloca %StringRef - store %StringRef %pos, %StringRef* %pos.addr - %n = alloca i64 - %index = alloca i64 - %"$tmpC" = alloca %"RawPtr[Char]" - %p = alloca %"RawPtr[Char]" - %tmp.this = alloca i64 - %q = alloca %"RawPtr[Char]" - %tmp.this1 = alloca i64 - %"$tmpC2" = alloca %"RawPtr[Char]" - %tmp.this3 = alloca i64 - %"$tmpC4" = alloca %"RawPtr[Char]" - %tmp.this5 = alloca i64 - %"$tmpC6" = alloca %"RawPtr[Char]" - %"$tmpC11" = alloca %"RawPtr[Char]" - %"$tmpC12" = alloca %"RawPtr[Char]" - %tmp.this13 = alloca i64 +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.365"(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %this, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* + store %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %this, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* + store %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %other, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"** %other.addr br label %code code: ; preds = %0 - %1 = call i64 @size(%StringRef* %range.addr) - store i64 %1, i64* %n - %2 = load %StringRef, %StringRef* %pos.addr - call void @_frontPtr(%"RawPtr[Char]"* %"$tmpC", %StringRef %2) - %3 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC" - %4 = load %String*, %String** %this.addr - %5 = getelementptr inbounds %String, %String* %4, i32 0, i32 0 - %6 = load %"RawPtr[Char]", %"RawPtr[Char]"* %5 - %7 = call i64 @diff(%"RawPtr[Char]" %3, %"RawPtr[Char]" %6) - store i64 %7, i64* %index - %8 = load %String*, %String** %this.addr - %9 = load %String*, %String** %this.addr - %10 = call i64 @size.185(%String* %9) - %11 = load i64, i64* %n - %12 = add i64 %10, %11 - call void @reserve(%String* %8, i64 %12) - %13 = load %String*, %String** %this.addr - %14 = getelementptr inbounds %String, %String* %13, i32 0, i32 1 - %15 = load %"RawPtr[Char]", %"RawPtr[Char]"* %14 - store i64 -1, i64* %tmp.this - %16 = load i64, i64* %tmp.this - call void @advance.187(%"RawPtr[Char]"* %p, %"RawPtr[Char]" %15, i64 %16) - %17 = load %String*, %String** %this.addr - %18 = getelementptr inbounds %String, %String* %17, i32 0, i32 0 - %19 = load %"RawPtr[Char]", %"RawPtr[Char]"* %18 - %20 = load i64, i64* %index - store i64 1, i64* %tmp.this1 - %21 = load i64, i64* %tmp.this1 - %22 = call i64 @_DiffType_opMinus(i64 %20, i64 %21) - call void @advance.187(%"RawPtr[Char]"* %q, %"RawPtr[Char]" %19, i64 %22) - br label %while_block + %1 = load %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"*, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]", %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"*, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"** %other.addr + %5 = getelementptr inbounds %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]", %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %4, i32 0, i32 0 + %6 = load i8*, i8** %5 + %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) + ret i1 %7 +} -while_block: ; preds = %while_step, %code - %23 = call i1 @"==.225"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %q) - %24 = xor i1 true, %23 - br i1 %24, label %while_body, label %while_end +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.366"(%"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %this, %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* + store %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %this, %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* + store %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %other, %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"** %other.addr + br label %code -while_body: ; preds = %while_block - %25 = load %"RawPtr[Char]", %"RawPtr[Char]"* %p - %26 = call i8* @value(%"RawPtr[Char]" %25) - %27 = load i8, i8* %26 - %28 = load %"RawPtr[Char]", %"RawPtr[Char]"* %p - %29 = load i64, i64* %n - store i64 %29, i64* %tmp.this3 - %30 = load i64, i64* %tmp.this3 - call void @advance.187(%"RawPtr[Char]"* %"$tmpC2", %"RawPtr[Char]" %28, i64 %30) - %31 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC2" - %32 = call i8* @value(%"RawPtr[Char]" %31) - store i8 %27, i8* %32 - %33 = load %"RawPtr[Char]", %"RawPtr[Char]"* %p - %34 = call i8* @value(%"RawPtr[Char]" %33) - %35 = load i8, i8* %34 - br label %while_step +code: ; preds = %0 + %1 = load %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"*, %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]", %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"*, %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"** %other.addr + %5 = getelementptr inbounds %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]", %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %4, i32 0, i32 0 + %6 = load i8*, i8** %5 + %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) + ret i1 %7 +} + +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.367"(%"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %this, %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* + store %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %this, %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* + store %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %other, %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"*, %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]", %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"*, %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"** %other.addr + %5 = getelementptr inbounds %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]", %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %4, i32 0, i32 0 + %6 = load i8*, i8** %5 + %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) + ret i1 %7 +} + +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.368"(%"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %this, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* + store %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %this, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* + store %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %other, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"*, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]", %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"*, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"** %other.addr + %5 = getelementptr inbounds %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]", %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %4, i32 0, i32 0 + %6 = load i8*, i8** %5 + %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) + ret i1 %7 +} + +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.369"(%"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* %this, %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* + store %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* %this, %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* + store %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* %other, %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"*, %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]", %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"*, %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"** %other.addr + %5 = getelementptr inbounds %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]", %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* %4, i32 0, i32 0 + %6 = load i8*, i8** %5 + %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) + ret i1 %7 +} + +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.370"(%"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* %this, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* + store %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* %this, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* + store %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* %other, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"*, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]", %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"*, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"** %other.addr + %5 = getelementptr inbounds %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]", %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* %4, i32 0, i32 0 + %6 = load i8*, i8** %5 + %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) + ret i1 %7 +} + +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.371"(%"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* %this, %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* + store %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* %this, %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* + store %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* %other, %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"*, %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]", %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"*, %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"** %other.addr + %5 = getelementptr inbounds %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]", %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* %4, i32 0, i32 0 + %6 = load i8*, i8** %5 + %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) + ret i1 %7 +} + +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.372"(%"FunctionPtr2[Node, UntypedPtr, Node]"* %this, %"FunctionPtr2[Node, UntypedPtr, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr2[Node, UntypedPtr, Node]"* + store %"FunctionPtr2[Node, UntypedPtr, Node]"* %this, %"FunctionPtr2[Node, UntypedPtr, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr2[Node, UntypedPtr, Node]"* + store %"FunctionPtr2[Node, UntypedPtr, Node]"* %other, %"FunctionPtr2[Node, UntypedPtr, Node]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr2[Node, UntypedPtr, Node]"*, %"FunctionPtr2[Node, UntypedPtr, Node]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr2[Node, UntypedPtr, Node]", %"FunctionPtr2[Node, UntypedPtr, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr2[Node, UntypedPtr, Node]"*, %"FunctionPtr2[Node, UntypedPtr, Node]"** %other.addr + %5 = getelementptr inbounds %"FunctionPtr2[Node, UntypedPtr, Node]", %"FunctionPtr2[Node, UntypedPtr, Node]"* %4, i32 0, i32 0 + %6 = load i8*, i8** %5 + %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) + ret i1 %7 +} + +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.373"(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %this, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %other) #3 { + %this.addr = alloca %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* + store %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %this, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"** %this.addr + %other.addr = alloca %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* + store %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %other, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"*, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]", %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"*, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"** %other.addr + %5 = getelementptr inbounds %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]", %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %4, i32 0, i32 0 + %6 = load i8*, i8** %5 + %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) + ret i1 %7 +} + +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.374"(%"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* %this, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* + store %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* %this, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* + store %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* %other, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"*, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]", %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"*, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"** %other.addr + %5 = getelementptr inbounds %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]", %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* %4, i32 0, i32 0 + %6 = load i8*, i8** %5 + %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) + ret i1 %7 +} + +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.375"(%"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %other, %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]", %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"** %other.addr + %5 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]", %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %4, i32 0, i32 0 + %6 = load i8*, i8** %5 + %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) + ret i1 %7 +} + +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.376"(%"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* %this, %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* + store %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* %this, %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* + store %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* %other, %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"*, %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]", %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"*, %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"** %other.addr + %5 = getelementptr inbounds %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]", %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* %4, i32 0, i32 0 + %6 = load i8*, i8** %5 + %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) + ret i1 %7 +} + +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.377"(%"FunctionPtr2[Node, UntypedPtr, @Location]"* %this, %"FunctionPtr2[Node, UntypedPtr, @Location]"* %other) #3 { + %this.addr = alloca %"FunctionPtr2[Node, UntypedPtr, @Location]"* + store %"FunctionPtr2[Node, UntypedPtr, @Location]"* %this, %"FunctionPtr2[Node, UntypedPtr, @Location]"** %this.addr + %other.addr = alloca %"FunctionPtr2[Node, UntypedPtr, @Location]"* + store %"FunctionPtr2[Node, UntypedPtr, @Location]"* %other, %"FunctionPtr2[Node, UntypedPtr, @Location]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr2[Node, UntypedPtr, @Location]"*, %"FunctionPtr2[Node, UntypedPtr, @Location]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr2[Node, UntypedPtr, @Location]", %"FunctionPtr2[Node, UntypedPtr, @Location]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr2[Node, UntypedPtr, @Location]"*, %"FunctionPtr2[Node, UntypedPtr, @Location]"** %other.addr + %5 = getelementptr inbounds %"FunctionPtr2[Node, UntypedPtr, @Location]", %"FunctionPtr2[Node, UntypedPtr, @Location]"* %4, i32 0, i32 0 + %6 = load i8*, i8** %5 + %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) + ret i1 %7 +} + +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.378"(%"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* %other, %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]", %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"** %other.addr + %5 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]", %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* %4, i32 0, i32 0 + %6 = load i8*, i8** %5 + %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) + ret i1 %7 +} + +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.379"(%"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* %other, %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Int]", %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"** %other.addr + %5 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Int]", %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* %4, i32 0, i32 0 + %6 = load i8*, i8** %5 + %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) + ret i1 %7 +} + +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.380"(%"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* %other, %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]", %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"** %other.addr + %5 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]", %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* %4, i32 0, i32 0 + %6 = load i8*, i8** %5 + %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) + ret i1 %7 +} + +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.381"(%"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* %other, %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Long]", %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"** %other.addr + %5 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Long]", %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* %4, i32 0, i32 0 + %6 = load i8*, i8** %5 + %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) + ret i1 %7 +} + +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.382"(%"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* %other, %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]", %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"** %other.addr + %5 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]", %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* %4, i32 0, i32 0 + %6 = load i8*, i8** %5 + %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) + ret i1 %7 +} + +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.383"(%"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* %other, %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Float]", %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"** %other.addr + %5 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Float]", %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* %4, i32 0, i32 0 + %6 = load i8*, i8** %5 + %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) + ret i1 %7 +} + +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.384"(%"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* %other, %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Double]", %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"** %other.addr + %5 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Double]", %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* %4, i32 0, i32 0 + %6 = load i8*, i8** %5 + %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) + ret i1 %7 +} + +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.385"(%"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* %other, %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Char]", %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"** %other.addr + %5 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Char]", %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* %4, i32 0, i32 0 + %6 = load i8*, i8** %5 + %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) + ret i1 %7 +} -while_step: ; preds = %while_body - %36 = load %"RawPtr[Char]", %"RawPtr[Char]"* %p - store i64 -1, i64* %tmp.this5 - %37 = load i64, i64* %tmp.this5 - call void @advance.187(%"RawPtr[Char]"* %"$tmpC4", %"RawPtr[Char]" %36, i64 %37) - call void @"=.178"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %"$tmpC4") - br label %while_block +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.386"(%"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %other, %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"** %other.addr + br label %code -while_end: ; preds = %while_block - %38 = load %"RawPtr[Char]", %"RawPtr[Char]"* %p - call void @advance.226(%"RawPtr[Char]"* %"$tmpC6", %"RawPtr[Char]" %38) - call void @"=.178"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %"$tmpC6") - br label %while_block7 +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Node]", %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"** %other.addr + %5 = getelementptr inbounds %"FunctionPtr3[Node, UntypedPtr, @Location, Node]", %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %4, i32 0, i32 0 + %6 = load i8*, i8** %5 + %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) + ret i1 %7 +} -while_block7: ; preds = %while_step9, %while_end - %39 = call i1 @isEmpty(%StringRef* %range.addr) - %40 = xor i1 true, %39 - br i1 %40, label %while_body8, label %while_end10 +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.387"(%"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %this, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %other) #3 { + %this.addr = alloca %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* + store %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %this, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"** %this.addr + %other.addr = alloca %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* + store %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %other, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"** %other.addr + br label %code -while_body8: ; preds = %while_block7 - %41 = call i8* @front(%StringRef* %range.addr) - %42 = load i8, i8* %41 - %43 = load %"RawPtr[Char]", %"RawPtr[Char]"* %p - %44 = call i8* @value(%"RawPtr[Char]" %43) - store i8 %42, i8* %44 - %45 = load %"RawPtr[Char]", %"RawPtr[Char]"* %p - call void @advance.226(%"RawPtr[Char]"* %"$tmpC11", %"RawPtr[Char]" %45) - call void @"=.178"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %"$tmpC11") - call void @popFront(%StringRef* %range.addr) - br label %while_step9 +code: ; preds = %0 + %1 = load %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"*, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"** %this.addr + %2 = getelementptr inbounds %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]", %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"*, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"** %other.addr + %5 = getelementptr inbounds %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]", %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %4, i32 0, i32 0 + %6 = load i8*, i8** %5 + %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) + ret i1 %7 +} -while_step9: ; preds = %while_body8 - br label %while_block7 +; Function Attrs: inlinehint nounwind +define internal void @ctor.388(%ParserContext* %this, %CharSource %chars, %Location %loc, %AstBuilder* %astBuilder, %ErrorReporter %reporter) #4 { + %this.addr = alloca %ParserContext* + store %ParserContext* %this, %ParserContext** %this.addr + %chars.addr = alloca %CharSource + store %CharSource %chars, %CharSource* %chars.addr + %loc.addr = alloca %Location + store %Location %loc, %Location* %loc.addr + %astBuilder.addr = alloca %AstBuilder* + store %AstBuilder* %astBuilder, %AstBuilder** %astBuilder.addr + %reporter.addr = alloca %ErrorReporter + store %ErrorReporter %reporter, %ErrorReporter* %reporter.addr + br label %code -while_end10: ; preds = %while_block7 - %46 = load %String*, %String** %this.addr - %47 = getelementptr inbounds %String, %String* %46, i32 0, i32 1 - %48 = load %String*, %String** %this.addr - %49 = getelementptr inbounds %String, %String* %48, i32 0, i32 1 - %50 = load %"RawPtr[Char]", %"RawPtr[Char]"* %49 - %51 = load i64, i64* %n - store i64 %51, i64* %tmp.this13 - %52 = load i64, i64* %tmp.this13 - call void @advance.187(%"RawPtr[Char]"* %"$tmpC12", %"RawPtr[Char]" %50, i64 %52) - call void @"=.178"(%"RawPtr[Char]"* %47, %"RawPtr[Char]"* %"$tmpC12") +code: ; preds = %0 + %1 = load %ParserContext*, %ParserContext** %this.addr + %2 = getelementptr inbounds %ParserContext, %ParserContext* %1, i32 0, i32 0 + %3 = load %CharSource, %CharSource* %chars.addr + %4 = load %ErrorReporter, %ErrorReporter* %reporter.addr + call void @ctor.389(%SparrowScanner* %2, %CharSource %3, %ErrorReporter %4, %Location* %loc.addr, i1 false) + %5 = load %ParserContext*, %ParserContext** %this.addr + %6 = getelementptr inbounds %ParserContext, %ParserContext* %5, i32 0, i32 1 + %7 = load %ParserContext*, %ParserContext** %this.addr + %8 = getelementptr inbounds %ParserContext, %ParserContext* %7, i32 0, i32 0 + %9 = load %SparrowScanner, %SparrowScanner* %8 + %10 = load %ErrorReporter, %ErrorReporter* %reporter.addr + call void @ctor.402(%"SparrowLayoutDecoder[SparrowScanner]"* %6, %SparrowScanner %9, %ErrorReporter %10) + %11 = load %ParserContext*, %ParserContext** %this.addr + %12 = getelementptr inbounds %ParserContext, %ParserContext* %11, i32 0, i32 2 + %13 = load %ParserContext*, %ParserContext** %this.addr + %14 = getelementptr inbounds %ParserContext, %ParserContext* %13, i32 0, i32 1 + %15 = load %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %14 + %16 = load %AstBuilder*, %AstBuilder** %astBuilder.addr + %17 = load %ErrorReporter, %ErrorReporter* %reporter.addr + call void @ctor.519(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %12, %"SparrowLayoutDecoder[SparrowScanner]" %15, %AstBuilder* %16, %ErrorReporter %17) ret void } ; Function Attrs: inlinehint nounwind -define internal void @_frontPtr(%"RawPtr[Char]"* sret %_result, %StringRef %s) #4 { - %_result.addr = alloca %"RawPtr[Char]"* - store %"RawPtr[Char]"* %_result, %"RawPtr[Char]"** %_result.addr - %s.addr = alloca %StringRef - store %StringRef %s, %StringRef* %s.addr +define internal void @ctor.389(%SparrowScanner* %this, %CharSource %chars, %ErrorReporter %errorReporter, %Location* %iniLocation, i1 %emitWitespace) #4 { + %this.addr = alloca %SparrowScanner* + store %SparrowScanner* %this, %SparrowScanner** %this.addr + %chars.addr = alloca %CharSource + store %CharSource %chars, %CharSource* %chars.addr + %errorReporter.addr = alloca %ErrorReporter + store %ErrorReporter %errorReporter, %ErrorReporter* %errorReporter.addr + %iniLocation.addr = alloca %Location* + store %Location* %iniLocation, %Location** %iniLocation.addr + %emitWitespace.addr = alloca i1 + store i1 %emitWitespace, i1* %emitWitespace.addr + %tmp.this = alloca %"RangeWithLookahead[BufferedCharSourceRange]" + %"$tmpC" = alloca %BufferedCharSourceRange + br label %code + +code: ; preds = %0 + %1 = load %SparrowScanner*, %SparrowScanner** %this.addr + %2 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %1, i32 0, i32 6 + store i1 false, i1* %2 + %3 = load %SparrowScanner*, %SparrowScanner** %this.addr + %4 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %3, i32 0, i32 0 + %5 = load %Location*, %Location** %iniLocation.addr + call void @ctor.182(%Location* %4, %Location* %5) + %6 = load %SparrowScanner*, %SparrowScanner** %this.addr + %7 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %6, i32 0, i32 1 + %8 = load %CharSource, %CharSource* %chars.addr + call void @ctor.390(%BufferedCharSource* %7, %CharSource %8) + %9 = load %SparrowScanner*, %SparrowScanner** %this.addr + %10 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %9, i32 0, i32 2 + %11 = load %SparrowScanner*, %SparrowScanner** %this.addr + %12 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %11, i32 0, i32 1 + call void @all(%BufferedCharSourceRange* %"$tmpC", %BufferedCharSource* %12) + %13 = load %BufferedCharSourceRange, %BufferedCharSourceRange* %"$tmpC" + call void @ctor.393(%"RangeWithLookahead[BufferedCharSourceRange]"* %tmp.this, %BufferedCharSourceRange %13) + %14 = load %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %tmp.this + %15 = load %SparrowScanner*, %SparrowScanner** %this.addr + %16 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %15, i32 0, i32 0 + call void @ctor.392(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %10, %"RangeWithLookahead[BufferedCharSourceRange]" %14, %Location* %16) + call void @dtor.279(%"RangeWithLookahead[BufferedCharSourceRange]"* %tmp.this) + %17 = load %SparrowScanner*, %SparrowScanner** %this.addr + %18 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %17, i32 0, i32 3 + call void @ctor.143(%Token* %18) + %19 = load %SparrowScanner*, %SparrowScanner** %this.addr + %20 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %19, i32 0, i32 4 + store i1 false, i1* %20 + %21 = load %SparrowScanner*, %SparrowScanner** %this.addr + %22 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %21, i32 0, i32 5 + call void @ctor.204(%ErrorReporter* %22, %ErrorReporter* %errorReporter.addr) + %23 = load i1, i1* %emitWitespace.addr + %24 = load %SparrowScanner*, %SparrowScanner** %this.addr + %25 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %24, i32 0, i32 6 + store i1 %23, i1* %25 + ret void +} + +; Function Attrs: inlinehint nounwind +define internal void @ctor.390(%BufferedCharSource* %this, %CharSource %src) #4 { + %this.addr = alloca %BufferedCharSource* + store %BufferedCharSource* %this, %BufferedCharSource** %this.addr + %src.addr = alloca %CharSource + store %CharSource %src, %CharSource* %src.addr + %tmp.this = alloca i64 br label %code code: ; preds = %0 - %1 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %_result.addr - %2 = getelementptr inbounds %StringRef, %StringRef* %s.addr, i32 0, i32 0 - %3 = load i8*, i8** %2 - call void @ctor.180(%"RawPtr[Char]"* %1, i8* %3) + %1 = load %BufferedCharSource*, %BufferedCharSource** %this.addr + %2 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %1, i32 0, i32 0 + call void @ctor.186(%CharSource* %2, %CharSource* %src.addr) + %3 = load %BufferedCharSource*, %BufferedCharSource** %this.addr + %4 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %3, i32 0, i32 1 + call void @ctor.137(%String* %4) + %5 = load %BufferedCharSource*, %BufferedCharSource** %this.addr + %6 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %5, i32 0, i32 1 + store i64 4096, i64* %tmp.this + %7 = load i64, i64* %tmp.this + call void @reserve(%String* %6, i64 %7) + %8 = load %BufferedCharSource*, %BufferedCharSource** %this.addr + %9 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %8, i32 0, i32 2 + store i32 0, i32* %9 + %10 = load %BufferedCharSource*, %BufferedCharSource** %this.addr + call void @_ensureBufferHasData(%BufferedCharSource* %10) ret void } @@ -9905,7 +12297,7 @@ if_then6: ; preds = %if_block5 if_end7: ; preds = %if_then6, %if_block5 %24 = load %String*, %String** %this.addr - %25 = call i64 @size.185(%String* %24) + %25 = call i64 @size.190(%String* %24) store i64 %25, i64* %curSize %26 = load %String*, %String** %this.addr %27 = getelementptr inbounds %String, %String* %26, i32 0, i32 0 @@ -9919,8 +12311,8 @@ if_end7: ; preds = %if_then6, %if_block %34 = load i64, i64* %curSize store i64 %34, i64* %tmp.this12 %35 = load i64, i64* %tmp.this12 - call void @advance.187(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %33, i64 %35) - call void @"=.178"(%"RawPtr[Char]"* %30, %"RawPtr[Char]"* %"$tmpC") + call void @advance(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %33, i64 %35) + call void @"=.200"(%"RawPtr[Char]"* %30, %"RawPtr[Char]"* %"$tmpC") %36 = load %String*, %String** %this.addr %37 = getelementptr inbounds %String, %String* %36, i32 0, i32 2 %38 = load %String*, %String** %this.addr @@ -9929,8 +12321,8 @@ if_end7: ; preds = %if_then6, %if_block %41 = load i64, i64* %n.addr store i64 %41, i64* %tmp.this14 %42 = load i64, i64* %tmp.this14 - call void @advance.187(%"RawPtr[Char]"* %"$tmpC13", %"RawPtr[Char]" %40, i64 %42) - call void @"=.178"(%"RawPtr[Char]"* %37, %"RawPtr[Char]"* %"$tmpC13") + call void @advance(%"RawPtr[Char]"* %"$tmpC13", %"RawPtr[Char]" %40, i64 %42) + call void @"=.200"(%"RawPtr[Char]"* %37, %"RawPtr[Char]"* %"$tmpC13") ret void } @@ -9975,115 +12367,251 @@ code: ; preds = %0 ret void } -; Function Attrs: alwaysinline nounwind -define internal void @dtor.291(%StringOutputStream* %this) #3 { - %this.addr = alloca %StringOutputStream* - store %StringOutputStream* %this, %StringOutputStream** %this.addr +; Function Attrs: inlinehint nounwind +define internal void @_ensureBufferHasData(%BufferedCharSource* %this) #4 { + %this.addr = alloca %BufferedCharSource* + store %BufferedCharSource* %this, %BufferedCharSource** %this.addr + %tmp.this = alloca i64 br label %code code: ; preds = %0 - %1 = load %StringOutputStream*, %StringOutputStream** %this.addr - %2 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %1, i32 0, i32 0 - call void @dtor.218(%String* %2) + br label %if_block + +if_block: ; preds = %code + %1 = load %BufferedCharSource*, %BufferedCharSource** %this.addr + %2 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %1, i32 0, i32 2 + %3 = load i32, i32* %2 + %4 = zext i32 %3 to i64 + store i64 %4, i64* %tmp.this + %5 = load i64, i64* %tmp.this + %6 = load %BufferedCharSource*, %BufferedCharSource** %this.addr + %7 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %6, i32 0, i32 1 + %8 = call i64 @size.190(%String* %7) + %9 = icmp sge i64 %5, %8 + br i1 %9, label %if_then, label %if_end + +if_then: ; preds = %if_block + %10 = load %BufferedCharSource*, %BufferedCharSource** %this.addr + %11 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %10, i32 0, i32 1 + call void @clear(%String* %11) + %12 = load %BufferedCharSource*, %BufferedCharSource** %this.addr + %13 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %12, i32 0, i32 2 + store i32 0, i32* %13 + %14 = load %BufferedCharSource*, %BufferedCharSource** %this.addr + %15 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %14, i32 0, i32 0 + %16 = load %CharSource, %CharSource* %15 + %17 = load %BufferedCharSource*, %BufferedCharSource** %this.addr + %18 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %17, i32 0, i32 1 + call void @readChars(%CharSource %16, %String* %18, i32 4096) + br label %if_end + +if_end: ; preds = %if_then, %if_block ret void } ; Function Attrs: inlinehint nounwind -define internal void @ctor.292(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %_CharSource %source, %ExternalErrorReporter %errorReporter, %Location* %iniLocation) #4 { - %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* - store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %source.addr = alloca %_CharSource - store %_CharSource %source, %_CharSource* %source.addr - %errorReporter.addr = alloca %ExternalErrorReporter - store %ExternalErrorReporter %errorReporter, %ExternalErrorReporter* %errorReporter.addr - %iniLocation.addr = alloca %Location* - store %Location* %iniLocation, %Location** %iniLocation.addr - %tmp.this = alloca %"RangeWithLookahead[_CharSource]" - br label %code - -code: ; preds = %0 - %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 0 - %3 = load %Location*, %Location** %iniLocation.addr - call void @ctor.171(%Location* %2, %Location* %3) - %4 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %5 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %4, i32 0, i32 1 - %6 = load %_CharSource, %_CharSource* %source.addr - call void @ctor.294(%"RangeWithLookahead[_CharSource]"* %tmp.this, %_CharSource %6) - %7 = load %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %tmp.this - %8 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %9 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %8, i32 0, i32 0 - call void @ctor.293(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5, %"RangeWithLookahead[_CharSource]" %7, %Location* %9) - call void @dtor.236(%"RangeWithLookahead[_CharSource]"* %tmp.this) - %10 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %11 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %10, i32 0, i32 2 - call void @ctor.156(%Token* %11) - %12 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %13 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %12, i32 0, i32 3 - store i1 false, i1* %13 - ret void -} - -; Function Attrs: alwaysinline nounwind -define internal void @ctor.293(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this, %"RangeWithLookahead[_CharSource]" %fsource, %Location* %flocation) #3 { - %this.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* - store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr - %fsource.addr = alloca %"RangeWithLookahead[_CharSource]" - store %"RangeWithLookahead[_CharSource]" %fsource, %"RangeWithLookahead[_CharSource]"* %fsource.addr +define internal void @clear(%String* %this) #4 { + %this.addr = alloca %String* + store %String* %this, %String** %this.addr + %tmp.this = alloca %StringRef + br label %code + +code: ; preds = %0 + %1 = load %String*, %String** %this.addr + %2 = load %String*, %String** %this.addr + %3 = getelementptr inbounds %String, %String* %2, i32 0, i32 0 + %4 = load %"RawPtr[Char]", %"RawPtr[Char]"* %3 + %5 = call i8* @bytePtr(%"RawPtr[Char]" %4) + %6 = load %String*, %String** %this.addr + %7 = getelementptr inbounds %String, %String* %6, i32 0, i32 1 + %8 = load %"RawPtr[Char]", %"RawPtr[Char]"* %7 + %9 = call i8* @bytePtr(%"RawPtr[Char]" %8) + call void @ctor.57(%StringRef* %tmp.this, i8* %5, i8* %9) + %10 = load %StringRef, %StringRef* %tmp.this + call void @remove(%String* %1, %StringRef %10) + ret void +} + +; Function Attrs: inlinehint nounwind +define internal void @remove(%String* %this, %StringRef %range) #4 { + %this.addr = alloca %String* + store %String* %this, %String** %this.addr + %range.addr = alloca %StringRef + store %StringRef %range, %StringRef* %range.addr + %rSize = alloca i64 + %rBegin = alloca %"RawPtr[Char]" + %rEnd = alloca %"RawPtr[Char]" + %tmp.this = alloca i64 + %"$tmpC" = alloca %"RawPtr[Char]" + %"$tmpC1" = alloca %"RawPtr[Char]" + br label %code + +code: ; preds = %0 + %1 = call i64 @size(%StringRef* %range.addr) + store i64 %1, i64* %rSize + %2 = load %StringRef, %StringRef* %range.addr + call void @_frontPtr(%"RawPtr[Char]"* %rBegin, %StringRef %2) + %3 = load %"RawPtr[Char]", %"RawPtr[Char]"* %rBegin + %4 = load i64, i64* %rSize + store i64 %4, i64* %tmp.this + %5 = load i64, i64* %tmp.this + call void @advance(%"RawPtr[Char]"* %rEnd, %"RawPtr[Char]" %3, i64 %5) + br label %while_block + +while_block: ; preds = %while_step, %code + %6 = load %String*, %String** %this.addr + %7 = getelementptr inbounds %String, %String* %6, i32 0, i32 1 + %8 = call i1 @"==.268"(%"RawPtr[Char]"* %rEnd, %"RawPtr[Char]"* %7) + %9 = xor i1 true, %8 + br i1 %9, label %while_body, label %while_end + +while_body: ; preds = %while_block + %10 = load %"RawPtr[Char]", %"RawPtr[Char]"* %rBegin + %11 = call i8* @value(%"RawPtr[Char]" %10) + %12 = load i8, i8* %11 + %13 = load %"RawPtr[Char]", %"RawPtr[Char]"* %rEnd + %14 = call i8* @value(%"RawPtr[Char]" %13) + %15 = load i8, i8* %14 + %16 = load %"RawPtr[Char]", %"RawPtr[Char]"* %rBegin + %17 = call i8* @value(%"RawPtr[Char]" %16) + store i8 %15, i8* %17 + %18 = load %"RawPtr[Char]", %"RawPtr[Char]"* %rBegin + call void @advance.269(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %18) + call void @"=.200"(%"RawPtr[Char]"* %rBegin, %"RawPtr[Char]"* %"$tmpC") + %19 = load %"RawPtr[Char]", %"RawPtr[Char]"* %rEnd + call void @advance.269(%"RawPtr[Char]"* %"$tmpC1", %"RawPtr[Char]" %19) + call void @"=.200"(%"RawPtr[Char]"* %rEnd, %"RawPtr[Char]"* %"$tmpC1") + br label %while_step + +while_step: ; preds = %while_body + br label %while_block + +while_end: ; preds = %while_block + %20 = load %String*, %String** %this.addr + %21 = getelementptr inbounds %String, %String* %20, i32 0, i32 1 + call void @"=.200"(%"RawPtr[Char]"* %21, %"RawPtr[Char]"* %rBegin) + ret void +} + +; Function Attrs: inlinehint nounwind +define internal void @_frontPtr(%"RawPtr[Char]"* sret %_result, %StringRef %s) #4 { + %_result.addr = alloca %"RawPtr[Char]"* + store %"RawPtr[Char]"* %_result, %"RawPtr[Char]"** %_result.addr + %s.addr = alloca %StringRef + store %StringRef %s, %StringRef* %s.addr + br label %code + +code: ; preds = %0 + %1 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %_result.addr + %2 = getelementptr inbounds %StringRef, %StringRef* %s.addr, i32 0, i32 0 + %3 = load i8*, i8** %2 + call void @ctor.194(%"RawPtr[Char]"* %1, i8* %3) + ret void +} + +; Function Attrs: inlinehint nounwind +define internal void @readChars(%CharSource %obj, %String* %dest, i32 %numChars) #4 { + %obj.addr = alloca %CharSource + store %CharSource %obj, %CharSource* %obj.addr + %dest.addr = alloca %String* + store %String* %dest, %String** %dest.addr + %numChars.addr = alloca i32 + store i32 %numChars, i32* %numChars.addr + br label %code + +code: ; preds = %0 + %1 = getelementptr inbounds %CharSource, %CharSource* %obj.addr, i32 0, i32 1 + %2 = getelementptr inbounds %CharSource, %CharSource* %obj.addr, i32 0, i32 0 + %3 = load %UntypedPtr, %UntypedPtr* %2 + %4 = load %String*, %String** %dest.addr + %5 = load i32, i32* %numChars.addr + call void @"().391"(%"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %1, %UntypedPtr %3, %String* %4, i32 %5) + ret void +} + +; Function Attrs: inlinehint nounwind +define internal void @"().391"(%"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %this, %UntypedPtr %p1, %String* %p2, i32 %p3) #4 { + %this.addr = alloca %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* + store %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %this, %"FunctionPtr3[Void, UntypedPtr, @String, Int]"** %this.addr + %p1.addr = alloca %UntypedPtr + store %UntypedPtr %p1, %UntypedPtr* %p1.addr + %p2.addr = alloca %String* + store %String* %p2, %String** %p2.addr + %p3.addr = alloca i32 + store i32 %p3, i32* %p3.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Void, UntypedPtr, @String, Int]"*, %"FunctionPtr3[Void, UntypedPtr, @String, Int]"** %this.addr + %2 = load %UntypedPtr, %UntypedPtr* %p1.addr + %3 = load %String*, %String** %p2.addr + %4 = load i32, i32* %p3.addr + %5 = bitcast %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %1 to void (%UntypedPtr, %String*, i32)** + %6 = load void (%UntypedPtr, %String*, i32)*, void (%UntypedPtr, %String*, i32)** %5 + call void %6(%UntypedPtr %2, %String* %3, i32 %4) + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.392(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %this, %"RangeWithLookahead[BufferedCharSourceRange]" %fsource, %Location* %flocation) #3 { + %this.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* + store %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %this.addr + %fsource.addr = alloca %"RangeWithLookahead[BufferedCharSourceRange]" + store %"RangeWithLookahead[BufferedCharSourceRange]" %fsource, %"RangeWithLookahead[BufferedCharSourceRange]"* %fsource.addr %flocation.addr = alloca %Location* store %Location* %flocation, %Location** %flocation.addr br label %code code: ; preds = %0 - %1 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr - %2 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1, i32 0, i32 0 - call void @ctor.175(%"RangeWithLookahead[_CharSource]"* %2, %"RangeWithLookahead[_CharSource]"* %fsource.addr) + %1 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %this.addr + %2 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]", %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %1, i32 0, i32 0 + call void @ctor.196(%"RangeWithLookahead[BufferedCharSourceRange]"* %2, %"RangeWithLookahead[BufferedCharSourceRange]"* %fsource.addr) %3 = load %Location*, %Location** %flocation.addr - %4 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr - %5 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %4, i32 0, i32 1 + %4 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %this.addr + %5 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]", %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %4, i32 0, i32 1 store %Location* %3, %Location** %5 ret void } ; Function Attrs: inlinehint nounwind -define internal void @ctor.294(%"RangeWithLookahead[_CharSource]"* %this, %_CharSource %src) #4 { - %this.addr = alloca %"RangeWithLookahead[_CharSource]"* - store %"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"** %this.addr - %src.addr = alloca %_CharSource - store %_CharSource %src, %_CharSource* %src.addr +define internal void @ctor.393(%"RangeWithLookahead[BufferedCharSourceRange]"* %this, %BufferedCharSourceRange %src) #4 { + %this.addr = alloca %"RangeWithLookahead[BufferedCharSourceRange]"* + store %"RangeWithLookahead[BufferedCharSourceRange]"* %this, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %src.addr = alloca %BufferedCharSourceRange + store %BufferedCharSourceRange %src, %BufferedCharSourceRange* %src.addr %tmp.this = alloca i64 %"$tmpForRef" = alloca i8 br label %code code: ; preds = %0 - %1 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %2 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %1, i32 0, i32 0 - call void @ctor.133(%_CharSource* %2) - %3 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %4 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %3, i32 0, i32 0 - call void @"=.136"(%_CharSource* %4, %_CharSource* %src.addr) - %5 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %6 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %5, i32 0, i32 1 - call void @ctor.154(%"Vector[Char]"* %6) - %7 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %8 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %7, i32 0, i32 1 + %1 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %2 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %1, i32 0, i32 0 + call void @ctor.141(%BufferedCharSourceRange* %2) + %3 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %4 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %3, i32 0, i32 0 + call void @"=.294"(%BufferedCharSourceRange* %4, %BufferedCharSourceRange* %src.addr) + %5 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %6 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %5, i32 0, i32 1 + call void @ctor.142(%"Vector[Char]"* %6) + %7 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %8 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %7, i32 0, i32 1 store i64 10, i64* %tmp.this %9 = load i64, i64* %tmp.this - call void @reserve.295(%"Vector[Char]"* %8, i64 %9) + call void @reserve.394(%"Vector[Char]"* %8, i64 %9) br label %if_block if_block: ; preds = %code - %10 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %11 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %10, i32 0, i32 0 - %12 = call i1 @"pre_!!"(%_CharSource* %11) + %10 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %11 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %10, i32 0, i32 0 + %12 = call i1 @"pre_!!"(%BufferedCharSourceRange* %11) br i1 %12, label %if_then, label %if_end if_then: ; preds = %if_block - %13 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %14 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %13, i32 0, i32 1 - %15 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %16 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %15, i32 0, i32 0 - %17 = call i8 @"post_++.297"(%_CharSource* %16) + %13 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %14 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %13, i32 0, i32 1 + %15 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %16 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %15, i32 0, i32 0 + %17 = call i8 @"post_++.398"(%BufferedCharSourceRange* %16) store i8 %17, i8* %"$tmpForRef" call void @"+="(%"Vector[Char]"* %14, i8* %"$tmpForRef") br label %if_end @@ -10093,7 +12621,7 @@ if_end: ; preds = %if_then, %if_block } ; Function Attrs: inlinehint nounwind -define internal void @reserve.295(%"Vector[Char]"* %this, i64 %n) #4 { +define internal void @reserve.394(%"Vector[Char]"* %this, i64 %n) #4 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr %n.addr = alloca i64 @@ -10112,7 +12640,7 @@ define internal void @reserve.295(%"Vector[Char]"* %this, i64 %n) #4 { code: ; preds = %0 %1 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %2 = call i64 @capacity.296(%"Vector[Char]"* %1) + %2 = call i64 @capacity.395(%"Vector[Char]"* %1) store i64 %2, i64* %curCapacity br label %if_block @@ -10174,7 +12702,7 @@ if_then6: ; preds = %if_block5 if_end7: ; preds = %if_then6, %if_block5 %24 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %25 = call i64 @size.177(%"Vector[Char]"* %24) + %25 = call i64 @size.199(%"Vector[Char]"* %24) store i64 %25, i64* %curSize %26 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %27 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %26, i32 0, i32 0 @@ -10186,21 +12714,21 @@ if_end7: ; preds = %if_then6, %if_block %32 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %31, i32 0, i32 0 %33 = load %"RawPtr[Char]", %"RawPtr[Char]"* %32 %34 = load i64, i64* %curSize - call void @advance(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %33, i64 %34) - call void @"=.178"(%"RawPtr[Char]"* %30, %"RawPtr[Char]"* %"$tmpC") + call void @advance.201(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %33, i64 %34) + call void @"=.200"(%"RawPtr[Char]"* %30, %"RawPtr[Char]"* %"$tmpC") %35 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %36 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %35, i32 0, i32 2 %37 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %38 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %37, i32 0, i32 0 %39 = load %"RawPtr[Char]", %"RawPtr[Char]"* %38 %40 = load i64, i64* %n.addr - call void @advance(%"RawPtr[Char]"* %"$tmpC12", %"RawPtr[Char]" %39, i64 %40) - call void @"=.178"(%"RawPtr[Char]"* %36, %"RawPtr[Char]"* %"$tmpC12") + call void @advance.201(%"RawPtr[Char]"* %"$tmpC12", %"RawPtr[Char]" %39, i64 %40) + call void @"=.200"(%"RawPtr[Char]"* %36, %"RawPtr[Char]"* %"$tmpC12") ret void } ; Function Attrs: inlinehint nounwind -define internal i64 @capacity.296(%"Vector[Char]"* %this) #4 { +define internal i64 @capacity.395(%"Vector[Char]"* %this) #4 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr %tmp.this = alloca i64 @@ -10220,18 +12748,48 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i1 @"pre_!!"(%_CharSource* %r) #4 { - %r.addr = alloca %_CharSource* - store %_CharSource* %r, %_CharSource** %r.addr +define internal i1 @"pre_!!"(%BufferedCharSourceRange* %r) #4 { + %r.addr = alloca %BufferedCharSourceRange* + store %BufferedCharSourceRange* %r, %BufferedCharSourceRange** %r.addr br label %code code: ; preds = %0 - %1 = load %_CharSource*, %_CharSource** %r.addr - %2 = call i1 @isEmpty.139(%_CharSource* %1) + %1 = load %BufferedCharSourceRange*, %BufferedCharSourceRange** %r.addr + %2 = call i1 @isEmpty.396(%BufferedCharSourceRange* %1) %3 = xor i1 true, %2 ret i1 %3 } +; Function Attrs: inlinehint nounwind +define internal i1 @isEmpty.396(%BufferedCharSourceRange* %this) #4 { + %this.addr = alloca %BufferedCharSourceRange* + store %BufferedCharSourceRange* %this, %BufferedCharSourceRange** %this.addr + br label %code + +code: ; preds = %0 + %1 = load %BufferedCharSourceRange*, %BufferedCharSourceRange** %this.addr + %2 = getelementptr inbounds %BufferedCharSourceRange, %BufferedCharSourceRange* %1, i32 0, i32 0 + %3 = load %BufferedCharSource*, %BufferedCharSource** %2 + %4 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %3, i32 0, i32 1 + %5 = call i1 @isEmpty.397(%String* %4) + ret i1 %5 +} + +; Function Attrs: inlinehint nounwind +define internal i1 @isEmpty.397(%String* %this) #4 { + %this.addr = alloca %String* + store %String* %this, %String** %this.addr + br label %code + +code: ; preds = %0 + %1 = load %String*, %String** %this.addr + %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 0 + %3 = load %String*, %String** %this.addr + %4 = getelementptr inbounds %String, %String* %3, i32 0, i32 1 + %5 = call i1 @"==.268"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) + ret i1 %5 +} + ; Function Attrs: inlinehint nounwind define internal void @"+="(%"Vector[Char]"* %this, i8* %value) #4 { %this.addr = alloca %"Vector[Char]"* @@ -10268,14 +12826,14 @@ if_block: ; preds = %code %2 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %1, i32 0, i32 1 %3 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %4 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %3, i32 0, i32 2 - %5 = call i1 @"==.225"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) + %5 = call i1 @"==.268"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) br i1 %5, label %if_then, label %if_end if_then: ; preds = %if_block store i64 2, i64* %tmp.this %6 = load i64, i64* %tmp.this %7 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %8 = call i64 @capacity.296(%"Vector[Char]"* %7) + %8 = call i64 @capacity.395(%"Vector[Char]"* %7) %9 = mul i64 %6, %8 store i64 %9, i64* %t br label %if_block1 @@ -10293,8 +12851,8 @@ if_end: ; preds = %if_end3, %if_block %18 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %19 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %18, i32 0, i32 1 %20 = load %"RawPtr[Char]", %"RawPtr[Char]"* %19 - call void @advance.226(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %20) - call void @"=.178"(%"RawPtr[Char]"* %17, %"RawPtr[Char]"* %"$tmpC") + call void @advance.269(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %20) + call void @"=.200"(%"RawPtr[Char]"* %17, %"RawPtr[Char]"* %"$tmpC") ret void if_block1: ; preds = %if_then @@ -10310,38 +12868,113 @@ if_then2: ; preds = %if_block1 store i64 %24, i64* %t br label %if_end3 -if_end3: ; preds = %if_then2, %if_block1 - %25 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %26 = load i64, i64* %t - call void @reserve.295(%"Vector[Char]"* %25, i64 %26) - br label %if_end +if_end3: ; preds = %if_then2, %if_block1 + %25 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr + %26 = load i64, i64* %t + call void @reserve.394(%"Vector[Char]"* %25, i64 %26) + br label %if_end +} + +; Function Attrs: inlinehint nounwind +define internal i8 @"post_++.398"(%BufferedCharSourceRange* %r) #4 { + %r.addr = alloca %BufferedCharSourceRange* + store %BufferedCharSourceRange* %r, %BufferedCharSourceRange** %r.addr + %res = alloca i8 + br label %code + +code: ; preds = %0 + %1 = load %BufferedCharSourceRange*, %BufferedCharSourceRange** %r.addr + %2 = call i8 @front.399(%BufferedCharSourceRange* %1) + store i8 %2, i8* %res + %3 = load %BufferedCharSourceRange*, %BufferedCharSourceRange** %r.addr + call void @popFront.400(%BufferedCharSourceRange* %3) + %4 = load i8, i8* %res + ret i8 %4 +} + +; Function Attrs: inlinehint nounwind +define internal i8 @front.399(%BufferedCharSourceRange* %this) #4 { + %this.addr = alloca %BufferedCharSourceRange* + store %BufferedCharSourceRange* %this, %BufferedCharSourceRange** %this.addr + %tmp.this = alloca i64 + br label %code + +code: ; preds = %0 + %1 = load %BufferedCharSourceRange*, %BufferedCharSourceRange** %this.addr + %2 = getelementptr inbounds %BufferedCharSourceRange, %BufferedCharSourceRange* %1, i32 0, i32 0 + %3 = load %BufferedCharSource*, %BufferedCharSource** %2 + %4 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %3, i32 0, i32 1 + %5 = load %BufferedCharSourceRange*, %BufferedCharSourceRange** %this.addr + %6 = getelementptr inbounds %BufferedCharSourceRange, %BufferedCharSourceRange* %5, i32 0, i32 0 + %7 = load %BufferedCharSource*, %BufferedCharSource** %6 + %8 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %7, i32 0, i32 2 + %9 = load i32, i32* %8 + %10 = zext i32 %9 to i64 + store i64 %10, i64* %tmp.this + %11 = load i64, i64* %tmp.this + %12 = call i8* @"().344"(%String* %4, i64 %11) + %13 = load i8, i8* %12 + ret i8 %13 +} + +; Function Attrs: inlinehint nounwind +define internal void @popFront.400(%BufferedCharSourceRange* %this) #4 { + %this.addr = alloca %BufferedCharSourceRange* + store %BufferedCharSourceRange* %this, %BufferedCharSourceRange** %this.addr + br label %code + +code: ; preds = %0 + %1 = load %BufferedCharSourceRange*, %BufferedCharSourceRange** %this.addr + %2 = getelementptr inbounds %BufferedCharSourceRange, %BufferedCharSourceRange* %1, i32 0, i32 0 + %3 = load %BufferedCharSource*, %BufferedCharSource** %2 + %4 = getelementptr inbounds %BufferedCharSource, %BufferedCharSource* %3, i32 0, i32 2 + %5 = call i32 @"post_++.39"(i32* %4) + %6 = load %BufferedCharSourceRange*, %BufferedCharSourceRange** %this.addr + %7 = getelementptr inbounds %BufferedCharSourceRange, %BufferedCharSourceRange* %6, i32 0, i32 0 + %8 = load %BufferedCharSource*, %BufferedCharSource** %7 + call void @_ensureBufferHasData(%BufferedCharSource* %8) + ret void } ; Function Attrs: inlinehint nounwind -define internal i8 @"post_++.297"(%_CharSource* %r) #4 { - %r.addr = alloca %_CharSource* - store %_CharSource* %r, %_CharSource** %r.addr - %res = alloca i8 +define internal void @all(%BufferedCharSourceRange* sret %_result, %BufferedCharSource* %this) #4 { + %_result.addr = alloca %BufferedCharSourceRange* + store %BufferedCharSourceRange* %_result, %BufferedCharSourceRange** %_result.addr + %this.addr = alloca %BufferedCharSource* + store %BufferedCharSource* %this, %BufferedCharSource** %this.addr br label %code code: ; preds = %0 - %1 = load %_CharSource*, %_CharSource** %r.addr - %2 = call i8 @front.141(%_CharSource* %1) - store i8 %2, i8* %res - %3 = load %_CharSource*, %_CharSource** %r.addr - call void @popFront.143(%_CharSource* %3) - %4 = load i8, i8* %res - ret i8 %4 + %1 = load %BufferedCharSourceRange*, %BufferedCharSourceRange** %_result.addr + %2 = load %BufferedCharSource*, %BufferedCharSource** %this.addr + call void @ctor.401(%BufferedCharSourceRange* %1, %BufferedCharSource* %2) + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.401(%BufferedCharSourceRange* %this, %BufferedCharSource* %f_data) #3 { + %this.addr = alloca %BufferedCharSourceRange* + store %BufferedCharSourceRange* %this, %BufferedCharSourceRange** %this.addr + %f_data.addr = alloca %BufferedCharSource* + store %BufferedCharSource* %f_data, %BufferedCharSource** %f_data.addr + br label %code + +code: ; preds = %0 + %1 = load %BufferedCharSource*, %BufferedCharSource** %f_data.addr + %2 = load %BufferedCharSourceRange*, %BufferedCharSourceRange** %this.addr + %3 = getelementptr inbounds %BufferedCharSourceRange, %BufferedCharSourceRange* %2, i32 0, i32 0 + store %BufferedCharSource* %1, %BufferedCharSource** %3 + ret void } ; Function Attrs: inlinehint nounwind -define internal void @ctor.298(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]" %tokens, %ExternalErrorReporter %errorReporter) #4 { - %this.addr = alloca %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %tokens.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]" - store %"SparrowScanner[_CharSource, ExternalErrorReporter]" %tokens, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %tokens.addr - %errorReporter.addr = alloca %ExternalErrorReporter - store %ExternalErrorReporter %errorReporter, %ExternalErrorReporter* %errorReporter.addr +define internal void @ctor.402(%"SparrowLayoutDecoder[SparrowScanner]"* %this, %SparrowScanner %tokens, %ErrorReporter %errorReporter) #4 { + %this.addr = alloca %"SparrowLayoutDecoder[SparrowScanner]"* + store %"SparrowLayoutDecoder[SparrowScanner]"* %this, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %tokens.addr = alloca %SparrowScanner + store %SparrowScanner %tokens, %SparrowScanner* %tokens.addr + %errorReporter.addr = alloca %ErrorReporter + store %ErrorReporter %errorReporter, %ErrorReporter* %errorReporter.addr %tmp.this = alloca i32 %tmp.this1 = alloca %TokenType %"$tmpC" = alloca %Token @@ -10349,68 +12982,71 @@ define internal void @ctor.298(%"SparrowLayoutDecoder[SparrowScanner[_CharSource br label %code code: ; preds = %0 - %1 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 2 - call void @ctor.163(%"Vector[UInt]"* %2) - %3 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %4 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %3, i32 0, i32 3 - call void @ctor.154(%"Vector[Char]"* %4) - %5 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %6 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 4 - call void @ctor.157(%TokenType* %6) - %7 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %8 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %7, i32 0, i32 5 + %1 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %2 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %1, i32 0, i32 2 + call void @ctor.151(%"Vector[UInt]"* %2) + %3 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %4 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %3, i32 0, i32 3 + call void @ctor.142(%"Vector[Char]"* %4) + %5 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %6 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %5, i32 0, i32 4 + call void @ctor.144(%TokenType* %6) + %7 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %8 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %7, i32 0, i32 5 store i32 0, i32* %8 - %9 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %10 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %9, i32 0, i32 0 - %11 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %tokens.addr - call void @ctor.299(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %10, %"SparrowScanner[_CharSource, ExternalErrorReporter]" %11) - %12 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %13 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %12, i32 0, i32 2 + %9 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %10 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %9, i32 0, i32 0 + %11 = load %SparrowScanner, %SparrowScanner* %tokens.addr + call void @ctor.403(%"RangeWithLookahead[SparrowScanner]"* %10, %SparrowScanner %11) + %12 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %13 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %12, i32 0, i32 1 + call void @ctor.204(%ErrorReporter* %13, %ErrorReporter* %errorReporter.addr) + %14 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %15 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %14, i32 0, i32 2 store i32 1, i32* %tmp.this - call void @"+=.380"(%"Vector[UInt]"* %13, i32* %tmp.this) - %14 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %15 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %14, i32 0, i32 4 - call void @ctor.313(%TokenType* %tmp.this1, i32 31) - call void @"=.249"(%TokenType* %15, %TokenType* %tmp.this1) - %16 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %17 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %16, i32 0, i32 5 - store i32 0, i32* %17 + call void @"+=.486"(%"Vector[UInt]"* %15, i32* %tmp.this) + %16 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %17 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %16, i32 0, i32 4 + call void @ctor.417(%TokenType* %tmp.this1, i32 31) + call void @"=.298"(%TokenType* %17, %TokenType* %tmp.this1) + %18 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %19 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %18, i32 0, i32 5 + store i32 0, i32* %19 br label %if_block if_block: ; preds = %code - %18 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %19 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %18, i32 0, i32 0 - %20 = call i1 @isEmpty.385(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %19) - %21 = xor i1 true, %20 - br i1 %21, label %cond.true, label %cond.false + %20 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %21 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %20, i32 0, i32 0 + %22 = call i1 @isEmpty.491(%"RangeWithLookahead[SparrowScanner]"* %21) + %23 = xor i1 true, %22 + br i1 %23, label %cond.true, label %cond.false if_then: ; preds = %cond.end - %22 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @popFront.389(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %22) + %24 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + call void @popFront.495(%"SparrowLayoutDecoder[SparrowScanner]"* %24) br label %if_end if_end: ; preds = %if_then, %cond.end - br i1 %21, label %cond_destruct_alt1, label %cond_destruct_alt2 + br i1 %23, label %cond_destruct_alt1, label %cond_destruct_alt2 cond.true: ; preds = %if_block - %23 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %24 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %23, i32 0, i32 0 - call void @front.387(%Token* %"$tmpC", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %24) - %25 = getelementptr inbounds %Token, %Token* %"$tmpC", i32 0, i32 1 - call void @ctor.313(%TokenType* %tmp.this2, i32 1) - %26 = call i1 @"==.273"(%TokenType* %25, %TokenType* %tmp.this2) + %25 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %26 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %25, i32 0, i32 0 + call void @front.493(%Token* %"$tmpC", %"RangeWithLookahead[SparrowScanner]"* %26) + %27 = getelementptr inbounds %Token, %Token* %"$tmpC", i32 0, i32 1 + call void @ctor.417(%TokenType* %tmp.this2, i32 1) + %28 = call i1 @"==.352"(%TokenType* %27, %TokenType* %tmp.this2) br label %cond.end cond.false: ; preds = %if_block br label %cond.end cond.end: ; preds = %cond.false, %cond.true - %cond.res = phi i1 [ %26, %cond.true ], [ false, %cond.false ] + %cond.res = phi i1 [ %28, %cond.true ], [ false, %cond.false ] br i1 %cond.res, label %if_then, label %if_end cond_destruct_alt1: ; preds = %if_end - call void @dtor.217(%Token* %"$tmpC") + call void @dtor.260(%Token* %"$tmpC") br label %cond_destruct_end cond_destruct_alt2: ; preds = %if_end @@ -10421,46 +13057,46 @@ cond_destruct_end: ; preds = %cond_destruct_alt2, } ; Function Attrs: inlinehint nounwind -define internal void @ctor.299(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]" %src) #4 { - %this.addr = alloca %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* - store %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr - %src.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]" - store %"SparrowScanner[_CharSource, ExternalErrorReporter]" %src, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %src.addr +define internal void @ctor.403(%"RangeWithLookahead[SparrowScanner]"* %this, %SparrowScanner %src) #4 { + %this.addr = alloca %"RangeWithLookahead[SparrowScanner]"* + store %"RangeWithLookahead[SparrowScanner]"* %this, %"RangeWithLookahead[SparrowScanner]"** %this.addr + %src.addr = alloca %SparrowScanner + store %SparrowScanner %src, %SparrowScanner* %src.addr %tmp.this = alloca i64 %"$tmpC" = alloca %Token br label %code code: ; preds = %0 - %1 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr - %2 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %1, i32 0, i32 0 - call void @ctor.148(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %2) - %3 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr - %4 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %3, i32 0, i32 0 - call void @"=.241"(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %4, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %src.addr) - %5 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr - %6 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %5, i32 0, i32 1 - call void @ctor.161(%"Vector[Token]"* %6) - %7 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr - %8 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %7, i32 0, i32 1 + %1 = load %"RangeWithLookahead[SparrowScanner]"*, %"RangeWithLookahead[SparrowScanner]"** %this.addr + %2 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner]", %"RangeWithLookahead[SparrowScanner]"* %1, i32 0, i32 0 + call void @ctor.129(%SparrowScanner* %2) + %3 = load %"RangeWithLookahead[SparrowScanner]"*, %"RangeWithLookahead[SparrowScanner]"** %this.addr + %4 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner]", %"RangeWithLookahead[SparrowScanner]"* %3, i32 0, i32 0 + call void @"=.282"(%SparrowScanner* %4, %SparrowScanner* %src.addr) + %5 = load %"RangeWithLookahead[SparrowScanner]"*, %"RangeWithLookahead[SparrowScanner]"** %this.addr + %6 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner]", %"RangeWithLookahead[SparrowScanner]"* %5, i32 0, i32 1 + call void @ctor.149(%"Vector[Token]"* %6) + %7 = load %"RangeWithLookahead[SparrowScanner]"*, %"RangeWithLookahead[SparrowScanner]"** %this.addr + %8 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner]", %"RangeWithLookahead[SparrowScanner]"* %7, i32 0, i32 1 store i64 10, i64* %tmp.this %9 = load i64, i64* %tmp.this - call void @reserve.300(%"Vector[Token]"* %8, i64 %9) + call void @reserve.404(%"Vector[Token]"* %8, i64 %9) br label %if_block if_block: ; preds = %code - %10 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr - %11 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %10, i32 0, i32 0 - %12 = call i1 @"pre_!!.303"(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %11) + %10 = load %"RangeWithLookahead[SparrowScanner]"*, %"RangeWithLookahead[SparrowScanner]"** %this.addr + %11 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner]", %"RangeWithLookahead[SparrowScanner]"* %10, i32 0, i32 0 + %12 = call i1 @"pre_!!.407"(%SparrowScanner* %11) br i1 %12, label %if_then, label %if_end if_then: ; preds = %if_block - %13 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr - %14 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %13, i32 0, i32 1 - %15 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr - %16 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %15, i32 0, i32 0 - call void @"post_++.307"(%Token* %"$tmpC", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %16) - call void @"+=.305"(%"Vector[Token]"* %14, %Token* %"$tmpC") - call void @dtor.217(%Token* %"$tmpC") + %13 = load %"RangeWithLookahead[SparrowScanner]"*, %"RangeWithLookahead[SparrowScanner]"** %this.addr + %14 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner]", %"RangeWithLookahead[SparrowScanner]"* %13, i32 0, i32 1 + %15 = load %"RangeWithLookahead[SparrowScanner]"*, %"RangeWithLookahead[SparrowScanner]"** %this.addr + %16 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner]", %"RangeWithLookahead[SparrowScanner]"* %15, i32 0, i32 0 + call void @"post_++.411"(%Token* %"$tmpC", %SparrowScanner* %16) + call void @"+=.409"(%"Vector[Token]"* %14, %Token* %"$tmpC") + call void @dtor.260(%Token* %"$tmpC") br label %if_end if_end: ; preds = %if_then, %if_block @@ -10468,7 +13104,7 @@ if_end: ; preds = %if_then, %if_block } ; Function Attrs: inlinehint nounwind -define internal void @reserve.300(%"Vector[Token]"* %this, i64 %n) #4 { +define internal void @reserve.404(%"Vector[Token]"* %this, i64 %n) #4 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr %n.addr = alloca i64 @@ -10487,7 +13123,7 @@ define internal void @reserve.300(%"Vector[Token]"* %this, i64 %n) #4 { code: ; preds = %0 %1 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr - %2 = call i64 @capacity.301(%"Vector[Token]"* %1) + %2 = call i64 @capacity.405(%"Vector[Token]"* %1) store i64 %2, i64* %curCapacity br label %if_block @@ -10549,33 +13185,33 @@ if_then6: ; preds = %if_block5 if_end7: ; preds = %if_then6, %if_block5 %24 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr - %25 = call i64 @size.191(%"Vector[Token]"* %24) + %25 = call i64 @size.209(%"Vector[Token]"* %24) store i64 %25, i64* %curSize %26 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %27 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %26, i32 0, i32 0 %28 = load i64, i64* %n.addr - call void @reallocPtr.302(%"RawPtr[Token]"* %27, i64 %28) + call void @reallocPtr.406(%"RawPtr[Token]"* %27, i64 %28) %29 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %30 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %29, i32 0, i32 1 %31 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %32 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %31, i32 0, i32 0 %33 = load %"RawPtr[Token]", %"RawPtr[Token]"* %32 %34 = load i64, i64* %curSize - call void @advance.197(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %33, i64 %34) - call void @"=.194"(%"RawPtr[Token]"* %30, %"RawPtr[Token]"* %"$tmpC") + call void @advance.215(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %33, i64 %34) + call void @"=.212"(%"RawPtr[Token]"* %30, %"RawPtr[Token]"* %"$tmpC") %35 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %36 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %35, i32 0, i32 2 %37 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %38 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %37, i32 0, i32 0 %39 = load %"RawPtr[Token]", %"RawPtr[Token]"* %38 %40 = load i64, i64* %n.addr - call void @advance.197(%"RawPtr[Token]"* %"$tmpC12", %"RawPtr[Token]" %39, i64 %40) - call void @"=.194"(%"RawPtr[Token]"* %36, %"RawPtr[Token]"* %"$tmpC12") + call void @advance.215(%"RawPtr[Token]"* %"$tmpC12", %"RawPtr[Token]" %39, i64 %40) + call void @"=.212"(%"RawPtr[Token]"* %36, %"RawPtr[Token]"* %"$tmpC12") ret void } ; Function Attrs: inlinehint nounwind -define internal i64 @capacity.301(%"Vector[Token]"* %this) #4 { +define internal i64 @capacity.405(%"Vector[Token]"* %this) #4 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr %tmp.this = alloca i64 @@ -10588,14 +13224,14 @@ code: ; preds = %0 %4 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %5 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %4, i32 0, i32 0 %6 = load %"RawPtr[Token]", %"RawPtr[Token]"* %5 - %7 = call i64 @diff.192(%"RawPtr[Token]" %3, %"RawPtr[Token]" %6) + %7 = call i64 @diff.210(%"RawPtr[Token]" %3, %"RawPtr[Token]" %6) store i64 %7, i64* %tmp.this %8 = load i64, i64* %tmp.this ret i64 %8 } ; Function Attrs: inlinehint nounwind -define internal void @reallocPtr.302(%"RawPtr[Token]"* %this, i64 %n) #4 { +define internal void @reallocPtr.406(%"RawPtr[Token]"* %this, i64 %n) #4 { %this.addr = alloca %"RawPtr[Token]"* store %"RawPtr[Token]"* %this, %"RawPtr[Token]"** %this.addr %n.addr = alloca i64 @@ -10605,7 +13241,7 @@ define internal void @reallocPtr.302(%"RawPtr[Token]"* %this, i64 %n) #4 { code: ; preds = %0 %1 = load %"RawPtr[Token]"*, %"RawPtr[Token]"** %this.addr %2 = load %"RawPtr[Token]", %"RawPtr[Token]"* %1 - %3 = call i8* @bytePtr.193(%"RawPtr[Token]" %2) + %3 = call i8* @bytePtr.211(%"RawPtr[Token]" %2) %4 = load i64, i64* %n.addr %5 = mul i64 %4, 72 %6 = call i8* @realloc(i8* %3, i64 %5) @@ -10617,22 +13253,22 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i1 @"pre_!!.303"(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %r) #4 { - %r.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* - store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %r, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %r.addr +define internal i1 @"pre_!!.407"(%SparrowScanner* %r) #4 { + %r.addr = alloca %SparrowScanner* + store %SparrowScanner* %r, %SparrowScanner** %r.addr br label %code code: ; preds = %0 - %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %r.addr - %2 = call i1 @isEmpty.304(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1) + %1 = load %SparrowScanner*, %SparrowScanner** %r.addr + %2 = call i1 @isEmpty.408(%SparrowScanner* %1) %3 = xor i1 true, %2 ret i1 %3 } ; Function Attrs: inlinehint nounwind -define internal i1 @isEmpty.304(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this) #4 { - %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* - store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr +define internal i1 @isEmpty.408(%SparrowScanner* %this) #4 { + %this.addr = alloca %SparrowScanner* + store %SparrowScanner* %this, %SparrowScanner** %this.addr br label %code code: ; preds = %0 @@ -10640,7 +13276,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @"+=.305"(%"Vector[Token]"* %this, %Token* %value) #4 { +define internal void @"+=.409"(%"Vector[Token]"* %this, %Token* %value) #4 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr %value.addr = alloca %Token* @@ -10650,12 +13286,12 @@ define internal void @"+=.305"(%"Vector[Token]"* %this, %Token* %value) #4 { code: ; preds = %0 %1 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %2 = load %Token*, %Token** %value.addr - call void @pushBack.306(%"Vector[Token]"* %1, %Token* %2) + call void @pushBack.410(%"Vector[Token]"* %1, %Token* %2) ret void } ; Function Attrs: inlinehint nounwind -define internal void @pushBack.306(%"Vector[Token]"* %this, %Token* %value) #4 { +define internal void @pushBack.410(%"Vector[Token]"* %this, %Token* %value) #4 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr %value.addr = alloca %Token* @@ -10675,14 +13311,14 @@ if_block: ; preds = %code %2 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %1, i32 0, i32 1 %3 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %4 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %3, i32 0, i32 2 - %5 = call i1 @"==.200"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %4) + %5 = call i1 @"==.218"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %4) br i1 %5, label %if_then, label %if_end if_then: ; preds = %if_block store i64 2, i64* %tmp.this %6 = load i64, i64* %tmp.this %7 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr - %8 = call i64 @capacity.301(%"Vector[Token]"* %7) + %8 = call i64 @capacity.405(%"Vector[Token]"* %7) %9 = mul i64 %6, %8 store i64 %9, i64* %t br label %if_block1 @@ -10691,16 +13327,16 @@ if_end: ; preds = %if_end3, %if_block %10 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %11 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %10, i32 0, i32 1 %12 = load %"RawPtr[Token]", %"RawPtr[Token]"* %11 - %13 = call %Token* @value.201(%"RawPtr[Token]" %12) + %13 = call %Token* @value.219(%"RawPtr[Token]" %12) %14 = load %Token*, %Token** %value.addr - call void @ctor.182(%Token* %13, %Token* %14) + call void @ctor.202(%Token* %13, %Token* %14) %15 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %16 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %15, i32 0, i32 1 %17 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %18 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %17, i32 0, i32 1 %19 = load %"RawPtr[Token]", %"RawPtr[Token]"* %18 - call void @advance.202(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %19) - call void @"=.194"(%"RawPtr[Token]"* %16, %"RawPtr[Token]"* %"$tmpC") + call void @advance.220(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %19) + call void @"=.212"(%"RawPtr[Token]"* %16, %"RawPtr[Token]"* %"$tmpC") ret void if_block1: ; preds = %if_then @@ -10719,72 +13355,72 @@ if_then2: ; preds = %if_block1 if_end3: ; preds = %if_then2, %if_block1 %24 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %25 = load i64, i64* %t - call void @reserve.300(%"Vector[Token]"* %24, i64 %25) + call void @reserve.404(%"Vector[Token]"* %24, i64 %25) br label %if_end } ; Function Attrs: inlinehint nounwind -define internal void @"post_++.307"(%Token* sret %_result, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %r) #4 { +define internal void @"post_++.411"(%Token* sret %_result, %SparrowScanner* %r) #4 { %_result.addr = alloca %Token* store %Token* %_result, %Token** %_result.addr - %r.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* - store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %r, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %r.addr + %r.addr = alloca %SparrowScanner* + store %SparrowScanner* %r, %SparrowScanner** %r.addr %res = alloca %Token br label %code code: ; preds = %0 - %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %r.addr - call void @front.308(%Token* %res, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1) - %2 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %r.addr - call void @popFront.309(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %2) + %1 = load %SparrowScanner*, %SparrowScanner** %r.addr + call void @front.412(%Token* %res, %SparrowScanner* %1) + %2 = load %SparrowScanner*, %SparrowScanner** %r.addr + call void @popFront.413(%SparrowScanner* %2) %3 = load %Token*, %Token** %_result.addr - call void @ctor.182(%Token* %3, %Token* %res) - call void @dtor.217(%Token* %res) + call void @ctor.202(%Token* %3, %Token* %res) + call void @dtor.260(%Token* %res) ret void dumy_block: ; No predecessors! - call void @dtor.217(%Token* %res) + call void @dtor.260(%Token* %res) ret void } ; Function Attrs: inlinehint nounwind -define internal void @front.308(%Token* sret %_result, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this) #4 { +define internal void @front.412(%Token* sret %_result, %SparrowScanner* %this) #4 { %_result.addr = alloca %Token* store %Token* %_result, %Token** %_result.addr - %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* - store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr + %this.addr = alloca %SparrowScanner* + store %SparrowScanner* %this, %SparrowScanner** %this.addr br label %code code: ; preds = %0 br label %if_block if_block: ; preds = %code - %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 3 + %1 = load %SparrowScanner*, %SparrowScanner** %this.addr + %2 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %1, i32 0, i32 4 %3 = load i1, i1* %2 %4 = xor i1 true, %3 br i1 %4, label %if_then, label %if_end if_then: ; preds = %if_block - %5 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %6 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %5, i32 0, i32 3 + %5 = load %SparrowScanner*, %SparrowScanner** %this.addr + %6 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %5, i32 0, i32 4 store i1 true, i1* %6 - %7 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - call void @popFront.309(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %7) + %7 = load %SparrowScanner*, %SparrowScanner** %this.addr + call void @popFront.413(%SparrowScanner* %7) br label %if_end if_end: ; preds = %if_then, %if_block %8 = load %Token*, %Token** %_result.addr - %9 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %10 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %9, i32 0, i32 2 - call void @ctor.182(%Token* %8, %Token* %10) + %9 = load %SparrowScanner*, %SparrowScanner** %this.addr + %10 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %9, i32 0, i32 3 + call void @ctor.202(%Token* %8, %Token* %10) ret void } ; Function Attrs: inlinehint nounwind -define internal void @popFront.309(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this) #4 { - %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* - store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr +define internal void @popFront.413(%SparrowScanner* %this) #4 { + %this.addr = alloca %SparrowScanner* + store %SparrowScanner* %this, %SparrowScanner** %this.addr %tmp.this = alloca %TokenType %"$tmpC" = alloca %TokenType br label %code @@ -10793,51 +13429,51 @@ code: ; preds = %0 br label %if_block if_block: ; preds = %code - %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 1 - %3 = call i1 @isEmpty.310(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %2) + %1 = load %SparrowScanner*, %SparrowScanner** %this.addr + %2 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %1, i32 0, i32 2 + %3 = call i1 @isEmpty.414(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %2) br i1 %3, label %if_then, label %if_else if_then: ; preds = %if_block - %4 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %5 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %4, i32 0, i32 1 - %6 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5, i32 0, i32 1 + %4 = load %SparrowScanner*, %SparrowScanner** %this.addr + %5 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %4, i32 0, i32 2 + %6 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]", %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %5, i32 0, i32 1 %7 = load %Location*, %Location** %6 call void @stepOver(%Location* %7) - %8 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %9 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %8, i32 0, i32 2 + %8 = load %SparrowScanner*, %SparrowScanner** %this.addr + %9 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %8, i32 0, i32 3 %10 = getelementptr inbounds %Token, %Token* %9, i32 0, i32 1 - call void @ctor.313(%TokenType* %tmp.this, i32 0) - call void @"=.249"(%TokenType* %10, %TokenType* %tmp.this) - %11 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %12 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %11, i32 0, i32 2 + call void @ctor.417(%TokenType* %tmp.this, i32 0) + call void @"=.298"(%TokenType* %10, %TokenType* %tmp.this) + %11 = load %SparrowScanner*, %SparrowScanner** %this.addr + %12 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %11, i32 0, i32 3 %13 = getelementptr inbounds %Token, %Token* %12, i32 0, i32 2 call void @clear(%String* %13) - %14 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %15 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %14, i32 0, i32 2 + %14 = load %SparrowScanner*, %SparrowScanner** %this.addr + %15 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %14, i32 0, i32 3 %16 = getelementptr inbounds %Token, %Token* %15, i32 0, i32 0 - %17 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %18 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %17, i32 0, i32 1 - %19 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %18, i32 0, i32 1 + %17 = load %SparrowScanner*, %SparrowScanner** %this.addr + %18 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %17, i32 0, i32 2 + %19 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]", %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %18, i32 0, i32 1 %20 = load %Location*, %Location** %19 - call void @"=.242"(%Location* %16, %Location* %20) + call void @"=.283"(%Location* %16, %Location* %20) br label %if_end if_else: ; preds = %if_block - %21 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %22 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %21, i32 0, i32 2 + %21 = load %SparrowScanner*, %SparrowScanner** %this.addr + %22 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %21, i32 0, i32 3 %23 = getelementptr inbounds %Token, %Token* %22, i32 0, i32 1 - %24 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - call void @nextToken(%TokenType* %"$tmpC", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %24) - call void @"=.249"(%TokenType* %23, %TokenType* %"$tmpC") - %25 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %26 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %25, i32 0, i32 2 + %24 = load %SparrowScanner*, %SparrowScanner** %this.addr + call void @nextToken(%TokenType* %"$tmpC", %SparrowScanner* %24) + call void @"=.298"(%TokenType* %23, %TokenType* %"$tmpC") + %25 = load %SparrowScanner*, %SparrowScanner** %this.addr + %26 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %25, i32 0, i32 3 %27 = getelementptr inbounds %Token, %Token* %26, i32 0, i32 0 - %28 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %29 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %28, i32 0, i32 1 - %30 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %29, i32 0, i32 1 + %28 = load %SparrowScanner*, %SparrowScanner** %this.addr + %29 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %28, i32 0, i32 2 + %30 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]", %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %29, i32 0, i32 1 %31 = load %Location*, %Location** %30 - call void @"=.242"(%Location* %27, %Location* %31) + call void @"=.283"(%Location* %27, %Location* %31) br label %if_end if_end: ; preds = %if_else, %if_then @@ -10845,33 +13481,33 @@ if_end: ; preds = %if_else, %if_then } ; Function Attrs: inlinehint nounwind -define internal i1 @isEmpty.310(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this) #4 { - %this.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* - store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr +define internal i1 @isEmpty.414(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %this) #4 { + %this.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* + store %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %this.addr br label %code code: ; preds = %0 - %1 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr - %2 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1, i32 0, i32 0 - %3 = call i1 @isEmpty.311(%"RangeWithLookahead[_CharSource]"* %2) + %1 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %this.addr + %2 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]", %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %1, i32 0, i32 0 + %3 = call i1 @isEmpty.415(%"RangeWithLookahead[BufferedCharSourceRange]"* %2) ret i1 %3 } ; Function Attrs: inlinehint nounwind -define internal i1 @isEmpty.311(%"RangeWithLookahead[_CharSource]"* %this) #4 { - %this.addr = alloca %"RangeWithLookahead[_CharSource]"* - store %"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"** %this.addr +define internal i1 @isEmpty.415(%"RangeWithLookahead[BufferedCharSourceRange]"* %this) #4 { + %this.addr = alloca %"RangeWithLookahead[BufferedCharSourceRange]"* + store %"RangeWithLookahead[BufferedCharSourceRange]"* %this, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr br label %code code: ; preds = %0 - %1 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %2 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %1, i32 0, i32 1 - %3 = call i1 @isEmpty.312(%"Vector[Char]"* %2) + %1 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %2 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %1, i32 0, i32 1 + %3 = call i1 @isEmpty.416(%"Vector[Char]"* %2) ret i1 %3 } ; Function Attrs: inlinehint nounwind -define internal i1 @isEmpty.312(%"Vector[Char]"* %this) #4 { +define internal i1 @isEmpty.416(%"Vector[Char]"* %this) #4 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr br label %code @@ -10881,7 +13517,7 @@ code: ; preds = %0 %2 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %1, i32 0, i32 0 %3 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %4 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %3, i32 0, i32 1 - %5 = call i1 @"==.225"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) + %5 = call i1 @"==.268"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) ret i1 %5 } @@ -10896,12 +13532,12 @@ code: ; preds = %0 %2 = getelementptr inbounds %Location, %Location* %1, i32 0, i32 1 %3 = load %Location*, %Location** %l.addr %4 = getelementptr inbounds %Location, %Location* %3, i32 0, i32 2 - call void @"=.244"(%LineCol* %2, %LineCol* %4) + call void @"=.285"(%LineCol* %2, %LineCol* %4) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.313(%TokenType* %this, i32 %fdata) #3 { +define internal void @ctor.417(%TokenType* %this, i32 %fdata) #3 { %this.addr = alloca %TokenType* store %TokenType* %this, %TokenType** %this.addr %fdata.addr = alloca i32 @@ -10917,7 +13553,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.314(%TokenType* %this) #3 { +define internal void @dtor.418(%TokenType* %this) #3 { %this.addr = alloca %TokenType* store %TokenType* %this, %TokenType** %this.addr br label %code @@ -10926,96 +13562,12 @@ code: ; preds = %0 ret void } -; Function Attrs: inlinehint nounwind -define internal void @clear(%String* %this) #4 { - %this.addr = alloca %String* - store %String* %this, %String** %this.addr - %tmp.this = alloca %StringRef - br label %code - -code: ; preds = %0 - %1 = load %String*, %String** %this.addr - %2 = load %String*, %String** %this.addr - %3 = getelementptr inbounds %String, %String* %2, i32 0, i32 0 - %4 = load %"RawPtr[Char]", %"RawPtr[Char]"* %3 - %5 = call i8* @bytePtr(%"RawPtr[Char]" %4) - %6 = load %String*, %String** %this.addr - %7 = getelementptr inbounds %String, %String* %6, i32 0, i32 1 - %8 = load %"RawPtr[Char]", %"RawPtr[Char]"* %7 - %9 = call i8* @bytePtr(%"RawPtr[Char]" %8) - call void @ctor.57(%StringRef* %tmp.this, i8* %5, i8* %9) - %10 = load %StringRef, %StringRef* %tmp.this - call void @remove(%String* %1, %StringRef %10) - ret void -} - -; Function Attrs: inlinehint nounwind -define internal void @remove(%String* %this, %StringRef %range) #4 { - %this.addr = alloca %String* - store %String* %this, %String** %this.addr - %range.addr = alloca %StringRef - store %StringRef %range, %StringRef* %range.addr - %rSize = alloca i64 - %rBegin = alloca %"RawPtr[Char]" - %rEnd = alloca %"RawPtr[Char]" - %tmp.this = alloca i64 - %"$tmpC" = alloca %"RawPtr[Char]" - %"$tmpC1" = alloca %"RawPtr[Char]" - br label %code - -code: ; preds = %0 - %1 = call i64 @size(%StringRef* %range.addr) - store i64 %1, i64* %rSize - %2 = load %StringRef, %StringRef* %range.addr - call void @_frontPtr(%"RawPtr[Char]"* %rBegin, %StringRef %2) - %3 = load %"RawPtr[Char]", %"RawPtr[Char]"* %rBegin - %4 = load i64, i64* %rSize - store i64 %4, i64* %tmp.this - %5 = load i64, i64* %tmp.this - call void @advance.187(%"RawPtr[Char]"* %rEnd, %"RawPtr[Char]" %3, i64 %5) - br label %while_block - -while_block: ; preds = %while_step, %code - %6 = load %String*, %String** %this.addr - %7 = getelementptr inbounds %String, %String* %6, i32 0, i32 1 - %8 = call i1 @"==.225"(%"RawPtr[Char]"* %rEnd, %"RawPtr[Char]"* %7) - %9 = xor i1 true, %8 - br i1 %9, label %while_body, label %while_end - -while_body: ; preds = %while_block - %10 = load %"RawPtr[Char]", %"RawPtr[Char]"* %rBegin - %11 = call i8* @value(%"RawPtr[Char]" %10) - %12 = load i8, i8* %11 - %13 = load %"RawPtr[Char]", %"RawPtr[Char]"* %rEnd - %14 = call i8* @value(%"RawPtr[Char]" %13) - %15 = load i8, i8* %14 - %16 = load %"RawPtr[Char]", %"RawPtr[Char]"* %rBegin - %17 = call i8* @value(%"RawPtr[Char]" %16) - store i8 %15, i8* %17 - %18 = load %"RawPtr[Char]", %"RawPtr[Char]"* %rBegin - call void @advance.226(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %18) - call void @"=.178"(%"RawPtr[Char]"* %rBegin, %"RawPtr[Char]"* %"$tmpC") - %19 = load %"RawPtr[Char]", %"RawPtr[Char]"* %rEnd - call void @advance.226(%"RawPtr[Char]"* %"$tmpC1", %"RawPtr[Char]" %19) - call void @"=.178"(%"RawPtr[Char]"* %rEnd, %"RawPtr[Char]"* %"$tmpC1") - br label %while_step - -while_step: ; preds = %while_body - br label %while_block - -while_end: ; preds = %while_block - %20 = load %String*, %String** %this.addr - %21 = getelementptr inbounds %String, %String* %20, i32 0, i32 1 - call void @"=.178"(%"RawPtr[Char]"* %21, %"RawPtr[Char]"* %rBegin) - ret void -} - ; Function Attrs: noinline nounwind -define void @nextToken(%TokenType* sret %_result, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this) #5 { +define void @nextToken(%TokenType* sret %_result, %SparrowScanner* %this) #5 { %_result.addr = alloca %TokenType* store %TokenType* %_result, %TokenType** %_result.addr - %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* - store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr + %this.addr = alloca %SparrowScanner* + store %SparrowScanner* %this, %SparrowScanner** %this.addr %loc = alloca %Location* %tmp.this = alloca i32 %tmp.this1 = alloca i32 @@ -11027,25 +13579,25 @@ define void @nextToken(%TokenType* sret %_result, %"SparrowScanner[_CharSource, %tmp.this21 = alloca %"$lambdaEnclosureData.0" %"$tmpC" = alloca %String %tmp.StringRef = alloca %StringRef - %tmp.this26 = alloca %"$lambdaEnclosureData.1" - %tmp.this39 = alloca %"$lambdaEnclosureData.2" - %tmp.this48 = alloca i64 + %tmp.this30 = alloca %"$lambdaEnclosureData.1" + %tmp.this47 = alloca %"$lambdaEnclosureData.2" + %tmp.this60 = alloca i64 %c1 = alloca i8 %c2 = alloca i8 - %tmp.this64 = alloca %String + %tmp.this76 = alloca %String %"$tmpForRef" = alloca %StringRef - %tmp.StringRef65 = alloca %StringRef - %tmp.this75 = alloca i64 - %"$tmpC180" = alloca %String - %tmp.StringRef181 = alloca %StringRef - %tmp.StringRef182 = alloca %StringRef - %tmp.this183 = alloca i32 + %tmp.StringRef77 = alloca %StringRef + %tmp.this91 = alloca i64 + %"$tmpC200" = alloca %String + %tmp.StringRef201 = alloca %StringRef + %tmp.StringRef202 = alloca %StringRef + %tmp.this203 = alloca i32 br label %code code: ; preds = %0 - %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 1 - %3 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %2, i32 0, i32 1 + %1 = load %SparrowScanner*, %SparrowScanner** %this.addr + %2 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %1, i32 0, i32 2 + %3 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]", %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %2, i32 0, i32 1 %4 = load %Location*, %Location** %3 store %Location* %4, %Location** %loc br label %if_block @@ -11061,12 +13613,12 @@ if_block: ; preds = %code br i1 %10, label %cond.true, label %cond.false if_then: ; preds = %cond.end - %11 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %12 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %11, i32 0, i32 1 - %13 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %12) + %11 = load %SparrowScanner*, %SparrowScanner** %this.addr + %12 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %11, i32 0, i32 2 + %13 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %12) store i8 %13, i8* %ch - %14 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %15 = call i8 @peekChar(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %14) + %14 = load %SparrowScanner*, %SparrowScanner** %this.addr + %15 = call i8 @peekChar(%SparrowScanner* %14) store i8 %15, i8* %ch2 br label %if_block2 @@ -11096,13 +13648,13 @@ if_block2: ; preds = %if_then br i1 %23, label %cond.true5, label %cond.false6 if_then3: ; preds = %cond.end7 - %24 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %25 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %24, i32 0, i32 1 - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %25) - %26 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %27 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %26, i32 0, i32 1 + %24 = load %SparrowScanner*, %SparrowScanner** %this.addr + %25 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %24, i32 0, i32 2 + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %25) + %26 = load %SparrowScanner*, %SparrowScanner** %this.addr + %27 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %26, i32 0, i32 2 %28 = load %"$lambdaEnclosureData", %"$lambdaEnclosureData"* %tmp.this9 - call void @advanceIf(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %27, %"$lambdaEnclosureData" %28) + call void @advanceIf(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %27, %"$lambdaEnclosureData" %28) br label %if_block10 if_end4: ; preds = %if_end12, %cond.end7 @@ -11121,15 +13673,15 @@ cond.end7: ; preds = %cond.false6, %cond. br i1 %cond.res8, label %if_then3, label %if_end4 if_block10: ; preds = %if_then3 - %31 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %32 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %31, i32 0, i32 1 - %33 = call i1 @"pre_!!.338"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %32) + %31 = load %SparrowScanner*, %SparrowScanner** %this.addr + %32 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %31, i32 0, i32 2 + %33 = call i1 @"pre_!!.442"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %32) br i1 %33, label %if_then11, label %if_end12 if_then11: ; preds = %if_block10 - %34 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %35 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %34, i32 0, i32 1 - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %35) + %34 = load %SparrowScanner*, %SparrowScanner** %this.addr + %35 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %34, i32 0, i32 2 + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %35) br label %if_end12 if_end12: ; preds = %if_then11, %if_block10 @@ -11150,36 +13702,36 @@ while_block: ; preds = %while_step, %cond_d while_body: ; preds = %while_block %36 = load %Location*, %Location** %loc call void @stepOver(%Location* %36) - %37 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %38 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %37, i32 0, i32 2 + %37 = load %SparrowScanner*, %SparrowScanner** %this.addr + %38 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %37, i32 0, i32 3 %39 = getelementptr inbounds %Token, %Token* %38, i32 0, i32 2 call void @clear(%String* %39) br label %if_block13 -while_step: ; preds = %dumy_block184, %if_then69, %if_end63, %if_then33, %if_then24, %if_then19 +while_step: ; preds = %dumy_block204, %if_end94, %if_end81, %if_end50, %if_end33, %if_end24 br label %while_block while_end: ; preds = %while_block ret void if_block13: ; preds = %while_body - %40 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %41 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %40, i32 0, i32 1 - %42 = call i1 @isEmpty.310(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %41) + %40 = load %SparrowScanner*, %SparrowScanner** %this.addr + %41 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %40, i32 0, i32 2 + %42 = call i1 @isEmpty.414(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %41) br i1 %42, label %if_then14, label %if_end15 if_then14: ; preds = %if_block13 %43 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %43, i32 0) + call void @ctor.417(%TokenType* %43, i32 0) ret void if_end15: ; preds = %dumy_block, %if_block13 - %44 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %45 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %44, i32 0, i32 1 - %46 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %45) + %44 = load %SparrowScanner*, %SparrowScanner** %this.addr + %45 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %44, i32 0, i32 2 + %46 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %45) store i8 %46, i8* %ch16 - %47 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %48 = call i8 @peekChar(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %47) + %47 = load %SparrowScanner*, %SparrowScanner** %this.addr + %48 = call i8 @peekChar(%SparrowScanner* %47) store i8 %48, i8* %ch217 br label %if_block18 @@ -11192,329 +13744,330 @@ if_block18: ; preds = %if_end15 br i1 %50, label %if_then19, label %if_end20 if_then19: ; preds = %if_block18 - %51 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %52 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %51, i32 0, i32 1 + %51 = load %SparrowScanner*, %SparrowScanner** %this.addr + %52 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %51, i32 0, i32 2 %53 = load %"$lambdaEnclosureData.0", %"$lambdaEnclosureData.0"* %tmp.this21 - call void @advanceIf.339(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %52, %"$lambdaEnclosureData.0" %53) - br label %while_step + call void @advanceIf.443(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %52, %"$lambdaEnclosureData.0" %53) + br label %if_block22 -if_end20: ; preds = %dumy_block22, %if_block18 - br label %if_block23 +if_end20: ; preds = %dumy_block26, %if_block18 + br label %if_block27 -dumy_block22: ; No predecessors! - br label %if_end20 +if_block22: ; preds = %if_then19 + %54 = load %SparrowScanner*, %SparrowScanner** %this.addr + %55 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %54, i32 0, i32 6 + %56 = load i1, i1* %55 + br i1 %56, label %if_then23, label %if_end24 -if_block23: ; preds = %if_end20 - %54 = load i8, i8* %ch16 - %55 = icmp eq i8 %54, 9 - br i1 %55, label %if_then24, label %if_end25 - -if_then24: ; preds = %if_block23 - %56 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %57 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 0 - %58 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 1 - store i8* getelementptr inbounds ([30 x i8], [30 x i8]* @str.11, i32 0, i32 0), i8** %57 - store i8* getelementptr inbounds ([30 x i8], [30 x i8]* @str.11, i32 0, i32 29), i8** %58 - %59 = load %StringRef, %StringRef* %tmp.StringRef - call void @toString.347(%String* %"$tmpC", %StringRef %59) - call void @reportError.346(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %56, %String* %"$tmpC") - call void @dtor.218(%String* %"$tmpC") - %60 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %61 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %60, i32 0, i32 1 - %62 = load %"$lambdaEnclosureData.1", %"$lambdaEnclosureData.1"* %tmp.this26 - call void @advanceIf.348(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %61, %"$lambdaEnclosureData.1" %62) +if_then23: ; preds = %if_block22 + %57 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %57, i32 255) + ret void + +if_end24: ; preds = %dumy_block25, %if_block22 br label %while_step -if_end25: ; preds = %dumy_block27, %if_block23 - br label %if_block28 +dumy_block25: ; No predecessors! + br label %if_end24 -dumy_block27: ; No predecessors! - br label %if_end25 +dumy_block26: ; No predecessors! + br label %if_end20 -if_block28: ; preds = %if_end25 - %63 = load i8, i8* %ch16 - %64 = icmp eq i8 %63, 10 - br i1 %64, label %if_then29, label %if_end30 +if_block27: ; preds = %if_end20 + %58 = load i8, i8* %ch16 + %59 = icmp eq i8 %58, 9 + br i1 %59, label %if_then28, label %if_end29 -if_then29: ; preds = %if_block28 - %65 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %66 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %65, i32 0, i32 1 - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %66) - %67 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %67, i32 1) - ret void +if_then28: ; preds = %if_block27 + %60 = load %SparrowScanner*, %SparrowScanner** %this.addr + %61 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 0 + %62 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 1 + store i8* getelementptr inbounds ([30 x i8], [30 x i8]* @str.8, i32 0, i32 0), i8** %61 + store i8* getelementptr inbounds ([30 x i8], [30 x i8]* @str.8, i32 0, i32 29), i8** %62 + %63 = load %StringRef, %StringRef* %tmp.StringRef + call void @toString(%String* %"$tmpC", %StringRef %63) + call void @reportError(%SparrowScanner* %60, %String* %"$tmpC") + call void @dtor.261(%String* %"$tmpC") + %64 = load %SparrowScanner*, %SparrowScanner** %this.addr + %65 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %64, i32 0, i32 2 + %66 = load %"$lambdaEnclosureData.1", %"$lambdaEnclosureData.1"* %tmp.this30 + call void @advanceIf.455(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %65, %"$lambdaEnclosureData.1" %66) + br label %if_block31 + +if_end29: ; preds = %dumy_block35, %if_block27 + br label %if_block36 -if_end30: ; preds = %dumy_block31, %if_block28 - br label %if_block32 +if_block31: ; preds = %if_then28 + %67 = load %SparrowScanner*, %SparrowScanner** %this.addr + %68 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %67, i32 0, i32 6 + %69 = load i1, i1* %68 + br i1 %69, label %if_then32, label %if_end33 -dumy_block31: ; No predecessors! - br label %if_end30 +if_then32: ; preds = %if_block31 + %70 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %70, i32 255) + ret void -if_block32: ; preds = %if_end30 - %68 = load i8, i8* %ch16 - %69 = icmp eq i8 %68, 47 - br i1 %69, label %cond.true35, label %cond.false36 - -if_then33: ; preds = %cond.end37 - %70 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %71 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %70, i32 0, i32 1 - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %71) - %72 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %73 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %72, i32 0, i32 1 - %74 = load %"$lambdaEnclosureData.2", %"$lambdaEnclosureData.2"* %tmp.this39 - call void @advanceIf.355(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %73, %"$lambdaEnclosureData.2" %74) +if_end33: ; preds = %dumy_block34, %if_block31 br label %while_step -if_end34: ; preds = %dumy_block40, %cond.end37 - br label %if_block41 +dumy_block34: ; No predecessors! + br label %if_end33 -cond.true35: ; preds = %if_block32 - %75 = load i8, i8* %ch217 - %76 = icmp eq i8 %75, 47 - br label %cond.end37 +dumy_block35: ; No predecessors! + br label %if_end29 -cond.false36: ; preds = %if_block32 - br label %cond.end37 +if_block36: ; preds = %if_end29 + %71 = load i8, i8* %ch16 + %72 = icmp eq i8 %71, 10 + br i1 %72, label %if_then37, label %if_end38 -cond.end37: ; preds = %cond.false36, %cond.true35 - %cond.res38 = phi i1 [ %76, %cond.true35 ], [ false, %cond.false36 ] - br i1 %cond.res38, label %if_then33, label %if_end34 +if_then37: ; preds = %if_block36 + %73 = load %SparrowScanner*, %SparrowScanner** %this.addr + %74 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %73, i32 0, i32 2 + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %74) + %75 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %75, i32 1) + ret void -dumy_block40: ; No predecessors! - br label %if_end34 - -if_block41: ; preds = %if_end34 - %77 = load i8, i8* %ch16 - %78 = icmp eq i8 %77, 47 - br i1 %78, label %cond.true44, label %cond.false45 - -if_then42: ; preds = %cond.end46 - %79 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %80 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %79, i32 0, i32 1 - store i64 2, i64* %tmp.this48 - %81 = load i64, i64* %tmp.this48 - call void @advance.362(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %80, i64 %81) - store i8 97, i8* %c1 - store i8 97, i8* %c2 - br label %while_block49 +if_end38: ; preds = %dumy_block39, %if_block36 + br label %if_block40 -if_end43: ; preds = %dumy_block67, %cond.end46 - br label %if_block68 +dumy_block39: ; No predecessors! + br label %if_end38 -cond.true44: ; preds = %if_block41 - %82 = load i8, i8* %ch217 - %83 = icmp eq i8 %82, 42 - br label %cond.end46 - -cond.false45: ; preds = %if_block41 - br label %cond.end46 - -cond.end46: ; preds = %cond.false45, %cond.true44 - %cond.res47 = phi i1 [ %83, %cond.true44 ], [ false, %cond.false45 ] - br i1 %cond.res47, label %if_then42, label %if_end43 - -while_block49: ; preds = %while_step51, %if_then42 - %84 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %85 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %84, i32 0, i32 1 - %86 = call i1 @"pre_!!.338"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %85) - br i1 %86, label %cond.true53, label %cond.false54 - -while_body50: ; preds = %cond.end55 - %87 = load i8, i8* %c2 - store i8 %87, i8* %c1 - %88 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %89 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %88, i32 0, i32 1 - %90 = call i8 @"pre_++.363"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %89) - store i8 %90, i8* %c2 - br label %while_step51 - -while_step51: ; preds = %while_body50 - br label %while_block49 - -while_end52: ; preds = %cond.end55 - br label %if_block61 +if_block40: ; preds = %if_end38 + %76 = load i8, i8* %ch16 + %77 = icmp eq i8 %76, 47 + br i1 %77, label %cond.true43, label %cond.false44 + +if_then41: ; preds = %cond.end45 + %78 = load %SparrowScanner*, %SparrowScanner** %this.addr + %79 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %78, i32 0, i32 2 + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %79) + %80 = load %SparrowScanner*, %SparrowScanner** %this.addr + %81 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %80, i32 0, i32 2 + %82 = load %"$lambdaEnclosureData.2", %"$lambdaEnclosureData.2"* %tmp.this47 + call void @advanceIf.462(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %81, %"$lambdaEnclosureData.2" %82) + br label %if_block48 + +if_end42: ; preds = %dumy_block52, %cond.end45 + br label %if_block53 -cond.true53: ; preds = %while_block49 - %91 = load i8, i8* %c1 - %92 = icmp ne i8 %91, 42 - br i1 %92, label %cond.true56, label %cond.false57 +cond.true43: ; preds = %if_block40 + %83 = load i8, i8* %ch217 + %84 = icmp eq i8 %83, 47 + br label %cond.end45 -cond.false54: ; preds = %while_block49 - br label %cond.end55 +cond.false44: ; preds = %if_block40 + br label %cond.end45 -cond.end55: ; preds = %cond.false54, %cond.end58 - %cond.res60 = phi i1 [ %cond.res59, %cond.end58 ], [ false, %cond.false54 ] - br i1 %cond.res60, label %while_body50, label %while_end52 +cond.end45: ; preds = %cond.false44, %cond.true43 + %cond.res46 = phi i1 [ %84, %cond.true43 ], [ false, %cond.false44 ] + br i1 %cond.res46, label %if_then41, label %if_end42 -cond.true56: ; preds = %cond.true53 - br label %cond.end58 +if_block48: ; preds = %if_then41 + %85 = load %SparrowScanner*, %SparrowScanner** %this.addr + %86 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %85, i32 0, i32 6 + %87 = load i1, i1* %86 + br i1 %87, label %if_then49, label %if_end50 -cond.false57: ; preds = %cond.true53 - %93 = load i8, i8* %c2 - %94 = icmp ne i8 %93, 47 - br label %cond.end58 +if_then49: ; preds = %if_block48 + %88 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %88, i32 254) + ret void -cond.end58: ; preds = %cond.false57, %cond.true56 - %cond.res59 = phi i1 [ true, %cond.true56 ], [ %94, %cond.false57 ] - br label %cond.end55 +if_end50: ; preds = %dumy_block51, %if_block48 + br label %while_step -if_block61: ; preds = %while_end52 - %95 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %96 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %95, i32 0, i32 1 - %97 = call i1 @"pre_!"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %96) - br i1 %97, label %if_then62, label %if_end63 +dumy_block51: ; No predecessors! + br label %if_end50 -if_then62: ; preds = %if_block61 - %98 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %99 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef65, i32 0, i32 0 - %100 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef65, i32 0, i32 1 - store i8* getelementptr inbounds ([33 x i8], [33 x i8]* @str.12, i32 0, i32 0), i8** %99 - store i8* getelementptr inbounds ([33 x i8], [33 x i8]* @str.12, i32 0, i32 32), i8** %100 - %101 = load %StringRef, %StringRef* %tmp.StringRef65 - store %StringRef %101, %StringRef* %"$tmpForRef" - call void @ctor.364(%String* %tmp.this64, %StringRef* %"$tmpForRef") - call void @reportError.346(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %98, %String* %tmp.this64) - call void @dtor.218(%String* %tmp.this64) - %102 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %102, i32 0) - ret void +dumy_block52: ; No predecessors! + br label %if_end42 -if_end63: ; preds = %dumy_block66, %if_block61 - %103 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %104 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %103, i32 0, i32 1 - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %104) - br label %while_step +if_block53: ; preds = %if_end42 + %89 = load i8, i8* %ch16 + %90 = icmp eq i8 %89, 47 + br i1 %90, label %cond.true56, label %cond.false57 -dumy_block66: ; No predecessors! - br label %if_end63 +if_then54: ; preds = %cond.end58 + %91 = load %SparrowScanner*, %SparrowScanner** %this.addr + %92 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %91, i32 0, i32 2 + store i64 2, i64* %tmp.this60 + %93 = load i64, i64* %tmp.this60 + call void @advance.469(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %92, i64 %93) + store i8 97, i8* %c1 + store i8 97, i8* %c2 + br label %while_block61 -dumy_block67: ; No predecessors! - br label %if_end43 +if_end55: ; preds = %dumy_block83, %cond.end58 + br label %if_block84 -if_block68: ; preds = %if_end43 - %105 = load i8, i8* %ch16 - %106 = icmp eq i8 %105, 92 - br i1 %106, label %cond.true71, label %cond.false72 - -if_then69: ; preds = %cond.end73 - %107 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %108 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %107, i32 0, i32 1 - store i64 2, i64* %tmp.this75 - %109 = load i64, i64* %tmp.this75 - call void @advance.362(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %108, i64 %109) - br label %while_step +cond.true56: ; preds = %if_block53 + %94 = load i8, i8* %ch217 + %95 = icmp eq i8 %94, 42 + br label %cond.end58 -if_end70: ; preds = %dumy_block76, %cond.end73 - br label %if_block77 +cond.false57: ; preds = %if_block53 + br label %cond.end58 + +cond.end58: ; preds = %cond.false57, %cond.true56 + %cond.res59 = phi i1 [ %95, %cond.true56 ], [ false, %cond.false57 ] + br i1 %cond.res59, label %if_then54, label %if_end55 + +while_block61: ; preds = %while_step63, %if_then54 + %96 = load %SparrowScanner*, %SparrowScanner** %this.addr + %97 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %96, i32 0, i32 2 + %98 = call i1 @"pre_!!.442"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %97) + br i1 %98, label %cond.true65, label %cond.false66 + +while_body62: ; preds = %cond.end67 + %99 = load i8, i8* %c2 + store i8 %99, i8* %c1 + %100 = load %SparrowScanner*, %SparrowScanner** %this.addr + %101 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %100, i32 0, i32 2 + %102 = call i8 @"pre_++.470"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %101) + store i8 %102, i8* %c2 + br label %while_step63 + +while_step63: ; preds = %while_body62 + br label %while_block61 + +while_end64: ; preds = %cond.end67 + br label %if_block73 -cond.true71: ; preds = %if_block68 - %110 = load i8, i8* %ch217 - %111 = icmp eq i8 %110, 10 - br label %cond.end73 +cond.true65: ; preds = %while_block61 + %103 = load i8, i8* %c1 + %104 = icmp ne i8 %103, 42 + br i1 %104, label %cond.true68, label %cond.false69 -cond.false72: ; preds = %if_block68 - br label %cond.end73 +cond.false66: ; preds = %while_block61 + br label %cond.end67 -cond.end73: ; preds = %cond.false72, %cond.true71 - %cond.res74 = phi i1 [ %111, %cond.true71 ], [ false, %cond.false72 ] - br i1 %cond.res74, label %if_then69, label %if_end70 +cond.end67: ; preds = %cond.false66, %cond.end70 + %cond.res72 = phi i1 [ %cond.res71, %cond.end70 ], [ false, %cond.false66 ] + br i1 %cond.res72, label %while_body62, label %while_end64 -dumy_block76: ; No predecessors! - br label %if_end70 +cond.true68: ; preds = %cond.true65 + br label %cond.end70 -if_block77: ; preds = %if_end70 - %112 = load i8, i8* %ch16 - %113 = icmp eq i8 %112, 39 - br i1 %113, label %if_then78, label %if_end79 +cond.false69: ; preds = %cond.true65 + %105 = load i8, i8* %c2 + %106 = icmp ne i8 %105, 47 + br label %cond.end70 -if_then78: ; preds = %if_block77 +cond.end70: ; preds = %cond.false69, %cond.true68 + %cond.res71 = phi i1 [ true, %cond.true68 ], [ %106, %cond.false69 ] + br label %cond.end67 + +if_block73: ; preds = %while_end64 + %107 = load %SparrowScanner*, %SparrowScanner** %this.addr + %108 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %107, i32 0, i32 2 + %109 = call i1 @"pre_!"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %108) + br i1 %109, label %if_then74, label %if_end75 + +if_then74: ; preds = %if_block73 + %110 = load %SparrowScanner*, %SparrowScanner** %this.addr + %111 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef77, i32 0, i32 0 + %112 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef77, i32 0, i32 1 + store i8* getelementptr inbounds ([33 x i8], [33 x i8]* @str.9, i32 0, i32 0), i8** %111 + store i8* getelementptr inbounds ([33 x i8], [33 x i8]* @str.9, i32 0, i32 32), i8** %112 + %113 = load %StringRef, %StringRef* %tmp.StringRef77 + store %StringRef %113, %StringRef* %"$tmpForRef" + call void @ctor.471(%String* %tmp.this76, %StringRef* %"$tmpForRef") + call void @reportError(%SparrowScanner* %110, %String* %tmp.this76) + call void @dtor.261(%String* %tmp.this76) %114 = load %TokenType*, %TokenType** %_result.addr - %115 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - call void @parseString(%TokenType* %114, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %115, i8 39) + call void @ctor.417(%TokenType* %114, i32 0) ret void -if_end79: ; preds = %dumy_block80, %if_block77 - br label %if_block81 +if_end75: ; preds = %dumy_block78, %if_block73 + %115 = load %SparrowScanner*, %SparrowScanner** %this.addr + %116 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %115, i32 0, i32 2 + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %116) + br label %if_block79 -dumy_block80: ; No predecessors! - br label %if_end79 +dumy_block78: ; No predecessors! + br label %if_end75 -if_block81: ; preds = %if_end79 - %116 = load i8, i8* %ch16 - %117 = icmp eq i8 %116, 34 - br i1 %117, label %if_then82, label %if_end83 +if_block79: ; preds = %if_end75 + %117 = load %SparrowScanner*, %SparrowScanner** %this.addr + %118 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %117, i32 0, i32 6 + %119 = load i1, i1* %118 + br i1 %119, label %if_then80, label %if_end81 -if_then82: ; preds = %if_block81 - %118 = load %TokenType*, %TokenType** %_result.addr - %119 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - call void @parseString(%TokenType* %118, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %119, i8 34) +if_then80: ; preds = %if_block79 + %120 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %120, i32 254) ret void -if_end83: ; preds = %dumy_block84, %if_block81 - br label %if_block85 - -dumy_block84: ; No predecessors! - br label %if_end83 +if_end81: ; preds = %dumy_block82, %if_block79 + br label %while_step -if_block85: ; preds = %if_end83 - %120 = load i8, i8* %ch16 - %121 = icmp eq i8 %120, 60 - br i1 %121, label %cond.true88, label %cond.false89 +dumy_block82: ; No predecessors! + br label %if_end81 -if_then86: ; preds = %cond.end90 - %122 = load %TokenType*, %TokenType** %_result.addr - %123 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - call void @parseStringNE(%TokenType* %122, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %123) - ret void +dumy_block83: ; No predecessors! + br label %if_end55 -if_end87: ; preds = %dumy_block92, %cond.end90 - br label %if_block93 +if_block84: ; preds = %if_end55 + %121 = load i8, i8* %ch16 + %122 = icmp eq i8 %121, 92 + br i1 %122, label %cond.true87, label %cond.false88 + +if_then85: ; preds = %cond.end89 + %123 = load %SparrowScanner*, %SparrowScanner** %this.addr + %124 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %123, i32 0, i32 2 + store i64 2, i64* %tmp.this91 + %125 = load i64, i64* %tmp.this91 + call void @advance.469(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %124, i64 %125) + br label %if_block92 -cond.true88: ; preds = %if_block85 - %124 = load i8, i8* %ch217 - %125 = icmp eq i8 %124, 123 - br label %cond.end90 +if_end86: ; preds = %dumy_block96, %cond.end89 + br label %if_block97 -cond.false89: ; preds = %if_block85 - br label %cond.end90 +cond.true87: ; preds = %if_block84 + %126 = load i8, i8* %ch217 + %127 = icmp eq i8 %126, 10 + br label %cond.end89 -cond.end90: ; preds = %cond.false89, %cond.true88 - %cond.res91 = phi i1 [ %125, %cond.true88 ], [ false, %cond.false89 ] - br i1 %cond.res91, label %if_then86, label %if_end87 +cond.false88: ; preds = %if_block84 + br label %cond.end89 -dumy_block92: ; No predecessors! - br label %if_end87 +cond.end89: ; preds = %cond.false88, %cond.true87 + %cond.res90 = phi i1 [ %127, %cond.true87 ], [ false, %cond.false88 ] + br i1 %cond.res90, label %if_then85, label %if_end86 -if_block93: ; preds = %if_end87 - %126 = load i8, i8* %ch16 - %127 = icmp eq i8 %126, 123 - br i1 %127, label %if_then94, label %if_end95 +if_block92: ; preds = %if_then85 + %128 = load %SparrowScanner*, %SparrowScanner** %this.addr + %129 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %128, i32 0, i32 6 + %130 = load i1, i1* %129 + br i1 %130, label %if_then93, label %if_end94 -if_then94: ; preds = %if_block93 - %128 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %129 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %128, i32 0, i32 1 - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %129) - %130 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %130, i32 24) +if_then93: ; preds = %if_block92 + %131 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %131, i32 253) ret void -if_end95: ; preds = %dumy_block96, %if_block93 - br label %if_block97 +if_end94: ; preds = %dumy_block95, %if_block92 + br label %while_step + +dumy_block95: ; No predecessors! + br label %if_end94 dumy_block96: ; No predecessors! - br label %if_end95 + br label %if_end86 -if_block97: ; preds = %if_end95 - %131 = load i8, i8* %ch16 - %132 = icmp eq i8 %131, 123 - br i1 %132, label %if_then98, label %if_end99 +if_block97: ; preds = %if_end86 + %132 = load i8, i8* %ch16 + %133 = icmp eq i8 %132, 39 + br i1 %133, label %if_then98, label %if_end99 if_then98: ; preds = %if_block97 - %133 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %134 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %133, i32 0, i32 1 - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %134) - %135 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %135, i32 24) + %134 = load %TokenType*, %TokenType** %_result.addr + %135 = load %SparrowScanner*, %SparrowScanner** %this.addr + call void @parseString(%TokenType* %134, %SparrowScanner* %135, i8 39) ret void if_end99: ; preds = %dumy_block100, %if_block97 @@ -11525,15 +14078,13 @@ dumy_block100: ; No predecessors! if_block101: ; preds = %if_end99 %136 = load i8, i8* %ch16 - %137 = icmp eq i8 %136, 125 + %137 = icmp eq i8 %136, 34 br i1 %137, label %if_then102, label %if_end103 if_then102: ; preds = %if_block101 - %138 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %139 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %138, i32 0, i32 1 - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %139) - %140 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %140, i32 25) + %138 = load %TokenType*, %TokenType** %_result.addr + %139 = load %SparrowScanner*, %SparrowScanner** %this.addr + call void @parseString(%TokenType* %138, %SparrowScanner* %139, i8 34) ret void if_end103: ; preds = %dumy_block104, %if_block101 @@ -11543,54 +14094,45 @@ dumy_block104: ; No predecessors! br label %if_end103 if_block105: ; preds = %if_end103 - %141 = load i8, i8* %ch16 - %142 = icmp eq i8 %141, 91 - br i1 %142, label %if_then106, label %if_end107 + %140 = load i8, i8* %ch16 + %141 = icmp eq i8 %140, 60 + br i1 %141, label %cond.true108, label %cond.false109 -if_then106: ; preds = %if_block105 - %143 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %144 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %143, i32 0, i32 1 - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %144) - %145 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %145, i32 26) +if_then106: ; preds = %cond.end110 + %142 = load %TokenType*, %TokenType** %_result.addr + %143 = load %SparrowScanner*, %SparrowScanner** %this.addr + call void @parseStringNE(%TokenType* %142, %SparrowScanner* %143) ret void -if_end107: ; preds = %dumy_block108, %if_block105 - br label %if_block109 - -dumy_block108: ; No predecessors! - br label %if_end107 +if_end107: ; preds = %dumy_block112, %cond.end110 + br label %if_block113 -if_block109: ; preds = %if_end107 - %146 = load i8, i8* %ch16 - %147 = icmp eq i8 %146, 93 - br i1 %147, label %if_then110, label %if_end111 +cond.true108: ; preds = %if_block105 + %144 = load i8, i8* %ch217 + %145 = icmp eq i8 %144, 123 + br label %cond.end110 -if_then110: ; preds = %if_block109 - %148 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %149 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %148, i32 0, i32 1 - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %149) - %150 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %150, i32 27) - ret void +cond.false109: ; preds = %if_block105 + br label %cond.end110 -if_end111: ; preds = %dumy_block112, %if_block109 - br label %if_block113 +cond.end110: ; preds = %cond.false109, %cond.true108 + %cond.res111 = phi i1 [ %145, %cond.true108 ], [ false, %cond.false109 ] + br i1 %cond.res111, label %if_then106, label %if_end107 dumy_block112: ; No predecessors! - br label %if_end111 + br label %if_end107 -if_block113: ; preds = %if_end111 - %151 = load i8, i8* %ch16 - %152 = icmp eq i8 %151, 40 - br i1 %152, label %if_then114, label %if_end115 +if_block113: ; preds = %if_end107 + %146 = load i8, i8* %ch16 + %147 = icmp eq i8 %146, 123 + br i1 %147, label %if_then114, label %if_end115 if_then114: ; preds = %if_block113 - %153 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %154 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %153, i32 0, i32 1 - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %154) - %155 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %155, i32 28) + %148 = load %SparrowScanner*, %SparrowScanner** %this.addr + %149 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %148, i32 0, i32 2 + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %149) + %150 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %150, i32 24) ret void if_end115: ; preds = %dumy_block116, %if_block113 @@ -11600,16 +14142,16 @@ dumy_block116: ; No predecessors! br label %if_end115 if_block117: ; preds = %if_end115 - %156 = load i8, i8* %ch16 - %157 = icmp eq i8 %156, 41 - br i1 %157, label %if_then118, label %if_end119 + %151 = load i8, i8* %ch16 + %152 = icmp eq i8 %151, 123 + br i1 %152, label %if_then118, label %if_end119 if_then118: ; preds = %if_block117 - %158 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %159 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %158, i32 0, i32 1 - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %159) - %160 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %160, i32 29) + %153 = load %SparrowScanner*, %SparrowScanner** %this.addr + %154 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %153, i32 0, i32 2 + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %154) + %155 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %155, i32 24) ret void if_end119: ; preds = %dumy_block120, %if_block117 @@ -11619,16 +14161,16 @@ dumy_block120: ; No predecessors! br label %if_end119 if_block121: ; preds = %if_end119 - %161 = load i8, i8* %ch16 - %162 = icmp eq i8 %161, 59 - br i1 %162, label %if_then122, label %if_end123 + %156 = load i8, i8* %ch16 + %157 = icmp eq i8 %156, 125 + br i1 %157, label %if_then122, label %if_end123 if_then122: ; preds = %if_block121 - %163 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %164 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %163, i32 0, i32 1 - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %164) - %165 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %165, i32 31) + %158 = load %SparrowScanner*, %SparrowScanner** %this.addr + %159 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %158, i32 0, i32 2 + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %159) + %160 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %160, i32 25) ret void if_end123: ; preds = %dumy_block124, %if_block121 @@ -11638,16 +14180,16 @@ dumy_block124: ; No predecessors! br label %if_end123 if_block125: ; preds = %if_end123 - %166 = load i8, i8* %ch16 - %167 = icmp eq i8 %166, 44 - br i1 %167, label %if_then126, label %if_end127 + %161 = load i8, i8* %ch16 + %162 = icmp eq i8 %161, 91 + br i1 %162, label %if_then126, label %if_end127 if_then126: ; preds = %if_block125 - %168 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %169 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %168, i32 0, i32 1 - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %169) - %170 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %170, i32 32) + %163 = load %SparrowScanner*, %SparrowScanner** %this.addr + %164 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %163, i32 0, i32 2 + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %164) + %165 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %165, i32 26) ret void if_end127: ; preds = %dumy_block128, %if_block125 @@ -11657,16 +14199,16 @@ dumy_block128: ; No predecessors! br label %if_end127 if_block129: ; preds = %if_end127 - %171 = load i8, i8* %ch16 - %172 = icmp eq i8 %171, 96 - br i1 %172, label %if_then130, label %if_end131 + %166 = load i8, i8* %ch16 + %167 = icmp eq i8 %166, 93 + br i1 %167, label %if_then130, label %if_end131 if_then130: ; preds = %if_block129 - %173 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %174 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %173, i32 0, i32 1 - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %174) - %175 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %175, i32 34) + %168 = load %SparrowScanner*, %SparrowScanner** %this.addr + %169 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %168, i32 0, i32 2 + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %169) + %170 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %170, i32 27) ret void if_end131: ; preds = %dumy_block132, %if_block129 @@ -11676,256 +14218,351 @@ dumy_block132: ; No predecessors! br label %if_end131 if_block133: ; preds = %if_end131 + %171 = load i8, i8* %ch16 + %172 = icmp eq i8 %171, 40 + br i1 %172, label %if_then134, label %if_end135 + +if_then134: ; preds = %if_block133 + %173 = load %SparrowScanner*, %SparrowScanner** %this.addr + %174 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %173, i32 0, i32 2 + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %174) + %175 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %175, i32 28) + ret void + +if_end135: ; preds = %dumy_block136, %if_block133 + br label %if_block137 + +dumy_block136: ; No predecessors! + br label %if_end135 + +if_block137: ; preds = %if_end135 %176 = load i8, i8* %ch16 - %177 = icmp eq i8 %176, 58 - br i1 %177, label %cond.true136, label %cond.false137 + %177 = icmp eq i8 %176, 41 + br i1 %177, label %if_then138, label %if_end139 -if_then134: ; preds = %cond.end138 - %178 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %179 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %178, i32 0, i32 1 - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %179) +if_then138: ; preds = %if_block137 + %178 = load %SparrowScanner*, %SparrowScanner** %this.addr + %179 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %178, i32 0, i32 2 + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %179) %180 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %180, i32 30) + call void @ctor.417(%TokenType* %180, i32 29) ret void -if_end135: ; preds = %dumy_block140, %cond.end138 +if_end139: ; preds = %dumy_block140, %if_block137 br label %if_block141 -cond.true136: ; preds = %if_block133 - %181 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %182 = call i8 @peekChar(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %181) - %183 = call i1 @isOpChar(i8 %182) - %184 = xor i1 true, %183 - br label %cond.end138 +dumy_block140: ; No predecessors! + br label %if_end139 -cond.false137: ; preds = %if_block133 - br label %cond.end138 +if_block141: ; preds = %if_end139 + %181 = load i8, i8* %ch16 + %182 = icmp eq i8 %181, 59 + br i1 %182, label %if_then142, label %if_end143 -cond.end138: ; preds = %cond.false137, %cond.true136 - %cond.res139 = phi i1 [ %184, %cond.true136 ], [ false, %cond.false137 ] - br i1 %cond.res139, label %if_then134, label %if_end135 +if_then142: ; preds = %if_block141 + %183 = load %SparrowScanner*, %SparrowScanner** %this.addr + %184 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %183, i32 0, i32 2 + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %184) + %185 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %185, i32 31) + ret void -dumy_block140: ; No predecessors! - br label %if_end135 +if_end143: ; preds = %dumy_block144, %if_block141 + br label %if_block145 + +dumy_block144: ; No predecessors! + br label %if_end143 -if_block141: ; preds = %if_end135 - %185 = load i8, i8* %ch16 - %186 = icmp eq i8 %185, 61 - br i1 %186, label %cond.true144, label %cond.false145 +if_block145: ; preds = %if_end143 + %186 = load i8, i8* %ch16 + %187 = icmp eq i8 %186, 44 + br i1 %187, label %if_then146, label %if_end147 -if_then142: ; preds = %cond.end146 - %187 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %188 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %187, i32 0, i32 1 - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %188) - %189 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %189, i32 35) +if_then146: ; preds = %if_block145 + %188 = load %SparrowScanner*, %SparrowScanner** %this.addr + %189 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %188, i32 0, i32 2 + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %189) + %190 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %190, i32 32) ret void -if_end143: ; preds = %dumy_block148, %cond.end146 +if_end147: ; preds = %dumy_block148, %if_block145 br label %if_block149 -cond.true144: ; preds = %if_block141 - %190 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %191 = call i8 @peekChar(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %190) - %192 = call i1 @isOpChar(i8 %191) - %193 = xor i1 true, %192 - br label %cond.end146 +dumy_block148: ; No predecessors! + br label %if_end147 -cond.false145: ; preds = %if_block141 - br label %cond.end146 +if_block149: ; preds = %if_end147 + %191 = load i8, i8* %ch16 + %192 = icmp eq i8 %191, 96 + br i1 %192, label %if_then150, label %if_end151 -cond.end146: ; preds = %cond.false145, %cond.true144 - %cond.res147 = phi i1 [ %193, %cond.true144 ], [ false, %cond.false145 ] - br i1 %cond.res147, label %if_then142, label %if_end143 +if_then150: ; preds = %if_block149 + %193 = load %SparrowScanner*, %SparrowScanner** %this.addr + %194 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %193, i32 0, i32 2 + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %194) + %195 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %195, i32 34) + ret void -dumy_block148: ; No predecessors! - br label %if_end143 +if_end151: ; preds = %dumy_block152, %if_block149 + br label %if_block153 -if_block149: ; preds = %if_end143 - %194 = load i8, i8* %ch16 - %195 = call i1 @isOpCharDot(i8 %194) - br i1 %195, label %if_then150, label %if_end151 +dumy_block152: ; No predecessors! + br label %if_end151 -if_then150: ; preds = %if_block149 - br label %if_block152 +if_block153: ; preds = %if_end151 + %196 = load i8, i8* %ch16 + %197 = icmp eq i8 %196, 58 + br i1 %197, label %cond.true156, label %cond.false157 + +if_then154: ; preds = %cond.end158 + %198 = load %SparrowScanner*, %SparrowScanner** %this.addr + %199 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %198, i32 0, i32 2 + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %199) + %200 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %200, i32 30) + ret void + +if_end155: ; preds = %dumy_block160, %cond.end158 + br label %if_block161 + +cond.true156: ; preds = %if_block153 + %201 = load %SparrowScanner*, %SparrowScanner** %this.addr + %202 = call i8 @peekChar(%SparrowScanner* %201) + %203 = call i1 @isOpChar(i8 %202) + %204 = xor i1 true, %203 + br label %cond.end158 + +cond.false157: ; preds = %if_block153 + br label %cond.end158 + +cond.end158: ; preds = %cond.false157, %cond.true156 + %cond.res159 = phi i1 [ %204, %cond.true156 ], [ false, %cond.false157 ] + br i1 %cond.res159, label %if_then154, label %if_end155 + +dumy_block160: ; No predecessors! + br label %if_end155 + +if_block161: ; preds = %if_end155 + %205 = load i8, i8* %ch16 + %206 = icmp eq i8 %205, 61 + br i1 %206, label %cond.true164, label %cond.false165 + +if_then162: ; preds = %cond.end166 + %207 = load %SparrowScanner*, %SparrowScanner** %this.addr + %208 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %207, i32 0, i32 2 + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %208) + %209 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %209, i32 35) + ret void -if_end151: ; preds = %if_end154, %if_block149 - br label %if_block156 +if_end163: ; preds = %dumy_block168, %cond.end166 + br label %if_block169 -if_block152: ; preds = %if_then150 - %196 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %197 = call i1 @parseOperator(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %196) - br i1 %197, label %if_then153, label %if_end154 +cond.true164: ; preds = %if_block161 + %210 = load %SparrowScanner*, %SparrowScanner** %this.addr + %211 = call i8 @peekChar(%SparrowScanner* %210) + %212 = call i1 @isOpChar(i8 %211) + %213 = xor i1 true, %212 + br label %cond.end166 -if_then153: ; preds = %if_block152 - %198 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %198, i32 37) - ret void +cond.false165: ; preds = %if_block161 + br label %cond.end166 -if_end154: ; preds = %dumy_block155, %if_block152 - br label %if_end151 +cond.end166: ; preds = %cond.false165, %cond.true164 + %cond.res167 = phi i1 [ %213, %cond.true164 ], [ false, %cond.false165 ] + br i1 %cond.res167, label %if_then162, label %if_end163 -dumy_block155: ; No predecessors! - br label %if_end154 +dumy_block168: ; No predecessors! + br label %if_end163 -if_block156: ; preds = %if_end151 - %199 = load i8, i8* %ch16 - %200 = icmp eq i8 %199, 46 - br i1 %200, label %cond.true159, label %cond.false160 +if_block169: ; preds = %if_end163 + %214 = load i8, i8* %ch16 + %215 = call i1 @isOpCharDot(i8 %214) + br i1 %215, label %if_then170, label %if_end171 -if_then157: ; preds = %cond.end161 - %201 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %202 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %201, i32 0, i32 1 - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %202) - %203 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %203, i32 33) - ret void +if_then170: ; preds = %if_block169 + br label %if_block172 -if_end158: ; preds = %dumy_block163, %cond.end161 - br label %if_block164 +if_end171: ; preds = %if_end174, %if_block169 + br label %if_block176 -cond.true159: ; preds = %if_block156 - %204 = load i8, i8* %ch217 - %205 = call i1 @isDigit(i8 %204) - %206 = xor i1 true, %205 - br label %cond.end161 +if_block172: ; preds = %if_then170 + %216 = load %SparrowScanner*, %SparrowScanner** %this.addr + %217 = call i1 @parseOperator(%SparrowScanner* %216) + br i1 %217, label %if_then173, label %if_end174 -cond.false160: ; preds = %if_block156 - br label %cond.end161 +if_then173: ; preds = %if_block172 + %218 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %218, i32 37) + ret void -cond.end161: ; preds = %cond.false160, %cond.true159 - %cond.res162 = phi i1 [ %206, %cond.true159 ], [ false, %cond.false160 ] - br i1 %cond.res162, label %if_then157, label %if_end158 +if_end174: ; preds = %dumy_block175, %if_block172 + br label %if_end171 -dumy_block163: ; No predecessors! - br label %if_end158 +dumy_block175: ; No predecessors! + br label %if_end174 -if_block164: ; preds = %if_end158 - %207 = load i8, i8* %ch16 - %208 = call i1 @isAlpha(i8 %207) - br i1 %208, label %cond.true167, label %cond.false168 +if_block176: ; preds = %if_end171 + %219 = load i8, i8* %ch16 + %220 = icmp eq i8 %219, 46 + br i1 %220, label %cond.true179, label %cond.false180 -if_then165: ; preds = %cond.end169 - %209 = load %TokenType*, %TokenType** %_result.addr - %210 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - call void @parseIdentifer(%TokenType* %209, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %210) +if_then177: ; preds = %cond.end181 + %221 = load %SparrowScanner*, %SparrowScanner** %this.addr + %222 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %221, i32 0, i32 2 + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %222) + %223 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %223, i32 33) ret void -if_end166: ; preds = %dumy_block171, %cond.end169 - br label %if_block172 +if_end178: ; preds = %dumy_block183, %cond.end181 + br label %if_block184 -cond.true167: ; preds = %if_block164 - br label %cond.end169 - -cond.false168: ; preds = %if_block164 - %211 = load i8, i8* %ch16 - %212 = icmp eq i8 %211, 95 - br label %cond.end169 - -cond.end169: ; preds = %cond.false168, %cond.true167 - %cond.res170 = phi i1 [ true, %cond.true167 ], [ %212, %cond.false168 ] - br i1 %cond.res170, label %if_then165, label %if_end166 - -dumy_block171: ; No predecessors! - br label %if_end166 - -if_block172: ; preds = %if_end166 - %213 = load i8, i8* %ch16 - %214 = call i1 @isDigit(i8 %213) - br i1 %214, label %cond.true175, label %cond.false176 - -if_then173: ; preds = %cond.end177 - %215 = load %TokenType*, %TokenType** %_result.addr - %216 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - call void @parseNumeric(%TokenType* %215, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %216) - ret void - -if_end174: ; preds = %dumy_block179, %cond.end177 - %217 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %218 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef181, i32 0, i32 0 - %219 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef181, i32 0, i32 1 - store i8* getelementptr inbounds ([27 x i8], [27 x i8]* @str.40, i32 0, i32 0), i8** %218 - store i8* getelementptr inbounds ([27 x i8], [27 x i8]* @str.40, i32 0, i32 26), i8** %219 - %220 = load %StringRef, %StringRef* %tmp.StringRef181 - %221 = load i8, i8* %ch16 - %222 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef182, i32 0, i32 0 - %223 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef182, i32 0, i32 1 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.41, i32 0, i32 0), i8** %222 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.41, i32 0, i32 3), i8** %223 - %224 = load %StringRef, %StringRef* %tmp.StringRef182 - %225 = load i8, i8* %ch16 - call void @_ass_32_8z(i32* %tmp.this183, i8 %225) - %226 = load i32, i32* %tmp.this183 - call void @toString.372(%String* %"$tmpC180", %StringRef %220, i8 %221, %StringRef %224, i32 %226, i8 41) - call void @reportError.346(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %217, %String* %"$tmpC180") - call void @dtor.218(%String* %"$tmpC180") - %227 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %228 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %227, i32 0, i32 1 - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %228) - %229 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %229, i32 0) - ret void +cond.true179: ; preds = %if_block176 + %224 = load i8, i8* %ch217 + %225 = call i1 @isDigit(i8 %224) + %226 = xor i1 true, %225 + br label %cond.end181 -cond.true175: ; preds = %if_block172 - br label %cond.end177 +cond.false180: ; preds = %if_block176 + br label %cond.end181 -cond.false176: ; preds = %if_block172 - %230 = load i8, i8* %ch16 - %231 = icmp eq i8 %230, 46 - br label %cond.end177 +cond.end181: ; preds = %cond.false180, %cond.true179 + %cond.res182 = phi i1 [ %226, %cond.true179 ], [ false, %cond.false180 ] + br i1 %cond.res182, label %if_then177, label %if_end178 -cond.end177: ; preds = %cond.false176, %cond.true175 - %cond.res178 = phi i1 [ true, %cond.true175 ], [ %231, %cond.false176 ] - br i1 %cond.res178, label %if_then173, label %if_end174 +dumy_block183: ; No predecessors! + br label %if_end178 -dumy_block179: ; No predecessors! - br label %if_end174 +if_block184: ; preds = %if_end178 + %227 = load i8, i8* %ch16 + %228 = call i1 @isAlpha(i8 %227) + br i1 %228, label %cond.true187, label %cond.false188 -dumy_block184: ; No predecessors! +if_then185: ; preds = %cond.end189 + %229 = load %TokenType*, %TokenType** %_result.addr + %230 = load %SparrowScanner*, %SparrowScanner** %this.addr + call void @parseIdentifer(%TokenType* %229, %SparrowScanner* %230) + ret void + +if_end186: ; preds = %dumy_block191, %cond.end189 + br label %if_block192 + +cond.true187: ; preds = %if_block184 + br label %cond.end189 + +cond.false188: ; preds = %if_block184 + %231 = load i8, i8* %ch16 + %232 = icmp eq i8 %231, 95 + br label %cond.end189 + +cond.end189: ; preds = %cond.false188, %cond.true187 + %cond.res190 = phi i1 [ true, %cond.true187 ], [ %232, %cond.false188 ] + br i1 %cond.res190, label %if_then185, label %if_end186 + +dumy_block191: ; No predecessors! + br label %if_end186 + +if_block192: ; preds = %if_end186 + %233 = load i8, i8* %ch16 + %234 = call i1 @isDigit(i8 %233) + br i1 %234, label %cond.true195, label %cond.false196 + +if_then193: ; preds = %cond.end197 + %235 = load %TokenType*, %TokenType** %_result.addr + %236 = load %SparrowScanner*, %SparrowScanner** %this.addr + call void @parseNumeric(%TokenType* %235, %SparrowScanner* %236) + ret void + +if_end194: ; preds = %dumy_block199, %cond.end197 + %237 = load %SparrowScanner*, %SparrowScanner** %this.addr + %238 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef201, i32 0, i32 0 + %239 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef201, i32 0, i32 1 + store i8* getelementptr inbounds ([27 x i8], [27 x i8]* @str.37, i32 0, i32 0), i8** %238 + store i8* getelementptr inbounds ([27 x i8], [27 x i8]* @str.37, i32 0, i32 26), i8** %239 + %240 = load %StringRef, %StringRef* %tmp.StringRef201 + %241 = load i8, i8* %ch16 + %242 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef202, i32 0, i32 0 + %243 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef202, i32 0, i32 1 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.38, i32 0, i32 0), i8** %242 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.38, i32 0, i32 3), i8** %243 + %244 = load %StringRef, %StringRef* %tmp.StringRef202 + %245 = load i8, i8* %ch16 + call void @_ass_32_8z(i32* %tmp.this203, i8 %245) + %246 = load i32, i32* %tmp.this203 + call void @toString.478(%String* %"$tmpC200", %StringRef %240, i8 %241, %StringRef %244, i32 %246, i8 41) + call void @reportError(%SparrowScanner* %237, %String* %"$tmpC200") + call void @dtor.261(%String* %"$tmpC200") + %247 = load %SparrowScanner*, %SparrowScanner** %this.addr + %248 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %247, i32 0, i32 2 + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %248) + %249 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %249, i32 0) + ret void + +cond.true195: ; preds = %if_block192 + br label %cond.end197 + +cond.false196: ; preds = %if_block192 + %250 = load i8, i8* %ch16 + %251 = icmp eq i8 %250, 46 + br label %cond.end197 + +cond.end197: ; preds = %cond.false196, %cond.true195 + %cond.res198 = phi i1 [ true, %cond.true195 ], [ %251, %cond.false196 ] + br i1 %cond.res198, label %if_then193, label %if_end194 + +dumy_block199: ; No predecessors! + br label %if_end194 + +dumy_block204: ; No predecessors! br label %while_step } ; Function Attrs: inlinehint nounwind -define internal i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %r) #4 { - %r.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* - store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %r, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr +define internal i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %r) #4 { + %r.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* + store %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %r, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %r.addr br label %code code: ; preds = %0 - %1 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr - %2 = call i8 @front.315(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1) + %1 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %r.addr + %2 = call i8 @front.419(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %1) ret i8 %2 } ; Function Attrs: inlinehint nounwind -define internal i8 @front.315(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this) #4 { - %this.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* - store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr +define internal i8 @front.419(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %this) #4 { + %this.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* + store %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %this.addr br label %code code: ; preds = %0 - %1 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr - %2 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1, i32 0, i32 0 - %3 = call i8 @front.316(%"RangeWithLookahead[_CharSource]"* %2) + %1 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %this.addr + %2 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]", %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %1, i32 0, i32 0 + %3 = call i8 @front.420(%"RangeWithLookahead[BufferedCharSourceRange]"* %2) ret i8 %3 } ; Function Attrs: inlinehint nounwind -define internal i8 @front.316(%"RangeWithLookahead[_CharSource]"* %this) #4 { - %this.addr = alloca %"RangeWithLookahead[_CharSource]"* - store %"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"** %this.addr +define internal i8 @front.420(%"RangeWithLookahead[BufferedCharSourceRange]"* %this) #4 { + %this.addr = alloca %"RangeWithLookahead[BufferedCharSourceRange]"* + store %"RangeWithLookahead[BufferedCharSourceRange]"* %this, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr br label %code code: ; preds = %0 - %1 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %2 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %1, i32 0, i32 1 - %3 = call i8* @front.317(%"Vector[Char]"* %2) + %1 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %2 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %1, i32 0, i32 1 + %3 = call i8* @front.421(%"Vector[Char]"* %2) %4 = load i8, i8* %3 ret i8 %4 } ; Function Attrs: inlinehint nounwind -define internal i8* @front.317(%"Vector[Char]"* %this) #4 { +define internal i8* @front.421(%"Vector[Char]"* %this) #4 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr br label %code @@ -11939,26 +14576,26 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i8 @peekChar(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this) #4 { - %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* - store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr +define internal i8 @peekChar(%SparrowScanner* %this) #4 { + %this.addr = alloca %SparrowScanner* + store %SparrowScanner* %this, %SparrowScanner** %this.addr %tmp.this = alloca i32 br label %code code: ; preds = %0 - %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 1 - %3 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %2, i32 0, i32 0 + %1 = load %SparrowScanner*, %SparrowScanner** %this.addr + %2 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %1, i32 0, i32 2 + %3 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]", %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %2, i32 0, i32 0 store i32 1, i32* %tmp.this %4 = load i32, i32* %tmp.this - %5 = call i8 @peek(%"RangeWithLookahead[_CharSource]"* %3, i32 %4) + %5 = call i8 @peek(%"RangeWithLookahead[BufferedCharSourceRange]"* %3, i32 %4) ret i8 %5 } ; Function Attrs: inlinehint nounwind -define internal i8 @peek(%"RangeWithLookahead[_CharSource]"* %this, i32 %n) #4 { - %this.addr = alloca %"RangeWithLookahead[_CharSource]"* - store %"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"** %this.addr +define internal i8 @peek(%"RangeWithLookahead[BufferedCharSourceRange]"* %this, i32 %n) #4 { + %this.addr = alloca %"RangeWithLookahead[BufferedCharSourceRange]"* + store %"RangeWithLookahead[BufferedCharSourceRange]"* %this, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr %n.addr = alloca i32 store i32 %n, i32* %n.addr %tmp.this = alloca i64 @@ -11976,18 +14613,18 @@ while_block: ; preds = %while_step, %code %2 = zext i32 %1 to i64 store i64 %2, i64* %tmp.this %3 = load i64, i64* %tmp.this - %4 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %5 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %4, i32 0, i32 1 - %6 = call i64 @size.177(%"Vector[Char]"* %5) + %4 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %5 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %4, i32 0, i32 1 + %6 = call i64 @size.199(%"Vector[Char]"* %5) %7 = icmp sge i64 %3, %6 br i1 %7, label %cond.true, label %cond.false while_body: ; preds = %cond.end - %8 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %9 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %8, i32 0, i32 1 - %10 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %11 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %10, i32 0, i32 0 - %12 = call i8 @"post_++.297"(%_CharSource* %11) + %8 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %9 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %8, i32 0, i32 1 + %10 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %11 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %10, i32 0, i32 0 + %12 = call i8 @"post_++.398"(%BufferedCharSourceRange* %11) store i8 %12, i8* %"$tmpForRef" call void @"+="(%"Vector[Char]"* %9, i8* %"$tmpForRef") br label %while_step @@ -11999,9 +14636,9 @@ while_end: ; preds = %cond.end br label %if_block cond.true: ; preds = %while_block - %13 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %14 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %13, i32 0, i32 0 - %15 = call i1 @"pre_!!"(%_CharSource* %14) + %13 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %14 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %13, i32 0, i32 0 + %15 = call i1 @"pre_!!"(%BufferedCharSourceRange* %14) br label %cond.end cond.false: ; preds = %while_block @@ -12016,20 +14653,20 @@ if_block: ; preds = %while_end %17 = zext i32 %16 to i64 store i64 %17, i64* %tmp.this1 %18 = load i64, i64* %tmp.this1 - %19 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %20 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %19, i32 0, i32 1 - %21 = call i64 @size.177(%"Vector[Char]"* %20) + %19 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %20 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %19, i32 0, i32 1 + %21 = call i64 @size.199(%"Vector[Char]"* %20) %22 = icmp slt i64 %18, %21 br i1 %22, label %if_then, label %if_else if_then: ; preds = %if_block - %23 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %24 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %23, i32 0, i32 1 + %23 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %24 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %23, i32 0, i32 1 %25 = load i32, i32* %n.addr %26 = zext i32 %25 to i64 store i64 %26, i64* %tmp.this2 %27 = load i64, i64* %tmp.this2 - %28 = call i8* @"().318"(%"Vector[Char]"* %24, i64 %27) + %28 = call i8* @"().422"(%"Vector[Char]"* %24, i64 %27) %29 = load i8, i8* %28 ret i8 %29 @@ -12049,7 +14686,7 @@ dumy_block4: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal i8* @"().318"(%"Vector[Char]"* %this, i64 %index) #4 { +define internal i8* @"().422"(%"Vector[Char]"* %this, i64 %index) #4 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr %index.addr = alloca i64 @@ -12062,16 +14699,16 @@ code: ; preds = %0 %2 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %1, i32 0, i32 0 %3 = load %"RawPtr[Char]", %"RawPtr[Char]"* %2 %4 = load i64, i64* %index.addr - call void @advance(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %3, i64 %4) + call void @advance.201(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %3, i64 %4) %5 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC" %6 = call i8* @value(%"RawPtr[Char]" %5) ret i8* %6 } ; Function Attrs: inlinehint nounwind -define internal void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this) #4 { - %this.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* - store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr +define internal void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %this) #4 { + %this.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* + store %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %this, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %this.addr %tmp.this = alloca i32 %tmp.this1 = alloca i32 br label %code @@ -12080,15 +14717,15 @@ code: ; preds = %0 br label %if_block if_block: ; preds = %code - %1 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr - %2 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1, i32 0, i32 0 - %3 = call i8 @"pre_*.320"(%"RangeWithLookahead[_CharSource]"* %2) + %1 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %this.addr + %2 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]", %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %1, i32 0, i32 0 + %3 = call i8 @"pre_*.424"(%"RangeWithLookahead[BufferedCharSourceRange]"* %2) %4 = icmp eq i8 %3, 10 br i1 %4, label %if_then, label %if_else if_then: ; preds = %if_block - %5 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr - %6 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5, i32 0, i32 1 + %5 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %this.addr + %6 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]", %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %5, i32 0, i32 1 %7 = load %Location*, %Location** %6 store i32 1, i32* %tmp.this %8 = load i32, i32* %tmp.this @@ -12096,8 +14733,8 @@ if_then: ; preds = %if_block br label %if_end if_else: ; preds = %if_block - %9 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr - %10 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %9, i32 0, i32 1 + %9 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %this.addr + %10 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]", %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %9, i32 0, i32 1 %11 = load %Location*, %Location** %10 store i32 1, i32* %tmp.this1 %12 = load i32, i32* %tmp.this1 @@ -12105,21 +14742,21 @@ if_else: ; preds = %if_block br label %if_end if_end: ; preds = %if_else, %if_then - %13 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %this.addr - %14 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %13, i32 0, i32 0 - call void @popFront.321(%"RangeWithLookahead[_CharSource]"* %14) + %13 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %this.addr + %14 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]", %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %13, i32 0, i32 0 + call void @popFront.425(%"RangeWithLookahead[BufferedCharSourceRange]"* %14) ret void } ; Function Attrs: inlinehint nounwind -define internal i8 @"pre_*.320"(%"RangeWithLookahead[_CharSource]"* %r) #4 { - %r.addr = alloca %"RangeWithLookahead[_CharSource]"* - store %"RangeWithLookahead[_CharSource]"* %r, %"RangeWithLookahead[_CharSource]"** %r.addr +define internal i8 @"pre_*.424"(%"RangeWithLookahead[BufferedCharSourceRange]"* %r) #4 { + %r.addr = alloca %"RangeWithLookahead[BufferedCharSourceRange]"* + store %"RangeWithLookahead[BufferedCharSourceRange]"* %r, %"RangeWithLookahead[BufferedCharSourceRange]"** %r.addr br label %code code: ; preds = %0 - %1 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %r.addr - %2 = call i8 @front.316(%"RangeWithLookahead[_CharSource]"* %1) + %1 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %r.addr + %2 = call i8 @front.420(%"RangeWithLookahead[BufferedCharSourceRange]"* %1) ret i8 %2 } @@ -12175,33 +14812,33 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @popFront.321(%"RangeWithLookahead[_CharSource]"* %this) #4 { - %this.addr = alloca %"RangeWithLookahead[_CharSource]"* - store %"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"** %this.addr +define internal void @popFront.425(%"RangeWithLookahead[BufferedCharSourceRange]"* %this) #4 { + %this.addr = alloca %"RangeWithLookahead[BufferedCharSourceRange]"* + store %"RangeWithLookahead[BufferedCharSourceRange]"* %this, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr %tmp.this = alloca i64 %"$tmpForRef" = alloca i8 br label %code code: ; preds = %0 - %1 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %2 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %1, i32 0, i32 1 + %1 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %2 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %1, i32 0, i32 1 store i64 0, i64* %tmp.this %3 = load i64, i64* %tmp.this - call void @remove.322(%"Vector[Char]"* %2, i64 %3) + call void @remove.426(%"Vector[Char]"* %2, i64 %3) br label %if_block if_block: ; preds = %code - %4 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %5 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %4, i32 0, i32 1 - %6 = call i1 @isEmpty.312(%"Vector[Char]"* %5) + %4 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %5 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %4, i32 0, i32 1 + %6 = call i1 @isEmpty.416(%"Vector[Char]"* %5) br i1 %6, label %cond.true, label %cond.false if_then: ; preds = %cond.end - %7 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %8 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %7, i32 0, i32 1 - %9 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %10 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %9, i32 0, i32 0 - %11 = call i8 @"post_++.297"(%_CharSource* %10) + %7 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %8 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %7, i32 0, i32 1 + %9 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %10 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %9, i32 0, i32 0 + %11 = call i8 @"post_++.398"(%BufferedCharSourceRange* %10) store i8 %11, i8* %"$tmpForRef" call void @"+="(%"Vector[Char]"* %8, i8* %"$tmpForRef") br label %if_end @@ -12210,9 +14847,9 @@ if_end: ; preds = %if_then, %cond.end ret void cond.true: ; preds = %if_block - %12 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %13 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %12, i32 0, i32 0 - %14 = call i1 @"pre_!!"(%_CharSource* %13) + %12 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %13 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %12, i32 0, i32 0 + %14 = call i1 @"pre_!!"(%BufferedCharSourceRange* %13) br label %cond.end cond.false: ; preds = %if_block @@ -12224,7 +14861,7 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: inlinehint nounwind -define internal void @remove.322(%"Vector[Char]"* %this, i64 %index) #4 { +define internal void @remove.426(%"Vector[Char]"* %this, i64 %index) #4 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr %index.addr = alloca i64 @@ -12235,25 +14872,25 @@ define internal void @remove.322(%"Vector[Char]"* %this, i64 %index) #4 { code: ; preds = %0 %1 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - call void @all.323(%"ContiguousMemoryRange[Char]"* %r, %"Vector[Char]"* %1) + call void @all.427(%"ContiguousMemoryRange[Char]"* %r, %"Vector[Char]"* %1) %2 = load i64, i64* %index.addr - call void @popFront.325(%"ContiguousMemoryRange[Char]"* %r, i64 %2) + call void @popFront.429(%"ContiguousMemoryRange[Char]"* %r, i64 %2) %3 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %4 = call i64 @size.177(%"Vector[Char]"* %3) + %4 = call i64 @size.199(%"Vector[Char]"* %3) %5 = load i64, i64* %index.addr %6 = call i64 @_SizeType_opMinus(i64 %4, i64 %5) store i64 1, i64* %tmp.this %7 = load i64, i64* %tmp.this %8 = call i64 @_SizeType_opMinus(i64 %6, i64 %7) - call void @popBack.326(%"ContiguousMemoryRange[Char]"* %r, i64 %8) + call void @popBack.430(%"ContiguousMemoryRange[Char]"* %r, i64 %8) %9 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %10 = load %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %r - call void @remove.327(%"Vector[Char]"* %9, %"ContiguousMemoryRange[Char]" %10) + call void @remove.431(%"Vector[Char]"* %9, %"ContiguousMemoryRange[Char]" %10) ret void } ; Function Attrs: inlinehint nounwind -define internal void @all.323(%"ContiguousMemoryRange[Char]"* sret %_result, %"Vector[Char]"* %this) #4 { +define internal void @all.427(%"ContiguousMemoryRange[Char]"* sret %_result, %"Vector[Char]"* %this) #4 { %_result.addr = alloca %"ContiguousMemoryRange[Char]"* store %"ContiguousMemoryRange[Char]"* %_result, %"ContiguousMemoryRange[Char]"** %_result.addr %this.addr = alloca %"Vector[Char]"* @@ -12268,12 +14905,12 @@ code: ; preds = %0 %5 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %6 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %5, i32 0, i32 1 %7 = load %"RawPtr[Char]", %"RawPtr[Char]"* %6 - call void @ctor.324(%"ContiguousMemoryRange[Char]"* %1, %"RawPtr[Char]" %4, %"RawPtr[Char]" %7) + call void @ctor.428(%"ContiguousMemoryRange[Char]"* %1, %"RawPtr[Char]" %4, %"RawPtr[Char]" %7) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.324(%"ContiguousMemoryRange[Char]"* %this, %"RawPtr[Char]" %f_begin, %"RawPtr[Char]" %f_end) #3 { +define internal void @ctor.428(%"ContiguousMemoryRange[Char]"* %this, %"RawPtr[Char]" %f_begin, %"RawPtr[Char]" %f_end) #3 { %this.addr = alloca %"ContiguousMemoryRange[Char]"* store %"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"** %this.addr %f_begin.addr = alloca %"RawPtr[Char]" @@ -12285,15 +14922,15 @@ define internal void @ctor.324(%"ContiguousMemoryRange[Char]"* %this, %"RawPtr[C code: ; preds = %0 %1 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %this.addr %2 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %1, i32 0, i32 0 - call void @ctor.181(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %f_begin.addr) + call void @ctor.192(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %f_begin.addr) %3 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %this.addr %4 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %3, i32 0, i32 1 - call void @ctor.181(%"RawPtr[Char]"* %4, %"RawPtr[Char]"* %f_end.addr) + call void @ctor.192(%"RawPtr[Char]"* %4, %"RawPtr[Char]"* %f_end.addr) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @popFront.325(%"ContiguousMemoryRange[Char]"* %this, i64 %n) #3 { +define internal void @popFront.429(%"ContiguousMemoryRange[Char]"* %this, i64 %n) #3 { %this.addr = alloca %"ContiguousMemoryRange[Char]"* store %"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"** %this.addr %n.addr = alloca i64 @@ -12311,13 +14948,13 @@ code: ; preds = %0 %6 = load i64, i64* %n.addr store i64 %6, i64* %tmp.this %7 = load i64, i64* %tmp.this - call void @advance.187(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %5, i64 %7) - call void @"=.178"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %"$tmpC") + call void @advance(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %5, i64 %7) + call void @"=.200"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %"$tmpC") ret void } ; Function Attrs: alwaysinline nounwind -define internal void @popBack.326(%"ContiguousMemoryRange[Char]"* %this, i64 %n) #3 { +define internal void @popBack.430(%"ContiguousMemoryRange[Char]"* %this, i64 %n) #3 { %this.addr = alloca %"ContiguousMemoryRange[Char]"* store %"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"** %this.addr %n.addr = alloca i64 @@ -12336,13 +14973,13 @@ code: ; preds = %0 store i64 %6, i64* %tmp.this %7 = load i64, i64* %tmp.this %8 = sub i64 0, %7 - call void @advance.187(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %5, i64 %8) - call void @"=.178"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %"$tmpC") + call void @advance(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %5, i64 %8) + call void @"=.200"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %"$tmpC") ret void } ; Function Attrs: inlinehint nounwind -define internal void @remove.327(%"Vector[Char]"* %this, %"ContiguousMemoryRange[Char]" %range) #4 { +define internal void @remove.431(%"Vector[Char]"* %this, %"ContiguousMemoryRange[Char]" %range) #4 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr %range.addr = alloca %"ContiguousMemoryRange[Char]" @@ -12360,23 +14997,23 @@ code: ; preds = %0 call void @frontPtr(%"RawPtr[Char]"* %rBegin, %"ContiguousMemoryRange[Char]" %1) %2 = load %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %range.addr call void @backPtr(%"RawPtr[Char]"* %rEnd, %"ContiguousMemoryRange[Char]" %2) - call void @ctor.328(%"ContiguousMemoryRange[Char]"* %"$rangeVar", %"ContiguousMemoryRange[Char]"* %range.addr) + call void @ctor.432(%"ContiguousMemoryRange[Char]"* %"$rangeVar", %"ContiguousMemoryRange[Char]"* %range.addr) br label %while_block while_block: ; preds = %while_step, %code %3 = load %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %"$rangeVar" - %4 = call i1 @isEmpty.329(%"ContiguousMemoryRange[Char]" %3) + %4 = call i1 @isEmpty.433(%"ContiguousMemoryRange[Char]" %3) %5 = xor i1 true, %4 br i1 %5, label %while_body, label %while_end while_body: ; preds = %while_block %6 = load %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %"$rangeVar" - %7 = call i8* @front.330(%"ContiguousMemoryRange[Char]" %6) + %7 = call i8* @front.434(%"ContiguousMemoryRange[Char]" %6) store i8* %7, i8** %el br label %while_step while_step: ; preds = %while_body - call void @popFront.331(%"ContiguousMemoryRange[Char]"* %"$rangeVar") + call void @popFront.435(%"ContiguousMemoryRange[Char]"* %"$rangeVar") br label %while_block while_end: ; preds = %while_block @@ -12385,7 +15022,7 @@ while_end: ; preds = %while_block while_block1: ; preds = %while_step3, %while_end %8 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %9 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %8, i32 0, i32 1 - %10 = call i1 @"==.225"(%"RawPtr[Char]"* %rEnd, %"RawPtr[Char]"* %9) + %10 = call i1 @"==.268"(%"RawPtr[Char]"* %rEnd, %"RawPtr[Char]"* %9) %11 = xor i1 true, %10 br i1 %11, label %while_body2, label %while_end4 @@ -12400,11 +15037,11 @@ while_body2: ; preds = %while_block1 %18 = call i8* @value(%"RawPtr[Char]" %17) %19 = load i8, i8* %18 %20 = load %"RawPtr[Char]", %"RawPtr[Char]"* %rBegin - call void @advance.226(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %20) - call void @"=.178"(%"RawPtr[Char]"* %rBegin, %"RawPtr[Char]"* %"$tmpC") + call void @advance.269(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %20) + call void @"=.200"(%"RawPtr[Char]"* %rBegin, %"RawPtr[Char]"* %"$tmpC") %21 = load %"RawPtr[Char]", %"RawPtr[Char]"* %rEnd - call void @advance.226(%"RawPtr[Char]"* %"$tmpC5", %"RawPtr[Char]" %21) - call void @"=.178"(%"RawPtr[Char]"* %rEnd, %"RawPtr[Char]"* %"$tmpC5") + call void @advance.269(%"RawPtr[Char]"* %"$tmpC5", %"RawPtr[Char]" %21) + call void @"=.200"(%"RawPtr[Char]"* %rEnd, %"RawPtr[Char]"* %"$tmpC5") br label %while_step3 while_step3: ; preds = %while_body2 @@ -12413,7 +15050,7 @@ while_step3: ; preds = %while_body2 while_end4: ; preds = %while_block1 %22 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr %23 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %22, i32 0, i32 1 - call void @"=.178"(%"RawPtr[Char]"* %23, %"RawPtr[Char]"* %rBegin) + call void @"=.200"(%"RawPtr[Char]"* %23, %"RawPtr[Char]"* %rBegin) ret void } @@ -12428,7 +15065,7 @@ define internal void @frontPtr(%"RawPtr[Char]"* sret %_result, %"ContiguousMemor code: ; preds = %0 %1 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %_result.addr %2 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %this.addr, i32 0, i32 0 - call void @ctor.181(%"RawPtr[Char]"* %1, %"RawPtr[Char]"* %2) + call void @ctor.192(%"RawPtr[Char]"* %1, %"RawPtr[Char]"* %2) ret void } @@ -12443,12 +15080,12 @@ define internal void @backPtr(%"RawPtr[Char]"* sret %_result, %"ContiguousMemory code: ; preds = %0 %1 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %_result.addr %2 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %this.addr, i32 0, i32 1 - call void @ctor.181(%"RawPtr[Char]"* %1, %"RawPtr[Char]"* %2) + call void @ctor.192(%"RawPtr[Char]"* %1, %"RawPtr[Char]"* %2) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.328(%"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"* %other) #3 { +define internal void @ctor.432(%"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"* %other) #3 { %this.addr = alloca %"ContiguousMemoryRange[Char]"* store %"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"** %this.addr %other.addr = alloca %"ContiguousMemoryRange[Char]"* @@ -12460,17 +15097,17 @@ code: ; preds = %0 %2 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %1, i32 0, i32 0 %3 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %other.addr %4 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %3, i32 0, i32 0 - call void @ctor.181(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) + call void @ctor.192(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) %5 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %this.addr %6 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %5, i32 0, i32 1 %7 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %other.addr %8 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %7, i32 0, i32 1 - call void @ctor.181(%"RawPtr[Char]"* %6, %"RawPtr[Char]"* %8) + call void @ctor.192(%"RawPtr[Char]"* %6, %"RawPtr[Char]"* %8) ret void } ; Function Attrs: inlinehint nounwind -define internal i1 @isEmpty.329(%"ContiguousMemoryRange[Char]" %this) #4 { +define internal i1 @isEmpty.433(%"ContiguousMemoryRange[Char]" %this) #4 { %this.addr = alloca %"ContiguousMemoryRange[Char]" store %"ContiguousMemoryRange[Char]" %this, %"ContiguousMemoryRange[Char]"* %this.addr %tmp.this = alloca i64 @@ -12489,7 +15126,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i8* @front.330(%"ContiguousMemoryRange[Char]" %this) #4 { +define internal i8* @front.434(%"ContiguousMemoryRange[Char]" %this) #4 { %this.addr = alloca %"ContiguousMemoryRange[Char]" store %"ContiguousMemoryRange[Char]" %this, %"ContiguousMemoryRange[Char]"* %this.addr br label %code @@ -12502,7 +15139,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @popFront.331(%"ContiguousMemoryRange[Char]"* %this) #3 { +define internal void @popFront.435(%"ContiguousMemoryRange[Char]"* %this) #3 { %this.addr = alloca %"ContiguousMemoryRange[Char]"* store %"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"** %this.addr %"$tmpC" = alloca %"RawPtr[Char]" @@ -12514,15 +15151,15 @@ code: ; preds = %0 %3 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %this.addr %4 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %3, i32 0, i32 0 %5 = load %"RawPtr[Char]", %"RawPtr[Char]"* %4 - call void @advance.226(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %5) - call void @"=.178"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %"$tmpC") + call void @advance.269(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %5) + call void @"=.200"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %"$tmpC") ret void } ; Function Attrs: inlinehint nounwind -define internal void @advanceIf(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %range, %"$lambdaEnclosureData" %pred) #4 { - %range.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* - store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %range, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr +define internal void @advanceIf(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %range, %"$lambdaEnclosureData" %pred) #4 { + %range.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* + store %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %range, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %range.addr %pred.addr = alloca %"$lambdaEnclosureData" store %"$lambdaEnclosureData" %pred, %"$lambdaEnclosureData"* %pred.addr br label %code @@ -12531,14 +15168,14 @@ code: ; preds = %0 br label %while_block while_block: ; preds = %while_step, %code - %1 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr - %2 = call i1 @isEmpty.310(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1) + %1 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %range.addr + %2 = call i1 @isEmpty.414(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %1) %3 = xor i1 true, %2 br i1 %3, label %cond.true, label %cond.false while_body: ; preds = %cond.end - %4 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %4) + %4 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %range.addr + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %4) br label %while_step while_step: ; preds = %while_body @@ -12548,9 +15185,9 @@ while_end: ; preds = %cond.end ret void cond.true: ; preds = %while_block - %5 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr - %6 = call i8 @front.315(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5) - %7 = call i1 @"().332"(%"$lambdaEnclosureData"* %pred.addr, i8 %6) + %5 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %range.addr + %6 = call i8 @front.419(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %5) + %7 = call i1 @"().436"(%"$lambdaEnclosureData"* %pred.addr, i8 %6) br label %cond.end cond.false: ; preds = %while_block @@ -12562,7 +15199,7 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: alwaysinline nounwind -define internal i1 @"().332"(%"$lambdaEnclosureData"* %this, i8 %c) #3 { +define internal i1 @"().436"(%"$lambdaEnclosureData"* %this, i8 %c) #3 { %this.addr = alloca %"$lambdaEnclosureData"* store %"$lambdaEnclosureData"* %this, %"$lambdaEnclosureData"** %this.addr %c.addr = alloca i8 @@ -12576,7 +15213,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.333(%"$lambdaEnclosureData"* %this) #3 { +define internal void @ctor.437(%"$lambdaEnclosureData"* %this) #3 { %this.addr = alloca %"$lambdaEnclosureData"* store %"$lambdaEnclosureData"* %this, %"$lambdaEnclosureData"** %this.addr br label %code @@ -12586,7 +15223,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.334(%"$lambdaEnclosureData"* %this, %"$lambdaEnclosureData"* %other) #3 { +define internal void @ctor.438(%"$lambdaEnclosureData"* %this, %"$lambdaEnclosureData"* %other) #3 { %this.addr = alloca %"$lambdaEnclosureData"* store %"$lambdaEnclosureData"* %this, %"$lambdaEnclosureData"** %this.addr %other.addr = alloca %"$lambdaEnclosureData"* @@ -12598,7 +15235,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.335(%"$lambdaEnclosureData"* %this) #3 { +define internal void @dtor.439(%"$lambdaEnclosureData"* %this) #3 { %this.addr = alloca %"$lambdaEnclosureData"* store %"$lambdaEnclosureData"* %this, %"$lambdaEnclosureData"** %this.addr br label %code @@ -12608,7 +15245,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.336"(%"$lambdaEnclosureData"* %this, %"$lambdaEnclosureData"* %other) #3 { +define internal void @"=.440"(%"$lambdaEnclosureData"* %this, %"$lambdaEnclosureData"* %other) #3 { %this.addr = alloca %"$lambdaEnclosureData"* store %"$lambdaEnclosureData"* %this, %"$lambdaEnclosureData"** %this.addr %other.addr = alloca %"$lambdaEnclosureData"* @@ -12620,7 +15257,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.337"(%"$lambdaEnclosureData"* %this, %"$lambdaEnclosureData"* %other) #3 { +define internal i1 @"==.441"(%"$lambdaEnclosureData"* %this, %"$lambdaEnclosureData"* %other) #3 { %this.addr = alloca %"$lambdaEnclosureData"* store %"$lambdaEnclosureData"* %this, %"$lambdaEnclosureData"** %this.addr %other.addr = alloca %"$lambdaEnclosureData"* @@ -12632,22 +15269,22 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i1 @"pre_!!.338"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %r) #4 { - %r.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* - store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %r, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr +define internal i1 @"pre_!!.442"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %r) #4 { + %r.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* + store %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %r, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %r.addr br label %code code: ; preds = %0 - %1 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr - %2 = call i1 @isEmpty.310(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1) + %1 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %r.addr + %2 = call i1 @isEmpty.414(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %1) %3 = xor i1 true, %2 ret i1 %3 } ; Function Attrs: inlinehint nounwind -define internal void @advanceIf.339(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %range, %"$lambdaEnclosureData.0" %pred) #4 { - %range.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* - store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %range, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr +define internal void @advanceIf.443(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %range, %"$lambdaEnclosureData.0" %pred) #4 { + %range.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* + store %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %range, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %range.addr %pred.addr = alloca %"$lambdaEnclosureData.0" store %"$lambdaEnclosureData.0" %pred, %"$lambdaEnclosureData.0"* %pred.addr br label %code @@ -12656,14 +15293,14 @@ code: ; preds = %0 br label %while_block while_block: ; preds = %while_step, %code - %1 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr - %2 = call i1 @isEmpty.310(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1) + %1 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %range.addr + %2 = call i1 @isEmpty.414(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %1) %3 = xor i1 true, %2 br i1 %3, label %cond.true, label %cond.false while_body: ; preds = %cond.end - %4 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %4) + %4 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %range.addr + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %4) br label %while_step while_step: ; preds = %while_body @@ -12673,9 +15310,9 @@ while_end: ; preds = %cond.end ret void cond.true: ; preds = %while_block - %5 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr - %6 = call i8 @front.315(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5) - %7 = call i1 @"().340"(%"$lambdaEnclosureData.0"* %pred.addr, i8 %6) + %5 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %range.addr + %6 = call i8 @front.419(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %5) + %7 = call i1 @"().444"(%"$lambdaEnclosureData.0"* %pred.addr, i8 %6) br label %cond.end cond.false: ; preds = %while_block @@ -12687,7 +15324,7 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: alwaysinline nounwind -define internal i1 @"().340"(%"$lambdaEnclosureData.0"* %this, i8 %c) #3 { +define internal i1 @"().444"(%"$lambdaEnclosureData.0"* %this, i8 %c) #3 { %this.addr = alloca %"$lambdaEnclosureData.0"* store %"$lambdaEnclosureData.0"* %this, %"$lambdaEnclosureData.0"** %this.addr %c.addr = alloca i8 @@ -12701,7 +15338,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.341(%"$lambdaEnclosureData.0"* %this) #3 { +define internal void @ctor.445(%"$lambdaEnclosureData.0"* %this) #3 { %this.addr = alloca %"$lambdaEnclosureData.0"* store %"$lambdaEnclosureData.0"* %this, %"$lambdaEnclosureData.0"** %this.addr br label %code @@ -12711,7 +15348,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.342(%"$lambdaEnclosureData.0"* %this, %"$lambdaEnclosureData.0"* %other) #3 { +define internal void @ctor.446(%"$lambdaEnclosureData.0"* %this, %"$lambdaEnclosureData.0"* %other) #3 { %this.addr = alloca %"$lambdaEnclosureData.0"* store %"$lambdaEnclosureData.0"* %this, %"$lambdaEnclosureData.0"** %this.addr %other.addr = alloca %"$lambdaEnclosureData.0"* @@ -12723,7 +15360,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.343(%"$lambdaEnclosureData.0"* %this) #3 { +define internal void @dtor.447(%"$lambdaEnclosureData.0"* %this) #3 { %this.addr = alloca %"$lambdaEnclosureData.0"* store %"$lambdaEnclosureData.0"* %this, %"$lambdaEnclosureData.0"** %this.addr br label %code @@ -12733,7 +15370,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.344"(%"$lambdaEnclosureData.0"* %this, %"$lambdaEnclosureData.0"* %other) #3 { +define internal void @"=.448"(%"$lambdaEnclosureData.0"* %this, %"$lambdaEnclosureData.0"* %other) #3 { %this.addr = alloca %"$lambdaEnclosureData.0"* store %"$lambdaEnclosureData.0"* %this, %"$lambdaEnclosureData.0"** %this.addr %other.addr = alloca %"$lambdaEnclosureData.0"* @@ -12745,7 +15382,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.345"(%"$lambdaEnclosureData.0"* %this, %"$lambdaEnclosureData.0"* %other) #3 { +define internal i1 @"==.449"(%"$lambdaEnclosureData.0"* %this, %"$lambdaEnclosureData.0"* %other) #3 { %this.addr = alloca %"$lambdaEnclosureData.0"* store %"$lambdaEnclosureData.0"* %this, %"$lambdaEnclosureData.0"** %this.addr %other.addr = alloca %"$lambdaEnclosureData.0"* @@ -12757,53 +15394,331 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @reportError.346(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %String* %msg) #4 { - %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* - store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr +define internal void @reportError(%SparrowScanner* %this, %String* %msg) #4 { + %this.addr = alloca %SparrowScanner* + store %SparrowScanner* %this, %SparrowScanner** %this.addr %msg.addr = alloca %String* store %String* %msg, %String** %msg.addr br label %code code: ; preds = %0 - %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 4 - %3 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %4 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %3, i32 0, i32 1 - %5 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %4, i32 0, i32 1 - %6 = load %Location*, %Location** %5 - %7 = load %Location, %Location* %6 + %1 = load %SparrowScanner*, %SparrowScanner** %this.addr + %2 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %1, i32 0, i32 5 + %3 = load %ErrorReporter, %ErrorReporter* %2 + %4 = load %SparrowScanner*, %SparrowScanner** %this.addr + %5 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %4, i32 0, i32 2 + %6 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]", %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %5, i32 0, i32 1 + %7 = load %Location*, %Location** %6 %8 = load %String*, %String** %msg.addr - call void @reportError(%ExternalErrorReporter* %2, %Location %7, %String* %8) + call void @reportError.450(%ErrorReporter %3, %Location* %7, %String* %8) + ret void +} + +; Function Attrs: inlinehint nounwind +define internal void @reportError.450(%ErrorReporter %obj, %Location* %loc, %String* %msg) #4 { + %obj.addr = alloca %ErrorReporter + store %ErrorReporter %obj, %ErrorReporter* %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %msg.addr = alloca %String* + store %String* %msg, %String** %msg.addr + br label %code + +code: ; preds = %0 + %1 = getelementptr inbounds %ErrorReporter, %ErrorReporter* %obj.addr, i32 0, i32 1 + %2 = getelementptr inbounds %ErrorReporter, %ErrorReporter* %obj.addr, i32 0, i32 0 + %3 = load %UntypedPtr, %UntypedPtr* %2 + %4 = load %Location*, %Location** %loc.addr + %5 = load %String*, %String** %msg.addr + %6 = call %StringRef @asStringRef(%String* %5) + call void @"().451"(%"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* %1, %UntypedPtr %3, %Location* %4, %StringRef %6) + ret void +} + +; Function Attrs: inlinehint nounwind +define internal void @"().451"(%"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* %this, %UntypedPtr %p1, %Location* %p2, %StringRef %p3) #4 { + %this.addr = alloca %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* + store %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* %this, %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"** %this.addr + %p1.addr = alloca %UntypedPtr + store %UntypedPtr %p1, %UntypedPtr* %p1.addr + %p2.addr = alloca %Location* + store %Location* %p2, %Location** %p2.addr + %p3.addr = alloca %StringRef + store %StringRef %p3, %StringRef* %p3.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"*, %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"** %this.addr + %2 = load %UntypedPtr, %UntypedPtr* %p1.addr + %3 = load %Location*, %Location** %p2.addr + %4 = load %StringRef, %StringRef* %p3.addr + %5 = bitcast %"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* %1 to void (%UntypedPtr, %Location*, %StringRef)** + %6 = load void (%UntypedPtr, %Location*, %StringRef)*, void (%UntypedPtr, %Location*, %StringRef)** %5 + call void %6(%UntypedPtr %2, %Location* %3, %StringRef %4) + ret void +} + +; Function Attrs: inlinehint nounwind +define internal %StringRef @asStringRef(%String* %this) #4 { + %this.addr = alloca %String* + store %String* %this, %String** %this.addr + %tmp.this = alloca %StringRef + br label %code + +code: ; preds = %0 + %1 = load %String*, %String** %this.addr + %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 0 + %3 = load %"RawPtr[Char]", %"RawPtr[Char]"* %2 + %4 = call i8* @bytePtr(%"RawPtr[Char]" %3) + %5 = load %String*, %String** %this.addr + %6 = getelementptr inbounds %String, %String* %5, i32 0, i32 1 + %7 = load %"RawPtr[Char]", %"RawPtr[Char]"* %6 + %8 = call i8* @bytePtr(%"RawPtr[Char]" %7) + call void @ctor.57(%StringRef* %tmp.this, i8* %4, i8* %8) + %9 = load %StringRef, %StringRef* %tmp.this + ret %StringRef %9 +} + +; Function Attrs: inlinehint nounwind +define internal void @toString(%String* sret %_result, %StringRef %a1) #4 { + %_result.addr = alloca %String* + store %String* %_result, %String** %_result.addr + %a1.addr = alloca %StringRef + store %StringRef %a1, %StringRef* %a1.addr + %s = alloca %StringOutputStream + br label %code + +code: ; preds = %0 + call void @ctor.452(%StringOutputStream* %s) + %1 = call %StringOutputStream* @"<<"(%StringOutputStream* %s, %StringRef* %a1.addr) + %2 = load %String*, %String** %_result.addr + %3 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %s, i32 0, i32 0 + call void @ctor.189(%String* %2, %String* %3) + call void @dtor.454(%StringOutputStream* %s) + ret void + +dumy_block: ; No predecessors! + call void @dtor.454(%StringOutputStream* %s) + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.452(%StringOutputStream* %this) #3 { + %this.addr = alloca %StringOutputStream* + store %StringOutputStream* %this, %StringOutputStream** %this.addr + br label %code + +code: ; preds = %0 + %1 = load %StringOutputStream*, %StringOutputStream** %this.addr + %2 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %1, i32 0, i32 0 + call void @ctor.137(%String* %2) + ret void +} + +; Function Attrs: inlinehint nounwind +define internal %StringOutputStream* @"<<"(%StringOutputStream* %s, %StringRef* %x) #4 { + %s.addr = alloca %StringOutputStream* + store %StringOutputStream* %s, %StringOutputStream** %s.addr + %x.addr = alloca %StringRef* + store %StringRef* %x, %StringRef** %x.addr + br label %code + +code: ; preds = %0 + %1 = load %StringOutputStream*, %StringOutputStream** %s.addr + %2 = load %StringRef*, %StringRef** %x.addr + %3 = load %StringRef, %StringRef* %2 + call void @"<<<.453"(%StringOutputStream* %1, %StringRef %3) + %4 = load %StringOutputStream*, %StringOutputStream** %s.addr + ret %StringOutputStream* %4 +} + +; Function Attrs: alwaysinline nounwind +define internal void @"<<<.453"(%StringOutputStream* %this, %StringRef %s) #3 { + %this.addr = alloca %StringOutputStream* + store %StringOutputStream* %this, %StringOutputStream** %this.addr + %s.addr = alloca %StringRef + store %StringRef %s, %StringRef* %s.addr + br label %code + +code: ; preds = %0 + %1 = load %StringOutputStream*, %StringOutputStream** %this.addr + %2 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %1, i32 0, i32 0 + %3 = load %StringRef, %StringRef* %s.addr + call void @append(%String* %2, %StringRef %3) + ret void +} + +; Function Attrs: inlinehint nounwind +define internal void @append(%String* %this, %StringRef %range) #4 { + %this.addr = alloca %String* + store %String* %this, %String** %this.addr + %range.addr = alloca %StringRef + store %StringRef %range, %StringRef* %range.addr + %tmp.this = alloca %StringRef + br label %code + +code: ; preds = %0 + %1 = load %String*, %String** %this.addr + %2 = load %StringRef, %StringRef* %range.addr + %3 = load %String*, %String** %this.addr + %4 = getelementptr inbounds %String, %String* %3, i32 0, i32 1 + %5 = load %"RawPtr[Char]", %"RawPtr[Char]"* %4 + %6 = call i8* @bytePtr(%"RawPtr[Char]" %5) + %7 = load %String*, %String** %this.addr + %8 = getelementptr inbounds %String, %String* %7, i32 0, i32 1 + %9 = load %"RawPtr[Char]", %"RawPtr[Char]"* %8 + %10 = call i8* @bytePtr(%"RawPtr[Char]" %9) + call void @ctor.57(%StringRef* %tmp.this, i8* %6, i8* %10) + %11 = load %StringRef, %StringRef* %tmp.this + call void @insertBefore(%String* %1, %StringRef %2, %StringRef %11) + ret void +} + +; Function Attrs: inlinehint nounwind +define internal void @insertBefore(%String* %this, %StringRef %range, %StringRef %pos) #4 { + %this.addr = alloca %String* + store %String* %this, %String** %this.addr + %range.addr = alloca %StringRef + store %StringRef %range, %StringRef* %range.addr + %pos.addr = alloca %StringRef + store %StringRef %pos, %StringRef* %pos.addr + %n = alloca i64 + %index = alloca i64 + %"$tmpC" = alloca %"RawPtr[Char]" + %p = alloca %"RawPtr[Char]" + %tmp.this = alloca i64 + %q = alloca %"RawPtr[Char]" + %tmp.this1 = alloca i64 + %"$tmpC2" = alloca %"RawPtr[Char]" + %tmp.this3 = alloca i64 + %"$tmpC4" = alloca %"RawPtr[Char]" + %tmp.this5 = alloca i64 + %"$tmpC6" = alloca %"RawPtr[Char]" + %"$tmpC11" = alloca %"RawPtr[Char]" + %"$tmpC12" = alloca %"RawPtr[Char]" + %tmp.this13 = alloca i64 + br label %code + +code: ; preds = %0 + %1 = call i64 @size(%StringRef* %range.addr) + store i64 %1, i64* %n + %2 = load %StringRef, %StringRef* %pos.addr + call void @_frontPtr(%"RawPtr[Char]"* %"$tmpC", %StringRef %2) + %3 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC" + %4 = load %String*, %String** %this.addr + %5 = getelementptr inbounds %String, %String* %4, i32 0, i32 0 + %6 = load %"RawPtr[Char]", %"RawPtr[Char]"* %5 + %7 = call i64 @diff(%"RawPtr[Char]" %3, %"RawPtr[Char]" %6) + store i64 %7, i64* %index + %8 = load %String*, %String** %this.addr + %9 = load %String*, %String** %this.addr + %10 = call i64 @size.190(%String* %9) + %11 = load i64, i64* %n + %12 = add i64 %10, %11 + call void @reserve(%String* %8, i64 %12) + %13 = load %String*, %String** %this.addr + %14 = getelementptr inbounds %String, %String* %13, i32 0, i32 1 + %15 = load %"RawPtr[Char]", %"RawPtr[Char]"* %14 + store i64 -1, i64* %tmp.this + %16 = load i64, i64* %tmp.this + call void @advance(%"RawPtr[Char]"* %p, %"RawPtr[Char]" %15, i64 %16) + %17 = load %String*, %String** %this.addr + %18 = getelementptr inbounds %String, %String* %17, i32 0, i32 0 + %19 = load %"RawPtr[Char]", %"RawPtr[Char]"* %18 + %20 = load i64, i64* %index + store i64 1, i64* %tmp.this1 + %21 = load i64, i64* %tmp.this1 + %22 = call i64 @_DiffType_opMinus(i64 %20, i64 %21) + call void @advance(%"RawPtr[Char]"* %q, %"RawPtr[Char]" %19, i64 %22) + br label %while_block + +while_block: ; preds = %while_step, %code + %23 = call i1 @"==.268"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %q) + %24 = xor i1 true, %23 + br i1 %24, label %while_body, label %while_end + +while_body: ; preds = %while_block + %25 = load %"RawPtr[Char]", %"RawPtr[Char]"* %p + %26 = call i8* @value(%"RawPtr[Char]" %25) + %27 = load i8, i8* %26 + %28 = load %"RawPtr[Char]", %"RawPtr[Char]"* %p + %29 = load i64, i64* %n + store i64 %29, i64* %tmp.this3 + %30 = load i64, i64* %tmp.this3 + call void @advance(%"RawPtr[Char]"* %"$tmpC2", %"RawPtr[Char]" %28, i64 %30) + %31 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC2" + %32 = call i8* @value(%"RawPtr[Char]" %31) + store i8 %27, i8* %32 + %33 = load %"RawPtr[Char]", %"RawPtr[Char]"* %p + %34 = call i8* @value(%"RawPtr[Char]" %33) + %35 = load i8, i8* %34 + br label %while_step + +while_step: ; preds = %while_body + %36 = load %"RawPtr[Char]", %"RawPtr[Char]"* %p + store i64 -1, i64* %tmp.this5 + %37 = load i64, i64* %tmp.this5 + call void @advance(%"RawPtr[Char]"* %"$tmpC4", %"RawPtr[Char]" %36, i64 %37) + call void @"=.200"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %"$tmpC4") + br label %while_block + +while_end: ; preds = %while_block + %38 = load %"RawPtr[Char]", %"RawPtr[Char]"* %p + call void @advance.269(%"RawPtr[Char]"* %"$tmpC6", %"RawPtr[Char]" %38) + call void @"=.200"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %"$tmpC6") + br label %while_block7 + +while_block7: ; preds = %while_step9, %while_end + %39 = call i1 @isEmpty(%StringRef* %range.addr) + %40 = xor i1 true, %39 + br i1 %40, label %while_body8, label %while_end10 + +while_body8: ; preds = %while_block7 + %41 = call i8* @front(%StringRef* %range.addr) + %42 = load i8, i8* %41 + %43 = load %"RawPtr[Char]", %"RawPtr[Char]"* %p + %44 = call i8* @value(%"RawPtr[Char]" %43) + store i8 %42, i8* %44 + %45 = load %"RawPtr[Char]", %"RawPtr[Char]"* %p + call void @advance.269(%"RawPtr[Char]"* %"$tmpC11", %"RawPtr[Char]" %45) + call void @"=.200"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %"$tmpC11") + call void @popFront(%StringRef* %range.addr) + br label %while_step9 + +while_step9: ; preds = %while_body8 + br label %while_block7 + +while_end10: ; preds = %while_block7 + %46 = load %String*, %String** %this.addr + %47 = getelementptr inbounds %String, %String* %46, i32 0, i32 1 + %48 = load %String*, %String** %this.addr + %49 = getelementptr inbounds %String, %String* %48, i32 0, i32 1 + %50 = load %"RawPtr[Char]", %"RawPtr[Char]"* %49 + %51 = load i64, i64* %n + store i64 %51, i64* %tmp.this13 + %52 = load i64, i64* %tmp.this13 + call void @advance(%"RawPtr[Char]"* %"$tmpC12", %"RawPtr[Char]" %50, i64 %52) + call void @"=.200"(%"RawPtr[Char]"* %47, %"RawPtr[Char]"* %"$tmpC12") ret void } -; Function Attrs: inlinehint nounwind -define internal void @toString.347(%String* sret %_result, %StringRef %a1) #4 { - %_result.addr = alloca %String* - store %String* %_result, %String** %_result.addr - %a1.addr = alloca %StringRef - store %StringRef %a1, %StringRef* %a1.addr - %s = alloca %StringOutputStream +; Function Attrs: alwaysinline nounwind +define internal void @dtor.454(%StringOutputStream* %this) #3 { + %this.addr = alloca %StringOutputStream* + store %StringOutputStream* %this, %StringOutputStream** %this.addr br label %code code: ; preds = %0 - call void @ctor.289(%StringOutputStream* %s) - %1 = call %StringOutputStream* @"<<"(%StringOutputStream* %s, %StringRef* %a1.addr) - %2 = load %String*, %String** %_result.addr - %3 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %s, i32 0, i32 0 - call void @ctor.184(%String* %2, %String* %3) - call void @dtor.291(%StringOutputStream* %s) - ret void - -dumy_block: ; No predecessors! - call void @dtor.291(%StringOutputStream* %s) + %1 = load %StringOutputStream*, %StringOutputStream** %this.addr + %2 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %1, i32 0, i32 0 + call void @dtor.261(%String* %2) ret void } ; Function Attrs: inlinehint nounwind -define internal void @advanceIf.348(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %range, %"$lambdaEnclosureData.1" %pred) #4 { - %range.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* - store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %range, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr +define internal void @advanceIf.455(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %range, %"$lambdaEnclosureData.1" %pred) #4 { + %range.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* + store %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %range, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %range.addr %pred.addr = alloca %"$lambdaEnclosureData.1" store %"$lambdaEnclosureData.1" %pred, %"$lambdaEnclosureData.1"* %pred.addr br label %code @@ -12812,14 +15727,14 @@ code: ; preds = %0 br label %while_block while_block: ; preds = %while_step, %code - %1 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr - %2 = call i1 @isEmpty.310(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1) + %1 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %range.addr + %2 = call i1 @isEmpty.414(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %1) %3 = xor i1 true, %2 br i1 %3, label %cond.true, label %cond.false while_body: ; preds = %cond.end - %4 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %4) + %4 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %range.addr + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %4) br label %while_step while_step: ; preds = %while_body @@ -12829,9 +15744,9 @@ while_end: ; preds = %cond.end ret void cond.true: ; preds = %while_block - %5 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr - %6 = call i8 @front.315(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5) - %7 = call i1 @"().349"(%"$lambdaEnclosureData.1"* %pred.addr, i8 %6) + %5 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %range.addr + %6 = call i8 @front.419(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %5) + %7 = call i1 @"().456"(%"$lambdaEnclosureData.1"* %pred.addr, i8 %6) br label %cond.end cond.false: ; preds = %while_block @@ -12843,7 +15758,7 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: alwaysinline nounwind -define internal i1 @"().349"(%"$lambdaEnclosureData.1"* %this, i8 %c) #3 { +define internal i1 @"().456"(%"$lambdaEnclosureData.1"* %this, i8 %c) #3 { %this.addr = alloca %"$lambdaEnclosureData.1"* store %"$lambdaEnclosureData.1"* %this, %"$lambdaEnclosureData.1"** %this.addr %c.addr = alloca i8 @@ -12857,7 +15772,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.350(%"$lambdaEnclosureData.1"* %this) #3 { +define internal void @ctor.457(%"$lambdaEnclosureData.1"* %this) #3 { %this.addr = alloca %"$lambdaEnclosureData.1"* store %"$lambdaEnclosureData.1"* %this, %"$lambdaEnclosureData.1"** %this.addr br label %code @@ -12867,7 +15782,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.351(%"$lambdaEnclosureData.1"* %this, %"$lambdaEnclosureData.1"* %other) #3 { +define internal void @ctor.458(%"$lambdaEnclosureData.1"* %this, %"$lambdaEnclosureData.1"* %other) #3 { %this.addr = alloca %"$lambdaEnclosureData.1"* store %"$lambdaEnclosureData.1"* %this, %"$lambdaEnclosureData.1"** %this.addr %other.addr = alloca %"$lambdaEnclosureData.1"* @@ -12879,7 +15794,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.352(%"$lambdaEnclosureData.1"* %this) #3 { +define internal void @dtor.459(%"$lambdaEnclosureData.1"* %this) #3 { %this.addr = alloca %"$lambdaEnclosureData.1"* store %"$lambdaEnclosureData.1"* %this, %"$lambdaEnclosureData.1"** %this.addr br label %code @@ -12889,7 +15804,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.353"(%"$lambdaEnclosureData.1"* %this, %"$lambdaEnclosureData.1"* %other) #3 { +define internal void @"=.460"(%"$lambdaEnclosureData.1"* %this, %"$lambdaEnclosureData.1"* %other) #3 { %this.addr = alloca %"$lambdaEnclosureData.1"* store %"$lambdaEnclosureData.1"* %this, %"$lambdaEnclosureData.1"** %this.addr %other.addr = alloca %"$lambdaEnclosureData.1"* @@ -12901,7 +15816,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.354"(%"$lambdaEnclosureData.1"* %this, %"$lambdaEnclosureData.1"* %other) #3 { +define internal i1 @"==.461"(%"$lambdaEnclosureData.1"* %this, %"$lambdaEnclosureData.1"* %other) #3 { %this.addr = alloca %"$lambdaEnclosureData.1"* store %"$lambdaEnclosureData.1"* %this, %"$lambdaEnclosureData.1"** %this.addr %other.addr = alloca %"$lambdaEnclosureData.1"* @@ -12913,9 +15828,9 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @advanceIf.355(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %range, %"$lambdaEnclosureData.2" %pred) #4 { - %range.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* - store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %range, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr +define internal void @advanceIf.462(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %range, %"$lambdaEnclosureData.2" %pred) #4 { + %range.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* + store %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %range, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %range.addr %pred.addr = alloca %"$lambdaEnclosureData.2" store %"$lambdaEnclosureData.2" %pred, %"$lambdaEnclosureData.2"* %pred.addr br label %code @@ -12924,14 +15839,14 @@ code: ; preds = %0 br label %while_block while_block: ; preds = %while_step, %code - %1 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr - %2 = call i1 @isEmpty.310(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1) + %1 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %range.addr + %2 = call i1 @isEmpty.414(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %1) %3 = xor i1 true, %2 br i1 %3, label %cond.true, label %cond.false while_body: ; preds = %cond.end - %4 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %4) + %4 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %range.addr + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %4) br label %while_step while_step: ; preds = %while_body @@ -12941,9 +15856,9 @@ while_end: ; preds = %cond.end ret void cond.true: ; preds = %while_block - %5 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr - %6 = call i8 @front.315(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5) - %7 = call i1 @"().356"(%"$lambdaEnclosureData.2"* %pred.addr, i8 %6) + %5 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %range.addr + %6 = call i8 @front.419(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %5) + %7 = call i1 @"().463"(%"$lambdaEnclosureData.2"* %pred.addr, i8 %6) br label %cond.end cond.false: ; preds = %while_block @@ -12955,7 +15870,7 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: alwaysinline nounwind -define internal i1 @"().356"(%"$lambdaEnclosureData.2"* %this, i8 %c) #3 { +define internal i1 @"().463"(%"$lambdaEnclosureData.2"* %this, i8 %c) #3 { %this.addr = alloca %"$lambdaEnclosureData.2"* store %"$lambdaEnclosureData.2"* %this, %"$lambdaEnclosureData.2"** %this.addr %c.addr = alloca i8 @@ -12969,7 +15884,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.357(%"$lambdaEnclosureData.2"* %this) #3 { +define internal void @ctor.464(%"$lambdaEnclosureData.2"* %this) #3 { %this.addr = alloca %"$lambdaEnclosureData.2"* store %"$lambdaEnclosureData.2"* %this, %"$lambdaEnclosureData.2"** %this.addr br label %code @@ -12979,7 +15894,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.358(%"$lambdaEnclosureData.2"* %this, %"$lambdaEnclosureData.2"* %other) #3 { +define internal void @ctor.465(%"$lambdaEnclosureData.2"* %this, %"$lambdaEnclosureData.2"* %other) #3 { %this.addr = alloca %"$lambdaEnclosureData.2"* store %"$lambdaEnclosureData.2"* %this, %"$lambdaEnclosureData.2"** %this.addr %other.addr = alloca %"$lambdaEnclosureData.2"* @@ -12991,7 +15906,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.359(%"$lambdaEnclosureData.2"* %this) #3 { +define internal void @dtor.466(%"$lambdaEnclosureData.2"* %this) #3 { %this.addr = alloca %"$lambdaEnclosureData.2"* store %"$lambdaEnclosureData.2"* %this, %"$lambdaEnclosureData.2"** %this.addr br label %code @@ -13001,7 +15916,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.360"(%"$lambdaEnclosureData.2"* %this, %"$lambdaEnclosureData.2"* %other) #3 { +define internal void @"=.467"(%"$lambdaEnclosureData.2"* %this, %"$lambdaEnclosureData.2"* %other) #3 { %this.addr = alloca %"$lambdaEnclosureData.2"* store %"$lambdaEnclosureData.2"* %this, %"$lambdaEnclosureData.2"** %this.addr %other.addr = alloca %"$lambdaEnclosureData.2"* @@ -13013,7 +15928,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.361"(%"$lambdaEnclosureData.2"* %this, %"$lambdaEnclosureData.2"* %other) #3 { +define internal i1 @"==.468"(%"$lambdaEnclosureData.2"* %this, %"$lambdaEnclosureData.2"* %other) #3 { %this.addr = alloca %"$lambdaEnclosureData.2"* store %"$lambdaEnclosureData.2"* %this, %"$lambdaEnclosureData.2"** %this.addr %other.addr = alloca %"$lambdaEnclosureData.2"* @@ -13025,9 +15940,9 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @advance.362(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %range, i64 %n) #4 { - %range.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* - store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %range, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr +define internal void @advance.469(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %range, i64 %n) #4 { + %range.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* + store %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %range, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %range.addr %n.addr = alloca i64 store i64 %n, i64* %n.addr %tmp.this = alloca i64 @@ -13044,8 +15959,8 @@ while_block: ; preds = %while_step, %code br i1 %3, label %while_body, label %while_end while_body: ; preds = %while_block - %4 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %range.addr - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %4) + %4 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %range.addr + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %4) br label %while_step while_step: ; preds = %while_body @@ -13056,33 +15971,33 @@ while_end: ; preds = %while_block } ; Function Attrs: inlinehint nounwind -define internal i8 @"pre_++.363"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %r) #4 { - %r.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* - store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %r, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr +define internal i8 @"pre_++.470"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %r) #4 { + %r.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* + store %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %r, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %r.addr br label %code code: ; preds = %0 - %1 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1) - %2 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr - %3 = call i8 @front.315(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %2) + %1 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %r.addr + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %1) + %2 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %r.addr + %3 = call i8 @front.419(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %2) ret i8 %3 } ; Function Attrs: inlinehint nounwind -define internal i1 @"pre_!"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %r) #4 { - %r.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* - store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %r, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr +define internal i1 @"pre_!"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %r) #4 { + %r.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* + store %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %r, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %r.addr br label %code code: ; preds = %0 - %1 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr - %2 = call i1 @isEmpty.310(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1) + %1 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %r.addr + %2 = call i1 @isEmpty.414(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %1) ret i1 %2 } ; Function Attrs: inlinehint nounwind -define internal void @ctor.364(%String* %this, %StringRef* %other) #4 { +define internal void @ctor.471(%String* %this, %StringRef* %other) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr %other.addr = alloca %StringRef* @@ -13096,7 +16011,7 @@ code: ; preds = %0 store i64 %2, i64* %size %3 = load %String*, %String** %this.addr %4 = load i64, i64* %size - call void @ctor.186(%String* %3, i64 %4) + call void @ctor.191(%String* %3, i64 %4) %5 = load %String*, %String** %this.addr %6 = getelementptr inbounds %String, %String* %5, i32 0, i32 0 %7 = load %"RawPtr[Char]", %"RawPtr[Char]"* %6 @@ -13110,11 +16025,11 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @parseString(%TokenType* sret %_result, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, i8 %endChar) #4 { +define internal void @parseString(%TokenType* sret %_result, %SparrowScanner* %this, i8 %endChar) #4 { %_result.addr = alloca %TokenType* store %TokenType* %_result, %TokenType** %_result.addr - %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* - store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr + %this.addr = alloca %SparrowScanner* + store %SparrowScanner* %this, %SparrowScanner** %this.addr %endChar.addr = alloca i8 store i8 %endChar, i8* %endChar.addr %tmp.this = alloca i32 @@ -13127,31 +16042,31 @@ define internal void @parseString(%TokenType* sret %_result, %"SparrowScanner[_C br label %code code: ; preds = %0 - %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 1 - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %2) + %1 = load %SparrowScanner*, %SparrowScanner** %this.addr + %2 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %1, i32 0, i32 2 + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %2) br label %if_block if_block: ; preds = %code - %3 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr + %3 = load %SparrowScanner*, %SparrowScanner** %this.addr store i32 1, i32* %tmp.this %4 = load i32, i32* %tmp.this - %5 = call i1 @hasLessThan(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %3, i32 %4) + %5 = call i1 @hasLessThan(%SparrowScanner* %3, i32 %4) br i1 %5, label %if_then, label %if_end if_then: ; preds = %if_block - %6 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr + %6 = load %SparrowScanner*, %SparrowScanner** %this.addr %7 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 0 %8 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 1 - store i8* getelementptr inbounds ([40 x i8], [40 x i8]* @str.13, i32 0, i32 0), i8** %7 - store i8* getelementptr inbounds ([40 x i8], [40 x i8]* @str.13, i32 0, i32 39), i8** %8 + store i8* getelementptr inbounds ([40 x i8], [40 x i8]* @str.10, i32 0, i32 0), i8** %7 + store i8* getelementptr inbounds ([40 x i8], [40 x i8]* @str.10, i32 0, i32 39), i8** %8 %9 = load %StringRef, %StringRef* %tmp.StringRef store %StringRef %9, %StringRef* %"$tmpForRef" - call void @ctor.364(%String* %tmp.this1, %StringRef* %"$tmpForRef") - call void @reportError.346(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %6, %String* %tmp.this1) - call void @dtor.218(%String* %tmp.this1) + call void @ctor.471(%String* %tmp.this1, %StringRef* %"$tmpForRef") + call void @reportError(%SparrowScanner* %6, %String* %tmp.this1) + call void @dtor.261(%String* %tmp.this1) %10 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %10, i32 0) + call void @ctor.417(%TokenType* %10, i32 0) ret void if_end: ; preds = %dumy_block, %if_block @@ -13161,9 +16076,9 @@ dumy_block: ; No predecessors! br label %if_end while_block: ; preds = %while_step, %if_end - %11 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %12 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %11, i32 0, i32 1 - %13 = call i1 @"pre_!!.338"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %12) + %11 = load %SparrowScanner*, %SparrowScanner** %this.addr + %12 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %11, i32 0, i32 2 + %13 = call i1 @"pre_!!.442"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %12) br i1 %13, label %cond.true, label %cond.false while_body: ; preds = %cond.end @@ -13176,9 +16091,9 @@ while_end: ; preds = %cond.end br label %if_block5 cond.true: ; preds = %while_block - %14 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %15 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %14, i32 0, i32 1 - %16 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %15) + %14 = load %SparrowScanner*, %SparrowScanner** %this.addr + %15 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %14, i32 0, i32 2 + %16 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %15) %17 = load i8, i8* %endChar.addr %18 = icmp ne i8 %16, %17 br label %cond.end @@ -13191,46 +16106,46 @@ cond.end: ; preds = %cond.false, %cond.t br i1 %cond.res, label %while_body, label %while_end if_block2: ; preds = %while_body - %19 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %20 = call i1 @checkEscapeChar(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %19) + %19 = load %SparrowScanner*, %SparrowScanner** %this.addr + %20 = call i1 @checkEscapeChar(%SparrowScanner* %19) %21 = xor i1 true, %20 br i1 %21, label %if_then3, label %if_end4 if_then3: ; preds = %if_block2 - %22 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - call void @advanceAndCapture1(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %22) + %22 = load %SparrowScanner*, %SparrowScanner** %this.addr + call void @advanceAndCapture1(%SparrowScanner* %22) br label %if_end4 if_end4: ; preds = %if_then3, %if_block2 br label %while_step if_block5: ; preds = %while_end - %23 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %24 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %23, i32 0, i32 1 - %25 = call i1 @"pre_!"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %24) + %23 = load %SparrowScanner*, %SparrowScanner** %this.addr + %24 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %23, i32 0, i32 2 + %25 = call i1 @"pre_!"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %24) br i1 %25, label %if_then6, label %if_end7 if_then6: ; preds = %if_block5 - %26 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr + %26 = load %SparrowScanner*, %SparrowScanner** %this.addr %27 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef10, i32 0, i32 0 %28 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef10, i32 0, i32 1 - store i8* getelementptr inbounds ([40 x i8], [40 x i8]* @str.15, i32 0, i32 0), i8** %27 - store i8* getelementptr inbounds ([40 x i8], [40 x i8]* @str.15, i32 0, i32 39), i8** %28 + store i8* getelementptr inbounds ([40 x i8], [40 x i8]* @str.12, i32 0, i32 0), i8** %27 + store i8* getelementptr inbounds ([40 x i8], [40 x i8]* @str.12, i32 0, i32 39), i8** %28 %29 = load %StringRef, %StringRef* %tmp.StringRef10 store %StringRef %29, %StringRef* %"$tmpForRef9" - call void @ctor.364(%String* %tmp.this8, %StringRef* %"$tmpForRef9") - call void @reportError.346(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %26, %String* %tmp.this8) - call void @dtor.218(%String* %tmp.this8) + call void @ctor.471(%String* %tmp.this8, %StringRef* %"$tmpForRef9") + call void @reportError(%SparrowScanner* %26, %String* %tmp.this8) + call void @dtor.261(%String* %tmp.this8) %30 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %30, i32 0) + call void @ctor.417(%TokenType* %30, i32 0) ret void if_end7: ; preds = %dumy_block11, %if_block5 - %31 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %32 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %31, i32 0, i32 1 - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %32) + %31 = load %SparrowScanner*, %SparrowScanner** %this.addr + %32 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %31, i32 0, i32 2 + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %32) %33 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %33, i32 39) + call void @ctor.417(%TokenType* %33, i32 39) ret void dumy_block11: ; No predecessors! @@ -13238,26 +16153,26 @@ dumy_block11: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal i1 @hasLessThan(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, i32 %n) #4 { - %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* - store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr +define internal i1 @hasLessThan(%SparrowScanner* %this, i32 %n) #4 { + %this.addr = alloca %SparrowScanner* + store %SparrowScanner* %this, %SparrowScanner** %this.addr %n.addr = alloca i32 store i32 %n, i32* %n.addr br label %code code: ; preds = %0 - %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 1 - %3 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %2, i32 0, i32 0 + %1 = load %SparrowScanner*, %SparrowScanner** %this.addr + %2 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %1, i32 0, i32 2 + %3 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]", %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %2, i32 0, i32 0 %4 = load i32, i32* %n.addr - %5 = call i1 @hasLessThan.365(%"RangeWithLookahead[_CharSource]"* %3, i32 %4) + %5 = call i1 @hasLessThan.472(%"RangeWithLookahead[BufferedCharSourceRange]"* %3, i32 %4) ret i1 %5 } ; Function Attrs: inlinehint nounwind -define internal i1 @hasLessThan.365(%"RangeWithLookahead[_CharSource]"* %this, i32 %n) #4 { - %this.addr = alloca %"RangeWithLookahead[_CharSource]"* - store %"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"** %this.addr +define internal i1 @hasLessThan.472(%"RangeWithLookahead[BufferedCharSourceRange]"* %this, i32 %n) #4 { + %this.addr = alloca %"RangeWithLookahead[BufferedCharSourceRange]"* + store %"RangeWithLookahead[BufferedCharSourceRange]"* %this, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr %n.addr = alloca i32 store i32 %n, i32* %n.addr %tmp.this = alloca i64 @@ -13273,18 +16188,18 @@ while_block: ; preds = %while_step, %code %2 = zext i32 %1 to i64 store i64 %2, i64* %tmp.this %3 = load i64, i64* %tmp.this - %4 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %5 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %4, i32 0, i32 1 - %6 = call i64 @size.177(%"Vector[Char]"* %5) + %4 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %5 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %4, i32 0, i32 1 + %6 = call i64 @size.199(%"Vector[Char]"* %5) %7 = icmp sge i64 %3, %6 br i1 %7, label %cond.true, label %cond.false while_body: ; preds = %cond.end - %8 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %9 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %8, i32 0, i32 1 - %10 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %11 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %10, i32 0, i32 0 - %12 = call i8 @"post_++.297"(%_CharSource* %11) + %8 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %9 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %8, i32 0, i32 1 + %10 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %11 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %10, i32 0, i32 0 + %12 = call i8 @"post_++.398"(%BufferedCharSourceRange* %11) store i8 %12, i8* %"$tmpForRef" call void @"+="(%"Vector[Char]"* %9, i8* %"$tmpForRef") br label %while_step @@ -13297,16 +16212,16 @@ while_end: ; preds = %cond.end %14 = zext i32 %13 to i64 store i64 %14, i64* %tmp.this1 %15 = load i64, i64* %tmp.this1 - %16 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %17 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %16, i32 0, i32 1 - %18 = call i64 @size.177(%"Vector[Char]"* %17) + %16 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %17 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %16, i32 0, i32 1 + %18 = call i64 @size.199(%"Vector[Char]"* %17) %19 = icmp sge i64 %15, %18 ret i1 %19 cond.true: ; preds = %while_block - %20 = load %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %21 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %20, i32 0, i32 0 - %22 = call i1 @"pre_!!"(%_CharSource* %21) + %20 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %this.addr + %21 = getelementptr inbounds %"RangeWithLookahead[BufferedCharSourceRange]", %"RangeWithLookahead[BufferedCharSourceRange]"* %20, i32 0, i32 0 + %22 = call i1 @"pre_!!"(%BufferedCharSourceRange* %21) br label %cond.end cond.false: ; preds = %while_block @@ -13318,9 +16233,9 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: noinline nounwind -define i1 @checkEscapeChar(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this) #5 { - %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* - store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr +define i1 @checkEscapeChar(%SparrowScanner* %this) #5 { + %this.addr = alloca %SparrowScanner* + store %SparrowScanner* %this, %SparrowScanner** %this.addr %ch = alloca i8 %tmp.this = alloca i32 %tmp.this39 = alloca %String @@ -13331,9 +16246,9 @@ define i1 @checkEscapeChar(%"SparrowScanner[_CharSource, ExternalErrorReporter]" br label %code code: ; preds = %0 - %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 1 - %3 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %2) + %1 = load %SparrowScanner*, %SparrowScanner** %this.addr + %2 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %1, i32 0, i32 2 + %3 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %2) store i8 %3, i8* %ch br label %if_block @@ -13343,9 +16258,9 @@ if_block: ; preds = %code br i1 %5, label %if_then, label %if_end if_then: ; preds = %if_block - %6 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %7 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %6, i32 0, i32 1 - %8 = call i8 @"pre_++.363"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %7) + %6 = load %SparrowScanner*, %SparrowScanner** %this.addr + %7 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %6, i32 0, i32 2 + %8 = call i8 @"pre_++.470"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %7) store i8 %8, i8* %ch br label %if_block1 @@ -13358,19 +16273,19 @@ if_block1: ; preds = %if_then br i1 %10, label %if_then2, label %if_else if_then2: ; preds = %if_block1 - %11 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %12 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %11, i32 0, i32 2 + %11 = load %SparrowScanner*, %SparrowScanner** %this.addr + %12 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %11, i32 0, i32 3 %13 = getelementptr inbounds %Token, %Token* %12, i32 0, i32 2 - call void @"+=.366"(%String* %13, i8 13) + call void @"+=.473"(%String* %13, i8 13) br label %if_end3 if_else: ; preds = %if_block1 br label %if_block4 if_end3: ; preds = %if_end7, %if_then2 - %14 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %15 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %14, i32 0, i32 1 - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %15) + %14 = load %SparrowScanner*, %SparrowScanner** %this.addr + %15 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %14, i32 0, i32 2 + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %15) ret i1 true if_block4: ; preds = %if_else @@ -13379,10 +16294,10 @@ if_block4: ; preds = %if_else br i1 %17, label %if_then5, label %if_else6 if_then5: ; preds = %if_block4 - %18 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %19 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %18, i32 0, i32 2 + %18 = load %SparrowScanner*, %SparrowScanner** %this.addr + %19 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %18, i32 0, i32 3 %20 = getelementptr inbounds %Token, %Token* %19, i32 0, i32 2 - call void @"+=.366"(%String* %20, i8 10) + call void @"+=.473"(%String* %20, i8 10) br label %if_end7 if_else6: ; preds = %if_block4 @@ -13397,10 +16312,10 @@ if_block8: ; preds = %if_else6 br i1 %22, label %if_then9, label %if_else10 if_then9: ; preds = %if_block8 - %23 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %24 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %23, i32 0, i32 2 + %23 = load %SparrowScanner*, %SparrowScanner** %this.addr + %24 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %23, i32 0, i32 3 %25 = getelementptr inbounds %Token, %Token* %24, i32 0, i32 2 - call void @"+=.366"(%String* %25, i8 8) + call void @"+=.473"(%String* %25, i8 8) br label %if_end11 if_else10: ; preds = %if_block8 @@ -13415,10 +16330,10 @@ if_block12: ; preds = %if_else10 br i1 %27, label %if_then13, label %if_else14 if_then13: ; preds = %if_block12 - %28 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %29 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %28, i32 0, i32 2 + %28 = load %SparrowScanner*, %SparrowScanner** %this.addr + %29 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %28, i32 0, i32 3 %30 = getelementptr inbounds %Token, %Token* %29, i32 0, i32 2 - call void @"+=.366"(%String* %30, i8 12) + call void @"+=.473"(%String* %30, i8 12) br label %if_end15 if_else14: ; preds = %if_block12 @@ -13433,10 +16348,10 @@ if_block16: ; preds = %if_else14 br i1 %32, label %if_then17, label %if_else18 if_then17: ; preds = %if_block16 - %33 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %34 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %33, i32 0, i32 2 + %33 = load %SparrowScanner*, %SparrowScanner** %this.addr + %34 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %33, i32 0, i32 3 %35 = getelementptr inbounds %Token, %Token* %34, i32 0, i32 2 - call void @"+=.366"(%String* %35, i8 9) + call void @"+=.473"(%String* %35, i8 9) br label %if_end19 if_else18: ; preds = %if_block16 @@ -13451,10 +16366,10 @@ if_block20: ; preds = %if_else18 br i1 %37, label %if_then21, label %if_else22 if_then21: ; preds = %if_block20 - %38 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %39 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %38, i32 0, i32 2 + %38 = load %SparrowScanner*, %SparrowScanner** %this.addr + %39 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %38, i32 0, i32 3 %40 = getelementptr inbounds %Token, %Token* %39, i32 0, i32 2 - call void @"+=.366"(%String* %40, i8 92) + call void @"+=.473"(%String* %40, i8 92) br label %if_end23 if_else22: ; preds = %if_block20 @@ -13469,10 +16384,10 @@ if_block24: ; preds = %if_else22 br i1 %42, label %if_then25, label %if_else26 if_then25: ; preds = %if_block24 - %43 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %44 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %43, i32 0, i32 2 + %43 = load %SparrowScanner*, %SparrowScanner** %this.addr + %44 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %43, i32 0, i32 3 %45 = getelementptr inbounds %Token, %Token* %44, i32 0, i32 2 - call void @"+=.366"(%String* %45, i8 39) + call void @"+=.473"(%String* %45, i8 39) br label %if_end27 if_else26: ; preds = %if_block24 @@ -13487,10 +16402,10 @@ if_block28: ; preds = %if_else26 br i1 %47, label %if_then29, label %if_else30 if_then29: ; preds = %if_block28 - %48 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %49 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %48, i32 0, i32 2 + %48 = load %SparrowScanner*, %SparrowScanner** %this.addr + %49 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %48, i32 0, i32 3 %50 = getelementptr inbounds %Token, %Token* %49, i32 0, i32 2 - call void @"+=.366"(%String* %50, i8 34) + call void @"+=.473"(%String* %50, i8 34) br label %if_end31 if_else30: ; preds = %if_block28 @@ -13508,13 +16423,13 @@ if_then33: ; preds = %cond.end br label %if_block36 if_else34: ; preds = %cond.end - %53 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %54 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %53, i32 0, i32 2 + %53 = load %SparrowScanner*, %SparrowScanner** %this.addr + %54 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %53, i32 0, i32 3 %55 = getelementptr inbounds %Token, %Token* %54, i32 0, i32 2 - %56 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %57 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %56, i32 0, i32 1 - %58 = call i8 @"pre_++.363"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %57) - call void @"+=.366"(%String* %55, i8 %58) + %56 = load %SparrowScanner*, %SparrowScanner** %this.addr + %57 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %56, i32 0, i32 2 + %58 = call i8 @"pre_++.470"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %57) + call void @"+=.473"(%String* %55, i8 %58) br label %if_end35 if_end35: ; preds = %if_else34, %if_end38 @@ -13533,47 +16448,47 @@ cond.end: ; preds = %cond.false, %cond.t br i1 %cond.res, label %if_then33, label %if_else34 if_block36: ; preds = %if_then33 - %61 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr + %61 = load %SparrowScanner*, %SparrowScanner** %this.addr store i32 2, i32* %tmp.this %62 = load i32, i32* %tmp.this - %63 = call i1 @hasLessThan(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %61, i32 %62) + %63 = call i1 @hasLessThan(%SparrowScanner* %61, i32 %62) br i1 %63, label %if_then37, label %if_end38 if_then37: ; preds = %if_block36 - %64 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr + %64 = load %SparrowScanner*, %SparrowScanner** %this.addr %65 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 0 %66 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 1 - store i8* getelementptr inbounds ([37 x i8], [37 x i8]* @str.14, i32 0, i32 0), i8** %65 - store i8* getelementptr inbounds ([37 x i8], [37 x i8]* @str.14, i32 0, i32 36), i8** %66 + store i8* getelementptr inbounds ([37 x i8], [37 x i8]* @str.11, i32 0, i32 0), i8** %65 + store i8* getelementptr inbounds ([37 x i8], [37 x i8]* @str.11, i32 0, i32 36), i8** %66 %67 = load %StringRef, %StringRef* %tmp.StringRef store %StringRef %67, %StringRef* %"$tmpForRef" - call void @ctor.364(%String* %tmp.this39, %StringRef* %"$tmpForRef") - call void @reportError.346(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %64, %String* %tmp.this39) - call void @dtor.218(%String* %tmp.this39) + call void @ctor.471(%String* %tmp.this39, %StringRef* %"$tmpForRef") + call void @reportError(%SparrowScanner* %64, %String* %tmp.this39) + call void @dtor.261(%String* %tmp.this39) ret i1 true if_end38: ; preds = %dumy_block, %if_block36 - %68 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %69 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %68, i32 0, i32 1 - %70 = call i8 @"pre_++.363"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %69) + %68 = load %SparrowScanner*, %SparrowScanner** %this.addr + %69 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %68, i32 0, i32 2 + %70 = call i8 @"pre_++.470"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %69) %71 = call i32 @getXdigitVal(i8 %70) %72 = mul i32 16, %71 store i32 %72, i32* %charVal %73 = load i32, i32* %charVal - %74 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %75 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %74, i32 0, i32 1 - %76 = call i8 @"pre_++.363"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %75) + %74 = load %SparrowScanner*, %SparrowScanner** %this.addr + %75 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %74, i32 0, i32 2 + %76 = call i8 @"pre_++.470"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %75) %77 = call i32 @getXdigitVal(i8 %76) %78 = add i32 %73, %77 store i32 %78, i32* %charVal - %79 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %80 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %79, i32 0, i32 2 + %79 = load %SparrowScanner*, %SparrowScanner** %this.addr + %80 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %79, i32 0, i32 3 %81 = getelementptr inbounds %Token, %Token* %80, i32 0, i32 2 %82 = load i32, i32* %charVal %83 = trunc i32 %82 to i8 store i8 %83, i8* %tmp.this40 %84 = load i8, i8* %tmp.this40 - call void @"+=.366"(%String* %81, i8 %84) + call void @"+=.473"(%String* %81, i8 %84) br label %if_end35 dumy_block: ; No predecessors! @@ -13584,7 +16499,7 @@ dumy_block41: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal void @"+=.366"(%String* %this, i8 %value) #4 { +define internal void @"+=.473"(%String* %this, i8 %value) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr %value.addr = alloca i8 @@ -13594,12 +16509,12 @@ define internal void @"+=.366"(%String* %this, i8 %value) #4 { code: ; preds = %0 %1 = load %String*, %String** %this.addr %2 = load i8, i8* %value.addr - call void @pushBack.367(%String* %1, i8 %2) + call void @pushBack.474(%String* %1, i8 %2) ret void } ; Function Attrs: inlinehint nounwind -define internal void @pushBack.367(%String* %this, i8 %value) #4 { +define internal void @pushBack.474(%String* %this, i8 %value) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr %value.addr = alloca i8 @@ -13619,7 +16534,7 @@ if_block: ; preds = %code %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 1 %3 = load %String*, %String** %this.addr %4 = getelementptr inbounds %String, %String* %3, i32 0, i32 2 - %5 = call i1 @"==.225"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) + %5 = call i1 @"==.268"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) br i1 %5, label %if_then, label %if_end if_then: ; preds = %if_block @@ -13643,8 +16558,8 @@ if_end: ; preds = %if_end3, %if_block %17 = load %String*, %String** %this.addr %18 = getelementptr inbounds %String, %String* %17, i32 0, i32 1 %19 = load %"RawPtr[Char]", %"RawPtr[Char]"* %18 - call void @advance.226(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %19) - call void @"=.178"(%"RawPtr[Char]"* %16, %"RawPtr[Char]"* %"$tmpC") + call void @advance.269(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %19) + call void @"=.200"(%"RawPtr[Char]"* %16, %"RawPtr[Char]"* %"$tmpC") ret void if_block1: ; preds = %if_then @@ -13768,31 +16683,31 @@ code: ; preds = %0 declare i32 @tolower(i32) ; Function Attrs: inlinehint nounwind -define internal void @advanceAndCapture1(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this) #4 { - %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* - store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr +define internal void @advanceAndCapture1(%SparrowScanner* %this) #4 { + %this.addr = alloca %SparrowScanner* + store %SparrowScanner* %this, %SparrowScanner** %this.addr br label %code code: ; preds = %0 - %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 2 + %1 = load %SparrowScanner*, %SparrowScanner** %this.addr + %2 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %1, i32 0, i32 3 %3 = getelementptr inbounds %Token, %Token* %2, i32 0, i32 2 - %4 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %5 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %4, i32 0, i32 1 - %6 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5) - call void @"+=.366"(%String* %3, i8 %6) - %7 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %8 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %7, i32 0, i32 1 - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %8) + %4 = load %SparrowScanner*, %SparrowScanner** %this.addr + %5 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %4, i32 0, i32 2 + %6 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %5) + call void @"+=.473"(%String* %3, i8 %6) + %7 = load %SparrowScanner*, %SparrowScanner** %this.addr + %8 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %7, i32 0, i32 2 + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %8) ret void } ; Function Attrs: inlinehint nounwind -define internal void @parseStringNE(%TokenType* sret %_result, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this) #4 { +define internal void @parseStringNE(%TokenType* sret %_result, %SparrowScanner* %this) #4 { %_result.addr = alloca %TokenType* store %TokenType* %_result, %TokenType** %_result.addr - %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* - store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr + %this.addr = alloca %SparrowScanner* + store %SparrowScanner* %this, %SparrowScanner** %this.addr %tmp.this = alloca i64 %tmp.this5 = alloca %String %"$tmpForRef" = alloca %StringRef @@ -13801,22 +16716,22 @@ define internal void @parseStringNE(%TokenType* sret %_result, %"SparrowScanner[ br label %code code: ; preds = %0 - %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 1 + %1 = load %SparrowScanner*, %SparrowScanner** %this.addr + %2 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %1, i32 0, i32 2 store i64 2, i64* %tmp.this %3 = load i64, i64* %tmp.this - call void @advance.362(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %2, i64 %3) + call void @advance.469(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %2, i64 %3) br label %while_block while_block: ; preds = %while_step, %code - %4 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %5 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %4, i32 0, i32 1 - %6 = call i1 @"pre_!!.338"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5) + %4 = load %SparrowScanner*, %SparrowScanner** %this.addr + %5 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %4, i32 0, i32 2 + %6 = call i1 @"pre_!!.442"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %5) br i1 %6, label %cond.true, label %cond.false while_body: ; preds = %cond.end - %7 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - call void @advanceAndCapture1(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %7) + %7 = load %SparrowScanner*, %SparrowScanner** %this.addr + call void @advanceAndCapture1(%SparrowScanner* %7) br label %while_step while_step: ; preds = %while_body @@ -13826,9 +16741,9 @@ while_end: ; preds = %cond.end br label %if_block cond.true: ; preds = %while_block - %8 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %9 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %8, i32 0, i32 1 - %10 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %9) + %8 = load %SparrowScanner*, %SparrowScanner** %this.addr + %9 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %8, i32 0, i32 2 + %10 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %9) %11 = icmp eq i8 %10, 125 br i1 %11, label %cond.true1, label %cond.false2 @@ -13840,8 +16755,8 @@ cond.end: ; preds = %cond.false, %cond.e br i1 %cond.res4, label %while_body, label %while_end cond.true1: ; preds = %cond.true - %12 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %13 = call i8 @peekChar(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %12) + %12 = load %SparrowScanner*, %SparrowScanner** %this.addr + %13 = call i8 @peekChar(%SparrowScanner* %12) %14 = icmp eq i8 %13, 62 br label %cond.end3 @@ -13854,34 +16769,34 @@ cond.end3: ; preds = %cond.false2, %cond. br label %cond.end if_block: ; preds = %while_end - %16 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %17 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %16, i32 0, i32 1 - %18 = call i1 @"pre_!"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %17) + %16 = load %SparrowScanner*, %SparrowScanner** %this.addr + %17 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %16, i32 0, i32 2 + %18 = call i1 @"pre_!"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %17) br i1 %18, label %if_then, label %if_end if_then: ; preds = %if_block - %19 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr + %19 = load %SparrowScanner*, %SparrowScanner** %this.addr %20 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 0 %21 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 1 - store i8* getelementptr inbounds ([40 x i8], [40 x i8]* @str.16, i32 0, i32 0), i8** %20 - store i8* getelementptr inbounds ([40 x i8], [40 x i8]* @str.16, i32 0, i32 39), i8** %21 + store i8* getelementptr inbounds ([40 x i8], [40 x i8]* @str.13, i32 0, i32 0), i8** %20 + store i8* getelementptr inbounds ([40 x i8], [40 x i8]* @str.13, i32 0, i32 39), i8** %21 %22 = load %StringRef, %StringRef* %tmp.StringRef store %StringRef %22, %StringRef* %"$tmpForRef" - call void @ctor.364(%String* %tmp.this5, %StringRef* %"$tmpForRef") - call void @reportError.346(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %19, %String* %tmp.this5) - call void @dtor.218(%String* %tmp.this5) + call void @ctor.471(%String* %tmp.this5, %StringRef* %"$tmpForRef") + call void @reportError(%SparrowScanner* %19, %String* %tmp.this5) + call void @dtor.261(%String* %tmp.this5) %23 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %23, i32 0) + call void @ctor.417(%TokenType* %23, i32 0) ret void if_end: ; preds = %dumy_block, %if_block - %24 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %25 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %24, i32 0, i32 1 + %24 = load %SparrowScanner*, %SparrowScanner** %this.addr + %25 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %24, i32 0, i32 2 store i64 2, i64* %tmp.this6 %26 = load i64, i64* %tmp.this6 - call void @advance.362(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %25, i64 %26) + call void @advance.469(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %25, i64 %26) %27 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %27, i32 39) + call void @ctor.417(%TokenType* %27, i32 39) ret void dumy_block: ; No predecessors! @@ -14141,9 +17056,9 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: inlinehint nounwind -define internal i1 @parseOperator(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this) #4 { - %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* - store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr +define internal i1 @parseOperator(%SparrowScanner* %this) #4 { + %this.addr = alloca %SparrowScanner* + store %SparrowScanner* %this, %SparrowScanner** %this.addr %ch = alloca i8 %funptr = alloca i1 (i8)* %i = alloca i32 @@ -14155,9 +17070,9 @@ define internal i1 @parseOperator(%"SparrowScanner[_CharSource, ExternalErrorRep br label %code code: ; preds = %0 - %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 1 - %3 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %2) + %1 = load %SparrowScanner*, %SparrowScanner** %this.addr + %2 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %1, i32 0, i32 2 + %3 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %2) store i8 %3, i8* %ch br label %if_block @@ -14167,11 +17082,11 @@ if_block: ; preds = %code br i1 %5, label %if_then, label %if_end if_then: ; preds = %if_block - %6 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr + %6 = load %SparrowScanner*, %SparrowScanner** %this.addr store i1 (i8)* @isOpCharDot, i1 (i8)** %funptr %7 = bitcast i1 (i8)** %funptr to %"FunctionPtr1[Bool, Char]"* %8 = load %"FunctionPtr1[Bool, Char]", %"FunctionPtr1[Bool, Char]"* %7 - call void @advanceAndCapture(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %6, %"FunctionPtr1[Bool, Char]" %8) + call void @advanceAndCapture(%SparrowScanner* %6, %"FunctionPtr1[Bool, Char]" %8) ret i1 true if_end: ; preds = %dumy_block, %if_block @@ -14187,11 +17102,11 @@ if_block1: ; preds = %if_end if_then2: ; preds = %if_block1 store i32 1, i32* %i - %11 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr + %11 = load %SparrowScanner*, %SparrowScanner** %this.addr %12 = load i32, i32* %i store i32 %12, i32* %tmp.this %13 = load i32, i32* %tmp.this - %14 = call i8 @peekChar.369(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %11, i32 %13) + %14 = call i8 @peekChar.476(%SparrowScanner* %11, i32 %13) store i8 %14, i8* %c br label %while_block @@ -14204,11 +17119,11 @@ while_block: ; preds = %while_step, %if_the br i1 %16, label %while_body, label %while_end while_body: ; preds = %while_block - %17 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr + %17 = load %SparrowScanner*, %SparrowScanner** %this.addr %18 = call i32 @"pre_++.21"(i32* %i) store i32 %18, i32* %tmp.this4 %19 = load i32, i32* %tmp.this4 - %20 = call i8 @peekChar.369(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %17, i32 %19) + %20 = call i8 @peekChar.476(%SparrowScanner* %17, i32 %19) store i8 %20, i8* %c br label %while_step @@ -14226,11 +17141,11 @@ if_block5: ; preds = %while_end br i1 %23, label %if_then6, label %if_end7 if_then6: ; preds = %if_block5 - %24 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr + %24 = load %SparrowScanner*, %SparrowScanner** %this.addr store i1 (i8)* @isOpCharDot, i1 (i8)** %funptr8 %25 = bitcast i1 (i8)** %funptr8 to %"FunctionPtr1[Bool, Char]"* %26 = load %"FunctionPtr1[Bool, Char]", %"FunctionPtr1[Bool, Char]"* %25 - call void @advanceAndCapture(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %24, %"FunctionPtr1[Bool, Char]" %26) + call void @advanceAndCapture(%SparrowScanner* %24, %"FunctionPtr1[Bool, Char]" %26) ret i1 true if_end7: ; preds = %dumy_block9, %if_block5 @@ -14241,9 +17156,9 @@ dumy_block9: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal void @advanceAndCapture(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"FunctionPtr1[Bool, Char]" %pred) #4 { - %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* - store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr +define internal void @advanceAndCapture(%SparrowScanner* %this, %"FunctionPtr1[Bool, Char]" %pred) #4 { + %this.addr = alloca %SparrowScanner* + store %SparrowScanner* %this, %SparrowScanner** %this.addr %pred.addr = alloca %"FunctionPtr1[Bool, Char]" store %"FunctionPtr1[Bool, Char]" %pred, %"FunctionPtr1[Bool, Char]"* %pred.addr br label %code @@ -14252,35 +17167,35 @@ code: ; preds = %0 br label %while_block while_block: ; preds = %while_step, %code - %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 1 - %3 = call i1 @"pre_!!.338"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %2) + %1 = load %SparrowScanner*, %SparrowScanner** %this.addr + %2 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %1, i32 0, i32 2 + %3 = call i1 @"pre_!!.442"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %2) br i1 %3, label %cond.true, label %cond.false while_body: ; preds = %cond.end - %4 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %5 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %4, i32 0, i32 2 + %4 = load %SparrowScanner*, %SparrowScanner** %this.addr + %5 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %4, i32 0, i32 3 %6 = getelementptr inbounds %Token, %Token* %5, i32 0, i32 2 - %7 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %8 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %7, i32 0, i32 1 - %9 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %8) - call void @"+=.366"(%String* %6, i8 %9) + %7 = load %SparrowScanner*, %SparrowScanner** %this.addr + %8 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %7, i32 0, i32 2 + %9 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %8) + call void @"+=.473"(%String* %6, i8 %9) br label %while_step while_step: ; preds = %while_body - %10 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %11 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %10, i32 0, i32 1 - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %11) + %10 = load %SparrowScanner*, %SparrowScanner** %this.addr + %11 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %10, i32 0, i32 2 + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %11) br label %while_block while_end: ; preds = %cond.end ret void cond.true: ; preds = %while_block - %12 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %13 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %12, i32 0, i32 1 - %14 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %13) - %15 = call i1 @"().368"(%"FunctionPtr1[Bool, Char]"* %pred.addr, i8 %14) + %12 = load %SparrowScanner*, %SparrowScanner** %this.addr + %13 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %12, i32 0, i32 2 + %14 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %13) + %15 = call i1 @"().475"(%"FunctionPtr1[Bool, Char]"* %pred.addr, i8 %14) br label %cond.end cond.false: ; preds = %while_block @@ -14292,7 +17207,7 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: inlinehint nounwind -define internal i1 @"().368"(%"FunctionPtr1[Bool, Char]"* %this, i8 %p1) #4 { +define internal i1 @"().475"(%"FunctionPtr1[Bool, Char]"* %this, i8 %p1) #4 { %this.addr = alloca %"FunctionPtr1[Bool, Char]"* store %"FunctionPtr1[Bool, Char]"* %this, %"FunctionPtr1[Bool, Char]"** %this.addr %p1.addr = alloca i8 @@ -14309,19 +17224,19 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i8 @peekChar.369(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, i32 %n) #4 { - %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* - store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr +define internal i8 @peekChar.476(%SparrowScanner* %this, i32 %n) #4 { + %this.addr = alloca %SparrowScanner* + store %SparrowScanner* %this, %SparrowScanner** %this.addr %n.addr = alloca i32 store i32 %n, i32* %n.addr br label %code code: ; preds = %0 - %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 1 - %3 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]", %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %2, i32 0, i32 0 + %1 = load %SparrowScanner*, %SparrowScanner** %this.addr + %2 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %1, i32 0, i32 2 + %3 = getelementptr inbounds %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]", %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %2, i32 0, i32 0 %4 = load i32, i32* %n.addr - %5 = call i8 @peek(%"RangeWithLookahead[_CharSource]"* %3, i32 %4) + %5 = call i8 @peek(%"RangeWithLookahead[BufferedCharSourceRange]"* %3, i32 %4) ret i8 %5 } @@ -14344,11 +17259,11 @@ code: ; preds = %0 declare i32 @isalpha(i32) ; Function Attrs: noinline nounwind -define void @parseIdentifer(%TokenType* sret %_result, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this) #5 { +define void @parseIdentifer(%TokenType* sret %_result, %SparrowScanner* %this) #5 { %_result.addr = alloca %TokenType* store %TokenType* %_result, %TokenType** %_result.addr - %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* - store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr + %this.addr = alloca %SparrowScanner* + store %SparrowScanner* %this, %SparrowScanner** %this.addr %allowSymbolChars = alloca i1 %firstDot = alloca i1 %ch = alloca i8 @@ -14379,41 +17294,41 @@ define void @parseIdentifer(%TokenType* sret %_result, %"SparrowScanner[_CharSou code: ; preds = %0 store i1 false, i1* %allowSymbolChars - %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 2 + %1 = load %SparrowScanner*, %SparrowScanner** %this.addr + %2 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %1, i32 0, i32 3 %3 = getelementptr inbounds %Token, %Token* %2, i32 0, i32 2 - %4 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %5 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %4, i32 0, i32 1 - %6 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5) - call void @"+=.366"(%String* %3, i8 %6) - %7 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %8 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %7, i32 0, i32 1 - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %8) + %4 = load %SparrowScanner*, %SparrowScanner** %this.addr + %5 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %4, i32 0, i32 2 + %6 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %5) + call void @"+=.473"(%String* %3, i8 %6) + %7 = load %SparrowScanner*, %SparrowScanner** %this.addr + %8 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %7, i32 0, i32 2 + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %8) store i1 true, i1* %firstDot br label %while_block while_block: ; preds = %while_step, %code - %9 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %10 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %9, i32 0, i32 1 - %11 = call i1 @"pre_!!.338"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %10) + %9 = load %SparrowScanner*, %SparrowScanner** %this.addr + %10 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %9, i32 0, i32 2 + %11 = call i1 @"pre_!!.442"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %10) br i1 %11, label %while_body, label %while_end while_body: ; preds = %while_block - %12 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %13 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %12, i32 0, i32 1 - %14 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %13) + %12 = load %SparrowScanner*, %SparrowScanner** %this.addr + %13 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %12, i32 0, i32 2 + %14 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %13) store i8 %14, i8* %ch br label %if_block while_step: ; preds = %if_end7 - %15 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %16 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %15, i32 0, i32 1 - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %16) + %15 = load %SparrowScanner*, %SparrowScanner** %this.addr + %16 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %15, i32 0, i32 2 + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %16) br label %while_block while_end: ; preds = %if_then, %while_block - %17 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %18 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %17, i32 0, i32 2 + %17 = load %SparrowScanner*, %SparrowScanner** %this.addr + %18 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %17, i32 0, i32 3 %19 = getelementptr inbounds %Token, %Token* %18, i32 0, i32 2 %20 = call %StringRef @asStringRef(%String* %19) call void @ctor.56(%StringRef* %data, %StringRef %20) @@ -14429,11 +17344,11 @@ if_then: ; preds = %cond.end br label %while_end if_end: ; preds = %dumy_block, %cond.end - %24 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %25 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %24, i32 0, i32 2 + %24 = load %SparrowScanner*, %SparrowScanner** %this.addr + %25 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %24, i32 0, i32 3 %26 = getelementptr inbounds %Token, %Token* %25, i32 0, i32 2 %27 = load i8, i8* %ch - call void @"+=.366"(%String* %26, i8 %27) + call void @"+=.473"(%String* %26, i8 %27) br label %if_block5 cond.true: ; preds = %cond.end3 @@ -14470,17 +17385,17 @@ if_block5: ; preds = %if_end br i1 %34, label %cond.true8, label %cond.false9 if_then6: ; preds = %cond.end10 - %35 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %36 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %35, i32 0, i32 1 - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %36) + %35 = load %SparrowScanner*, %SparrowScanner** %this.addr + %36 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %35, i32 0, i32 2 + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %36) br label %if_block12 if_end7: ; preds = %if_end14, %cond.end10 br label %while_step cond.true8: ; preds = %if_block5 - %37 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %38 = call i8 @peekChar(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %37) + %37 = load %SparrowScanner*, %SparrowScanner** %this.addr + %38 = call i8 @peekChar(%SparrowScanner* %37) %39 = call i1 @isOpCharDot(i8 %38) br label %cond.end10 @@ -14492,13 +17407,13 @@ cond.end10: ; preds = %cond.false9, %cond. br i1 %cond.res11, label %if_then6, label %if_end7 if_block12: ; preds = %if_then6 - %40 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %41 = call i1 @parseOperator(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %40) + %40 = load %SparrowScanner*, %SparrowScanner** %this.addr + %41 = call i1 @parseOperator(%SparrowScanner* %40) br i1 %41, label %if_then13, label %if_end14 if_then13: ; preds = %if_block12 %42 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %42, i32 36) + call void @ctor.417(%TokenType* %42, i32 36) ret void if_end14: ; preds = %dumy_block15, %if_block12 @@ -14511,15 +17426,15 @@ if_block16: ; preds = %while_end %43 = load %StringRef, %StringRef* %data %44 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 0 %45 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 1 - store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.17, i32 0, i32 0), i8** %44 - store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.17, i32 0, i32 5), i8** %45 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.14, i32 0, i32 0), i8** %44 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.14, i32 0, i32 5), i8** %45 %46 = load %StringRef, %StringRef* %tmp.StringRef %47 = call i1 @"=="(%StringRef %43, %StringRef %46) br i1 %47, label %if_then17, label %if_else if_then17: ; preds = %if_block16 %48 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %48, i32 10) + call void @ctor.417(%TokenType* %48, i32 10) ret void if_else: ; preds = %if_block16 @@ -14535,15 +17450,15 @@ if_block20: ; preds = %if_else %49 = load %StringRef, %StringRef* %data %50 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef24, i32 0, i32 0 %51 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef24, i32 0, i32 1 - store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.18, i32 0, i32 0), i8** %50 - store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.18, i32 0, i32 5), i8** %51 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.15, i32 0, i32 0), i8** %50 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.15, i32 0, i32 5), i8** %51 %52 = load %StringRef, %StringRef* %tmp.StringRef24 %53 = call i1 @"=="(%StringRef %49, %StringRef %52) br i1 %53, label %if_then21, label %if_else22 if_then21: ; preds = %if_block20 %54 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %54, i32 11) + call void @ctor.417(%TokenType* %54, i32 11) ret void if_else22: ; preds = %if_block20 @@ -14559,15 +17474,15 @@ if_block26: ; preds = %if_else22 %55 = load %StringRef, %StringRef* %data %56 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef30, i32 0, i32 0 %57 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef30, i32 0, i32 1 - store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.19, i32 0, i32 0), i8** %56 - store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.19, i32 0, i32 7), i8** %57 + store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.16, i32 0, i32 0), i8** %56 + store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.16, i32 0, i32 7), i8** %57 %58 = load %StringRef, %StringRef* %tmp.StringRef30 %59 = call i1 @"=="(%StringRef %55, %StringRef %58) br i1 %59, label %if_then27, label %if_else28 if_then27: ; preds = %if_block26 %60 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %60, i32 4) + call void @ctor.417(%TokenType* %60, i32 4) ret void if_else28: ; preds = %if_block26 @@ -14583,15 +17498,15 @@ if_block32: ; preds = %if_else28 %61 = load %StringRef, %StringRef* %data %62 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef36, i32 0, i32 0 %63 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef36, i32 0, i32 1 - store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.20, i32 0, i32 0), i8** %62 - store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.20, i32 0, i32 8), i8** %63 + store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.17, i32 0, i32 0), i8** %62 + store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.17, i32 0, i32 8), i8** %63 %64 = load %StringRef, %StringRef* %tmp.StringRef36 %65 = call i1 @"=="(%StringRef %61, %StringRef %64) br i1 %65, label %if_then33, label %if_else34 if_then33: ; preds = %if_block32 %66 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %66, i32 12) + call void @ctor.417(%TokenType* %66, i32 12) ret void if_else34: ; preds = %if_block32 @@ -14607,15 +17522,15 @@ if_block38: ; preds = %if_else34 %67 = load %StringRef, %StringRef* %data %68 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef42, i32 0, i32 0 %69 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef42, i32 0, i32 1 - store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.21, i32 0, i32 0), i8** %68 - store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.21, i32 0, i32 8), i8** %69 + store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.18, i32 0, i32 0), i8** %68 + store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.18, i32 0, i32 8), i8** %69 %70 = load %StringRef, %StringRef* %tmp.StringRef42 %71 = call i1 @"=="(%StringRef %67, %StringRef %70) br i1 %71, label %if_then39, label %if_else40 if_then39: ; preds = %if_block38 %72 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %72, i32 5) + call void @ctor.417(%TokenType* %72, i32 5) ret void if_else40: ; preds = %if_block38 @@ -14631,15 +17546,15 @@ if_block44: ; preds = %if_else40 %73 = load %StringRef, %StringRef* %data %74 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef48, i32 0, i32 0 %75 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef48, i32 0, i32 1 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.22, i32 0, i32 0), i8** %74 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.22, i32 0, i32 3), i8** %75 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.19, i32 0, i32 0), i8** %74 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.19, i32 0, i32 3), i8** %75 %76 = load %StringRef, %StringRef* %tmp.StringRef48 %77 = call i1 @"=="(%StringRef %73, %StringRef %76) br i1 %77, label %if_then45, label %if_else46 if_then45: ; preds = %if_block44 %78 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %78, i32 6) + call void @ctor.417(%TokenType* %78, i32 6) ret void if_else46: ; preds = %if_block44 @@ -14655,15 +17570,15 @@ if_block50: ; preds = %if_else46 %79 = load %StringRef, %StringRef* %data %80 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef54, i32 0, i32 0 %81 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef54, i32 0, i32 1 - store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @str.23, i32 0, i32 0), i8** %80 - store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @str.23, i32 0, i32 2), i8** %81 + store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @str.20, i32 0, i32 0), i8** %80 + store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @str.20, i32 0, i32 2), i8** %81 %82 = load %StringRef, %StringRef* %tmp.StringRef54 %83 = call i1 @"=="(%StringRef %79, %StringRef %82) br i1 %83, label %if_then51, label %if_else52 if_then51: ; preds = %if_block50 %84 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %84, i32 15) + call void @ctor.417(%TokenType* %84, i32 15) ret void if_else52: ; preds = %if_block50 @@ -14679,15 +17594,15 @@ if_block56: ; preds = %if_else52 %85 = load %StringRef, %StringRef* %data %86 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef60, i32 0, i32 0 %87 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef60, i32 0, i32 1 - store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str.24, i32 0, i32 0), i8** %86 - store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str.24, i32 0, i32 4), i8** %87 + store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str.21, i32 0, i32 0), i8** %86 + store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str.21, i32 0, i32 4), i8** %87 %88 = load %StringRef, %StringRef* %tmp.StringRef60 %89 = call i1 @"=="(%StringRef %85, %StringRef %88) br i1 %89, label %if_then57, label %if_else58 if_then57: ; preds = %if_block56 %90 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %90, i32 23) + call void @ctor.417(%TokenType* %90, i32 23) ret void if_else58: ; preds = %if_block56 @@ -14703,15 +17618,15 @@ if_block62: ; preds = %if_else58 %91 = load %StringRef, %StringRef* %data %92 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef66, i32 0, i32 0 %93 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef66, i32 0, i32 1 - store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.25, i32 0, i32 0), i8** %92 - store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.25, i32 0, i32 5), i8** %93 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.22, i32 0, i32 0), i8** %92 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.22, i32 0, i32 5), i8** %93 %94 = load %StringRef, %StringRef* %tmp.StringRef66 %95 = call i1 @"=="(%StringRef %91, %StringRef %94) br i1 %95, label %if_then63, label %if_else64 if_then63: ; preds = %if_block62 %96 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %96, i32 20) + call void @ctor.417(%TokenType* %96, i32 20) ret void if_else64: ; preds = %if_block62 @@ -14727,15 +17642,15 @@ if_block68: ; preds = %if_else64 %97 = load %StringRef, %StringRef* %data %98 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef72, i32 0, i32 0 %99 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef72, i32 0, i32 1 - store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.26, i32 0, i32 0), i8** %98 - store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.26, i32 0, i32 7), i8** %99 + store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.23, i32 0, i32 0), i8** %98 + store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.23, i32 0, i32 7), i8** %99 %100 = load %StringRef, %StringRef* %tmp.StringRef72 %101 = call i1 @"=="(%StringRef %97, %StringRef %100) br i1 %101, label %if_then69, label %if_else70 if_then69: ; preds = %if_block68 %102 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %102, i32 13) + call void @ctor.417(%TokenType* %102, i32 13) ret void if_else70: ; preds = %if_block68 @@ -14751,15 +17666,15 @@ if_block74: ; preds = %if_else70 %103 = load %StringRef, %StringRef* %data %104 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef78, i32 0, i32 0 %105 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef78, i32 0, i32 1 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.27, i32 0, i32 0), i8** %104 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.27, i32 0, i32 3), i8** %105 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.24, i32 0, i32 0), i8** %104 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.24, i32 0, i32 3), i8** %105 %106 = load %StringRef, %StringRef* %tmp.StringRef78 %107 = call i1 @"=="(%StringRef %103, %StringRef %106) br i1 %107, label %if_then75, label %if_else76 if_then75: ; preds = %if_block74 %108 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %108, i32 14) + call void @ctor.417(%TokenType* %108, i32 14) ret void if_else76: ; preds = %if_block74 @@ -14775,15 +17690,15 @@ if_block80: ; preds = %if_else76 %109 = load %StringRef, %StringRef* %data %110 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef84, i32 0, i32 0 %111 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef84, i32 0, i32 1 - store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.28, i32 0, i32 0), i8** %110 - store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.28, i32 0, i32 6), i8** %111 + store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.25, i32 0, i32 0), i8** %110 + store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.25, i32 0, i32 6), i8** %111 %112 = load %StringRef, %StringRef* %tmp.StringRef84 %113 = call i1 @"=="(%StringRef %109, %StringRef %112) br i1 %113, label %if_then81, label %if_else82 if_then81: ; preds = %if_block80 %114 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %114, i32 3) + call void @ctor.417(%TokenType* %114, i32 3) ret void if_else82: ; preds = %if_block80 @@ -14799,15 +17714,15 @@ if_block86: ; preds = %if_else82 %115 = load %StringRef, %StringRef* %data %116 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef90, i32 0, i32 0 %117 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef90, i32 0, i32 1 - store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.29, i32 0, i32 0), i8** %116 - store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.29, i32 0, i32 6), i8** %117 + store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.26, i32 0, i32 0), i8** %116 + store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.26, i32 0, i32 6), i8** %117 %118 = load %StringRef, %StringRef* %tmp.StringRef90 %119 = call i1 @"=="(%StringRef %115, %StringRef %118) br i1 %119, label %if_then87, label %if_else88 if_then87: ; preds = %if_block86 %120 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %120, i32 2) + call void @ctor.417(%TokenType* %120, i32 2) ret void if_else88: ; preds = %if_block86 @@ -14823,15 +17738,15 @@ if_block92: ; preds = %if_else88 %121 = load %StringRef, %StringRef* %data %122 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef96, i32 0, i32 0 %123 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef96, i32 0, i32 1 - store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str.30, i32 0, i32 0), i8** %122 - store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str.30, i32 0, i32 4), i8** %123 + store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str.27, i32 0, i32 0), i8** %122 + store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str.27, i32 0, i32 4), i8** %123 %124 = load %StringRef, %StringRef* %tmp.StringRef96 %125 = call i1 @"=="(%StringRef %121, %StringRef %124) br i1 %125, label %if_then93, label %if_else94 if_then93: ; preds = %if_block92 %126 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %126, i32 21) + call void @ctor.417(%TokenType* %126, i32 21) ret void if_else94: ; preds = %if_block92 @@ -14847,15 +17762,15 @@ if_block98: ; preds = %if_else94 %127 = load %StringRef, %StringRef* %data %128 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef102, i32 0, i32 0 %129 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef102, i32 0, i32 1 - store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.31, i32 0, i32 0), i8** %128 - store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.31, i32 0, i32 7), i8** %129 + store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.28, i32 0, i32 0), i8** %128 + store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.28, i32 0, i32 7), i8** %129 %130 = load %StringRef, %StringRef* %tmp.StringRef102 %131 = call i1 @"=="(%StringRef %127, %StringRef %130) br i1 %131, label %if_then99, label %if_else100 if_then99: ; preds = %if_block98 %132 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %132, i32 7) + call void @ctor.417(%TokenType* %132, i32 7) ret void if_else100: ; preds = %if_block98 @@ -14871,15 +17786,15 @@ if_block104: ; preds = %if_else100 %133 = load %StringRef, %StringRef* %data %134 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef108, i32 0, i32 0 %135 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef108, i32 0, i32 1 - store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.32, i32 0, i32 0), i8** %134 - store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.32, i32 0, i32 6), i8** %135 + store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.29, i32 0, i32 0), i8** %134 + store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.29, i32 0, i32 6), i8** %135 %136 = load %StringRef, %StringRef* %tmp.StringRef108 %137 = call i1 @"=="(%StringRef %133, %StringRef %136) br i1 %137, label %if_then105, label %if_else106 if_then105: ; preds = %if_block104 %138 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %138, i32 16) + call void @ctor.417(%TokenType* %138, i32 16) ret void if_else106: ; preds = %if_block104 @@ -14895,15 +17810,15 @@ if_block110: ; preds = %if_else106 %139 = load %StringRef, %StringRef* %data %140 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef114, i32 0, i32 0 %141 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef114, i32 0, i32 1 - store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.33, i32 0, i32 0), i8** %140 - store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.33, i32 0, i32 5), i8** %141 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.30, i32 0, i32 0), i8** %140 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.30, i32 0, i32 5), i8** %141 %142 = load %StringRef, %StringRef* %tmp.StringRef114 %143 = call i1 @"=="(%StringRef %139, %StringRef %142) br i1 %143, label %if_then111, label %if_else112 if_then111: ; preds = %if_block110 %144 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %144, i32 17) + call void @ctor.417(%TokenType* %144, i32 17) ret void if_else112: ; preds = %if_block110 @@ -14919,15 +17834,15 @@ if_block116: ; preds = %if_else112 %145 = load %StringRef, %StringRef* %data %146 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef120, i32 0, i32 0 %147 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef120, i32 0, i32 1 - store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str.34, i32 0, i32 0), i8** %146 - store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str.34, i32 0, i32 4), i8** %147 + store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str.31, i32 0, i32 0), i8** %146 + store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str.31, i32 0, i32 4), i8** %147 %148 = load %StringRef, %StringRef* %tmp.StringRef120 %149 = call i1 @"=="(%StringRef %145, %StringRef %148) br i1 %149, label %if_then117, label %if_else118 if_then117: ; preds = %if_block116 %150 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %150, i32 22) + call void @ctor.417(%TokenType* %150, i32 22) ret void if_else118: ; preds = %if_block116 @@ -14943,15 +17858,15 @@ if_block122: ; preds = %if_else118 %151 = load %StringRef, %StringRef* %data %152 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef126, i32 0, i32 0 %153 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef126, i32 0, i32 1 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.35, i32 0, i32 0), i8** %152 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.35, i32 0, i32 3), i8** %153 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.32, i32 0, i32 0), i8** %152 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.32, i32 0, i32 3), i8** %153 %154 = load %StringRef, %StringRef* %tmp.StringRef126 %155 = call i1 @"=="(%StringRef %151, %StringRef %154) br i1 %155, label %if_then123, label %if_else124 if_then123: ; preds = %if_block122 %156 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %156, i32 18) + call void @ctor.417(%TokenType* %156, i32 18) ret void if_else124: ; preds = %if_block122 @@ -14967,15 +17882,15 @@ if_block128: ; preds = %if_else124 %157 = load %StringRef, %StringRef* %data %158 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef132, i32 0, i32 0 %159 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef132, i32 0, i32 1 - store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.36, i32 0, i32 0), i8** %158 - store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.36, i32 0, i32 5), i8** %159 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.33, i32 0, i32 0), i8** %158 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.33, i32 0, i32 5), i8** %159 %160 = load %StringRef, %StringRef* %tmp.StringRef132 %161 = call i1 @"=="(%StringRef %157, %StringRef %160) br i1 %161, label %if_then129, label %if_else130 if_then129: ; preds = %if_block128 %162 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %162, i32 8) + call void @ctor.417(%TokenType* %162, i32 8) ret void if_else130: ; preds = %if_block128 @@ -14991,15 +17906,15 @@ if_block134: ; preds = %if_else130 %163 = load %StringRef, %StringRef* %data %164 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef138, i32 0, i32 0 %165 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef138, i32 0, i32 1 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.37, i32 0, i32 0), i8** %164 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.37, i32 0, i32 3), i8** %165 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.34, i32 0, i32 0), i8** %164 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.34, i32 0, i32 3), i8** %165 %166 = load %StringRef, %StringRef* %tmp.StringRef138 %167 = call i1 @"=="(%StringRef %163, %StringRef %166) br i1 %167, label %if_then135, label %if_else136 if_then135: ; preds = %if_block134 %168 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %168, i32 9) + call void @ctor.417(%TokenType* %168, i32 9) ret void if_else136: ; preds = %if_block134 @@ -15015,20 +17930,20 @@ if_block140: ; preds = %if_else136 %169 = load %StringRef, %StringRef* %data %170 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef144, i32 0, i32 0 %171 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef144, i32 0, i32 1 - store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.38, i32 0, i32 0), i8** %170 - store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.38, i32 0, i32 5), i8** %171 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.35, i32 0, i32 0), i8** %170 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.35, i32 0, i32 5), i8** %171 %172 = load %StringRef, %StringRef* %tmp.StringRef144 %173 = call i1 @"=="(%StringRef %169, %StringRef %172) br i1 %173, label %if_then141, label %if_else142 if_then141: ; preds = %if_block140 %174 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %174, i32 19) + call void @ctor.417(%TokenType* %174, i32 19) ret void if_else142: ; preds = %if_block140 %175 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %175, i32 36) + call void @ctor.417(%TokenType* %175, i32 36) ret void if_end143: ; preds = %dumy_block146, %dumy_block145 @@ -15042,11 +17957,11 @@ dumy_block146: ; No predecessors! } ; Function Attrs: noinline nounwind -define void @parseNumeric(%TokenType* sret %_result, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this) #5 { +define void @parseNumeric(%TokenType* sret %_result, %SparrowScanner* %this) #5 { %_result.addr = alloca %TokenType* store %TokenType* %_result, %TokenType** %_result.addr - %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* - store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr + %this.addr = alloca %SparrowScanner* + store %SparrowScanner* %this, %SparrowScanner** %this.addr %isLong = alloca i1 %isUnsigned = alloca i1 %isFloating = alloca i1 @@ -15081,18 +17996,18 @@ code: ; preds = %0 store i1 false, i1* %isUnsigned store i1 false, i1* %isFloating store i32 0, i32* %type - %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 1 - %3 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %2) + %1 = load %SparrowScanner*, %SparrowScanner** %this.addr + %2 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %1, i32 0, i32 2 + %3 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %2) store i8 %3, i8* %ch - %4 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %5 = call i8 @peekChar(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %4) + %4 = load %SparrowScanner*, %SparrowScanner** %this.addr + %5 = call i8 @peekChar(%SparrowScanner* %4) %6 = call i8 @toLower(i8 %5) store i8 %6, i8* %ch2 - %7 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr + %7 = load %SparrowScanner*, %SparrowScanner** %this.addr store i32 2, i32* %tmp.this %8 = load i32, i32* %tmp.this - %9 = call i8 @peekChar.369(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %7, i32 %8) + %9 = call i8 @peekChar.476(%SparrowScanner* %7, i32 %8) %10 = call i8 @toLower(i8 %9) store i8 %10, i8* %ch3 br label %if_block @@ -15103,21 +18018,21 @@ if_block: ; preds = %code br i1 %12, label %cond.true, label %cond.false if_then: ; preds = %cond.end - %13 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %14 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %13, i32 0, i32 1 + %13 = load %SparrowScanner*, %SparrowScanner** %this.addr + %14 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %13, i32 0, i32 2 store i64 2, i64* %tmp.this1 %15 = load i64, i64* %tmp.this1 - call void @advance.362(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %14, i64 %15) - %16 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %17 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %16, i32 0, i32 1 + call void @advance.469(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %14, i64 %15) + %16 = load %SparrowScanner*, %SparrowScanner** %this.addr + %17 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %16, i32 0, i32 2 store i64 16, i64* %tmp.this2 %18 = load i64, i64* %tmp.this2 - %19 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %20 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %19, i32 0, i32 2 + %19 = load %SparrowScanner*, %SparrowScanner** %this.addr + %20 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %19, i32 0, i32 3 %21 = getelementptr inbounds %Token, %Token* %20, i32 0, i32 2 - %22 = call i64 @consumeDigits(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %17, i64 %18, %String* %21) - %23 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %24 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %23, i32 0, i32 2 + %22 = call i64 @consumeDigits(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %17, i64 %18, %String* %21) + %23 = load %SparrowScanner*, %SparrowScanner** %this.addr + %24 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %23, i32 0, i32 3 %25 = getelementptr inbounds %Token, %Token* %24, i32 0, i32 3 store i64 %22, i64* %25 br label %if_end @@ -15146,21 +18061,21 @@ if_block3: ; preds = %if_else br i1 %29, label %cond.true7, label %cond.false8 if_then4: ; preds = %cond.end9 - %30 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %31 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %30, i32 0, i32 1 + %30 = load %SparrowScanner*, %SparrowScanner** %this.addr + %31 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %30, i32 0, i32 2 store i64 2, i64* %tmp.this11 %32 = load i64, i64* %tmp.this11 - call void @advance.362(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %31, i64 %32) - %33 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %34 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %33, i32 0, i32 1 + call void @advance.469(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %31, i64 %32) + %33 = load %SparrowScanner*, %SparrowScanner** %this.addr + %34 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %33, i32 0, i32 2 store i64 2, i64* %tmp.this12 %35 = load i64, i64* %tmp.this12 - %36 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %37 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %36, i32 0, i32 2 + %36 = load %SparrowScanner*, %SparrowScanner** %this.addr + %37 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %36, i32 0, i32 3 %38 = getelementptr inbounds %Token, %Token* %37, i32 0, i32 2 - %39 = call i64 @consumeDigits(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %34, i64 %35, %String* %38) - %40 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %41 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %40, i32 0, i32 2 + %39 = call i64 @consumeDigits(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %34, i64 %35, %String* %38) + %40 = load %SparrowScanner*, %SparrowScanner** %this.addr + %41 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %40, i32 0, i32 3 %42 = getelementptr inbounds %Token, %Token* %41, i32 0, i32 3 store i64 %39, i64* %42 br label %if_end6 @@ -15189,36 +18104,36 @@ if_block13: ; preds = %if_else5 br i1 %46, label %cond.true17, label %cond.false18 if_then14: ; preds = %cond.end19 - %47 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %48 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %47, i32 0, i32 1 + %47 = load %SparrowScanner*, %SparrowScanner** %this.addr + %48 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %47, i32 0, i32 2 store i64 1, i64* %tmp.this21 %49 = load i64, i64* %tmp.this21 - call void @advance.362(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %48, i64 %49) - %50 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %51 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %50, i32 0, i32 1 + call void @advance.469(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %48, i64 %49) + %50 = load %SparrowScanner*, %SparrowScanner** %this.addr + %51 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %50, i32 0, i32 2 store i64 8, i64* %tmp.this22 %52 = load i64, i64* %tmp.this22 - %53 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %54 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %53, i32 0, i32 2 + %53 = load %SparrowScanner*, %SparrowScanner** %this.addr + %54 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %53, i32 0, i32 3 %55 = getelementptr inbounds %Token, %Token* %54, i32 0, i32 2 - %56 = call i64 @consumeDigits(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %51, i64 %52, %String* %55) - %57 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %58 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %57, i32 0, i32 2 + %56 = call i64 @consumeDigits(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %51, i64 %52, %String* %55) + %57 = load %SparrowScanner*, %SparrowScanner** %this.addr + %58 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %57, i32 0, i32 3 %59 = getelementptr inbounds %Token, %Token* %58, i32 0, i32 3 store i64 %56, i64* %59 br label %if_end16 if_else15: ; preds = %cond.end19 - %60 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %61 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %60, i32 0, i32 1 + %60 = load %SparrowScanner*, %SparrowScanner** %this.addr + %61 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %60, i32 0, i32 2 store i64 10, i64* %tmp.this23 %62 = load i64, i64* %tmp.this23 - %63 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %64 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %63, i32 0, i32 2 + %63 = load %SparrowScanner*, %SparrowScanner** %this.addr + %64 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %63, i32 0, i32 3 %65 = getelementptr inbounds %Token, %Token* %64, i32 0, i32 2 - %66 = call i64 @consumeDigits(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %61, i64 %62, %String* %65) - %67 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %68 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %67, i32 0, i32 2 + %66 = call i64 @consumeDigits(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %61, i64 %62, %String* %65) + %67 = load %SparrowScanner*, %SparrowScanner** %this.addr + %68 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %67, i32 0, i32 3 %69 = getelementptr inbounds %Token, %Token* %68, i32 0, i32 3 store i64 %66, i64* %69 br label %if_block24 @@ -15239,15 +18154,15 @@ cond.end19: ; preds = %cond.false18, %cond br i1 %cond.res20, label %if_then14, label %if_else15 if_block24: ; preds = %if_else15 - %72 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %73 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %72, i32 0, i32 1 - %74 = call i1 @"pre_!!.338"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %73) + %72 = load %SparrowScanner*, %SparrowScanner** %this.addr + %73 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %72, i32 0, i32 2 + %74 = call i1 @"pre_!!.442"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %73) br i1 %74, label %if_then25, label %if_end26 if_then25: ; preds = %if_block24 - %75 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %76 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %75, i32 0, i32 1 - %77 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %76) + %75 = load %SparrowScanner*, %SparrowScanner** %this.addr + %76 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %75, i32 0, i32 2 + %77 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %76) %78 = call i8 @toLower(i8 %77) store i8 %78, i8* %ch br label %if_block27 @@ -15304,8 +18219,8 @@ cond.end38: ; preds = %cond.false37, %cond br i1 %cond.res43, label %cond.true33, label %cond.false34 cond.true39: ; preds = %if_block27 - %87 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %88 = call i8 @peekChar(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %87) + %87 = load %SparrowScanner*, %SparrowScanner** %this.addr + %88 = call i8 @peekChar(%SparrowScanner* %87) %89 = call i1 @isOpCharDot(i8 %88) %90 = xor i1 true, %89 br label %cond.end41 @@ -15323,28 +18238,28 @@ if_block46: ; preds = %if_then28 br i1 %92, label %if_then47, label %if_end48 if_then47: ; preds = %if_block46 - %93 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - call void @advanceAndCapture1(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %93) - %94 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr + %93 = load %SparrowScanner*, %SparrowScanner** %this.addr + call void @advanceAndCapture1(%SparrowScanner* %93) + %94 = load %SparrowScanner*, %SparrowScanner** %this.addr store i1 (i8)* @isDigit, i1 (i8)** %funptr %95 = bitcast i1 (i8)** %funptr to %"FunctionPtr1[Bool, Char]"* %96 = load %"FunctionPtr1[Bool, Char]", %"FunctionPtr1[Bool, Char]"* %95 - call void @advanceAndCaptureDigit(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %94, %"FunctionPtr1[Bool, Char]" %96) + call void @advanceAndCaptureDigit(%SparrowScanner* %94, %"FunctionPtr1[Bool, Char]" %96) br label %if_end48 if_end48: ; preds = %if_then47, %if_block46 br label %if_block49 if_block49: ; preds = %if_end48 - %97 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %98 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %97, i32 0, i32 1 - %99 = call i1 @"pre_!!.338"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %98) + %97 = load %SparrowScanner*, %SparrowScanner** %this.addr + %98 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %97, i32 0, i32 2 + %99 = call i1 @"pre_!!.442"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %98) br i1 %99, label %if_then50, label %if_end51 if_then50: ; preds = %if_block49 - %100 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %101 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %100, i32 0, i32 1 - %102 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %101) + %100 = load %SparrowScanner*, %SparrowScanner** %this.addr + %101 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %100, i32 0, i32 2 + %102 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %101) %103 = call i8 @toLower(i8 %102) store i8 %103, i8* %ch br label %if_block52 @@ -15358,29 +18273,29 @@ if_block52: ; preds = %if_then50 br i1 %105, label %if_then53, label %if_end54 if_then53: ; preds = %if_block52 - %106 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - call void @advanceAndCapture1(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %106) - %107 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr + %106 = load %SparrowScanner*, %SparrowScanner** %this.addr + call void @advanceAndCapture1(%SparrowScanner* %106) + %107 = load %SparrowScanner*, %SparrowScanner** %this.addr store i1 (i8)* @isDigit, i1 (i8)** %funptr55 %108 = bitcast i1 (i8)** %funptr55 to %"FunctionPtr1[Bool, Char]"* %109 = load %"FunctionPtr1[Bool, Char]", %"FunctionPtr1[Bool, Char]"* %108 - call void @advanceAndCaptureDigit(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %107, %"FunctionPtr1[Bool, Char]" %109) + call void @advanceAndCaptureDigit(%SparrowScanner* %107, %"FunctionPtr1[Bool, Char]" %109) br label %if_end54 if_end54: ; preds = %if_then53, %if_block52 br label %if_end51 if_block56: ; preds = %if_end51 - %110 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %111 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %110, i32 0, i32 1 - %112 = call i1 @"pre_!!.338"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %111) + %110 = load %SparrowScanner*, %SparrowScanner** %this.addr + %111 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %110, i32 0, i32 2 + %112 = call i1 @"pre_!!.442"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %111) br i1 %112, label %if_then57, label %if_end58 if_then57: ; preds = %if_block56 store i1 true, i1* %isLong - %113 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %114 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %113, i32 0, i32 1 - %115 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %114) + %113 = load %SparrowScanner*, %SparrowScanner** %this.addr + %114 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %113, i32 0, i32 2 + %115 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %114) %116 = call i8 @toLower(i8 %115) store i8 %116, i8* %ch br label %if_block59 @@ -15395,9 +18310,9 @@ if_block59: ; preds = %if_then57 if_then60: ; preds = %if_block59 store i1 false, i1* %isLong - %119 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %120 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %119, i32 0, i32 1 - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %120) + %119 = load %SparrowScanner*, %SparrowScanner** %this.addr + %120 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %119, i32 0, i32 2 + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %120) br label %if_end62 if_else61: ; preds = %if_block59 @@ -15412,34 +18327,34 @@ if_block63: ; preds = %if_else61 br i1 %122, label %if_then64, label %if_end65 if_then64: ; preds = %if_block63 - %123 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %124 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %123, i32 0, i32 1 - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %124) + %123 = load %SparrowScanner*, %SparrowScanner** %this.addr + %124 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %123, i32 0, i32 2 + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %124) br label %if_end65 if_end65: ; preds = %if_then64, %if_block63 br label %if_end62 if_block66: ; preds = %if_end - %125 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %126 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %125, i32 0, i32 2 + %125 = load %SparrowScanner*, %SparrowScanner** %this.addr + %126 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %125, i32 0, i32 3 %127 = getelementptr inbounds %Token, %Token* %126, i32 0, i32 2 - %128 = call i1 @isEmpty.370(%String* %127) + %128 = call i1 @isEmpty.397(%String* %127) br i1 %128, label %if_then67, label %if_end68 if_then67: ; preds = %if_block66 - %129 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr + %129 = load %SparrowScanner*, %SparrowScanner** %this.addr %130 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 0 %131 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 1 - store i8* getelementptr inbounds ([24 x i8], [24 x i8]* @str.39, i32 0, i32 0), i8** %130 - store i8* getelementptr inbounds ([24 x i8], [24 x i8]* @str.39, i32 0, i32 23), i8** %131 + store i8* getelementptr inbounds ([24 x i8], [24 x i8]* @str.36, i32 0, i32 0), i8** %130 + store i8* getelementptr inbounds ([24 x i8], [24 x i8]* @str.36, i32 0, i32 23), i8** %131 %132 = load %StringRef, %StringRef* %tmp.StringRef store %StringRef %132, %StringRef* %"$tmpForRef" - call void @ctor.364(%String* %tmp.this69, %StringRef* %"$tmpForRef") - call void @reportError.346(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %129, %String* %tmp.this69) - call void @dtor.218(%String* %tmp.this69) + call void @ctor.471(%String* %tmp.this69, %StringRef* %"$tmpForRef") + call void @reportError(%SparrowScanner* %129, %String* %tmp.this69) + call void @dtor.261(%String* %tmp.this69) %133 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.313(%TokenType* %133, i32 0) + call void @ctor.417(%TokenType* %133, i32 0) ret void if_end68: ; preds = %dumy_block, %if_block66 @@ -15460,25 +18375,25 @@ if_end72: ; preds = %if_end82, %if_block br label %if_block87 if_block73: ; preds = %if_then71 - %136 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %137 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %136, i32 0, i32 1 - %138 = call i1 @"pre_!!.338"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %137) + %136 = load %SparrowScanner*, %SparrowScanner** %this.addr + %137 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %136, i32 0, i32 2 + %138 = call i1 @"pre_!!.442"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %137) br i1 %138, label %cond.true76, label %cond.false77 if_then74: ; preds = %cond.end78 store i1 true, i1* %isUnsigned - %139 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %140 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %139, i32 0, i32 1 - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %140) + %139 = load %SparrowScanner*, %SparrowScanner** %this.addr + %140 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %139, i32 0, i32 2 + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %140) br label %if_end75 if_end75: ; preds = %if_then74, %cond.end78 br label %if_block80 cond.true76: ; preds = %if_block73 - %141 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %142 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %141, i32 0, i32 1 - %143 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %142) + %141 = load %SparrowScanner*, %SparrowScanner** %this.addr + %142 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %141, i32 0, i32 2 + %143 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %142) %144 = call i8 @toLower(i8 %143) %145 = icmp eq i8 %144, 117 br label %cond.end78 @@ -15491,25 +18406,25 @@ cond.end78: ; preds = %cond.false77, %cond br i1 %cond.res79, label %if_then74, label %if_end75 if_block80: ; preds = %if_end75 - %146 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %147 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %146, i32 0, i32 1 - %148 = call i1 @"pre_!!.338"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %147) + %146 = load %SparrowScanner*, %SparrowScanner** %this.addr + %147 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %146, i32 0, i32 2 + %148 = call i1 @"pre_!!.442"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %147) br i1 %148, label %cond.true83, label %cond.false84 if_then81: ; preds = %cond.end85 store i1 true, i1* %isLong - %149 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %150 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %149, i32 0, i32 1 - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %150) + %149 = load %SparrowScanner*, %SparrowScanner** %this.addr + %150 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %149, i32 0, i32 2 + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %150) br label %if_end82 if_end82: ; preds = %if_then81, %cond.end85 br label %if_end72 cond.true83: ; preds = %if_block80 - %151 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %152 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %151, i32 0, i32 1 - %153 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %152) + %151 = load %SparrowScanner*, %SparrowScanner** %this.addr + %152 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %151, i32 0, i32 2 + %153 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %152) %154 = call i8 @toLower(i8 %153) %155 = icmp eq i8 %154, 108 br label %cond.end85 @@ -15526,25 +18441,25 @@ if_block87: ; preds = %if_end72 br i1 %156, label %if_then88, label %if_end89 if_then88: ; preds = %if_block87 - %157 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %158 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %157, i32 0, i32 2 + %157 = load %SparrowScanner*, %SparrowScanner** %this.addr + %158 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %157, i32 0, i32 3 %159 = getelementptr inbounds %Token, %Token* %158, i32 0, i32 2 store i8 0, i8* %tmp.this90 %160 = load i8, i8* %tmp.this90 - call void @"+=.366"(%String* %159, i8 %160) - %161 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %162 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %161, i32 0, i32 2 + call void @"+=.473"(%String* %159, i8 %160) + %161 = load %SparrowScanner*, %SparrowScanner** %this.addr + %162 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %161, i32 0, i32 3 %163 = getelementptr inbounds %Token, %Token* %162, i32 0, i32 2 %164 = call %StringRef @asStringRef(%String* %163) %165 = call double @asDouble(%StringRef %164) - %166 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %167 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %166, i32 0, i32 2 + %166 = load %SparrowScanner*, %SparrowScanner** %this.addr + %167 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %166, i32 0, i32 3 %168 = getelementptr inbounds %Token, %Token* %167, i32 0, i32 4 store double %165, double* %168 - %169 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %170 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %169, i32 0, i32 2 + %169 = load %SparrowScanner*, %SparrowScanner** %this.addr + %170 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %169, i32 0, i32 3 %171 = getelementptr inbounds %Token, %Token* %170, i32 0, i32 2 - call void @popBack.371(%String* %171) + call void @popBack.477(%String* %171) %172 = load %TokenType*, %TokenType** %_result.addr %173 = load i1, i1* %isLong br i1 %173, label %cond_alt1, label %cond_alt2 @@ -15553,16 +18468,16 @@ if_end89: ; preds = %cond_destruct_end95 br label %if_block97 cond_alt1: ; preds = %if_then88 - call void @ctor.313(%TokenType* %tmp.this91, i32 45) + call void @ctor.417(%TokenType* %tmp.this91, i32 45) br label %cond_end cond_alt2: ; preds = %if_then88 - call void @ctor.313(%TokenType* %tmp.this92, i32 44) + call void @ctor.417(%TokenType* %tmp.this92, i32 44) br label %cond_end cond_end: ; preds = %cond_alt2, %cond_alt1 %cond = phi %TokenType* [ %tmp.this91, %cond_alt1 ], [ %tmp.this92, %cond_alt2 ] - call void @ctor.183(%TokenType* %172, %TokenType* %cond) + call void @ctor.203(%TokenType* %172, %TokenType* %cond) br i1 %173, label %cond_destruct_alt1, label %cond_destruct_alt2 cond_destruct_alt1: ; preds = %cond_end @@ -15604,16 +18519,16 @@ if_end100: ; preds = %cond_destruct_end12 ret void cond_alt1101: ; preds = %if_then98 - call void @ctor.313(%TokenType* %tmp.this104, i32 43) + call void @ctor.417(%TokenType* %tmp.this104, i32 43) br label %cond_end103 cond_alt2102: ; preds = %if_then98 - call void @ctor.313(%TokenType* %tmp.this105, i32 42) + call void @ctor.417(%TokenType* %tmp.this105, i32 42) br label %cond_end103 cond_end103: ; preds = %cond_alt2102, %cond_alt1101 %cond106 = phi %TokenType* [ %tmp.this104, %cond_alt1101 ], [ %tmp.this105, %cond_alt2102 ] - call void @ctor.183(%TokenType* %175, %TokenType* %cond106) + call void @ctor.203(%TokenType* %175, %TokenType* %cond106) br i1 %176, label %cond_destruct_alt1107, label %cond_destruct_alt2108 cond_destruct_alt1107: ; preds = %cond_end103 @@ -15638,16 +18553,16 @@ dumy_block113: ; No predecessors! br i1 %176, label %cond_destruct_alt1110, label %cond_destruct_alt2111 cond_alt1114: ; preds = %if_else99 - call void @ctor.313(%TokenType* %tmp.this117, i32 41) + call void @ctor.417(%TokenType* %tmp.this117, i32 41) br label %cond_end116 cond_alt2115: ; preds = %if_else99 - call void @ctor.313(%TokenType* %tmp.this118, i32 40) + call void @ctor.417(%TokenType* %tmp.this118, i32 40) br label %cond_end116 cond_end116: ; preds = %cond_alt2115, %cond_alt1114 %cond119 = phi %TokenType* [ %tmp.this117, %cond_alt1114 ], [ %tmp.this118, %cond_alt2115 ] - call void @ctor.183(%TokenType* %177, %TokenType* %cond119) + call void @ctor.203(%TokenType* %177, %TokenType* %cond119) br i1 %178, label %cond_destruct_alt1120, label %cond_destruct_alt2121 cond_destruct_alt1120: ; preds = %cond_end116 @@ -15673,9 +18588,9 @@ dumy_block126: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal i64 @consumeDigits(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %r, i64 %base, %String* %capture) #4 { - %r.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* - store %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %r, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr +define internal i64 @consumeDigits(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %r, i64 %base, %String* %capture) #4 { + %r.addr = alloca %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* + store %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %r, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %r.addr %base.addr = alloca i64 store i64 %base, i64* %base.addr %capture.addr = alloca %String* @@ -15708,24 +18623,24 @@ if_end: ; preds = %while_end12, %while ret i64 %4 while_block: ; preds = %while_step, %if_then - %5 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr - %6 = call i1 @"pre_!!.338"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5) + %5 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %r.addr + %6 = call i1 @"pre_!!.442"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %5) br i1 %6, label %cond.true, label %cond.false while_body: ; preds = %cond.end br label %if_block5 while_step: ; preds = %if_end7 - %7 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %7) + %7 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %r.addr + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %7) br label %while_block while_end: ; preds = %cond.end br label %if_end cond.true: ; preds = %while_block - %8 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr - %9 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %8) + %8 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %r.addr + %9 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %8) %10 = call i1 @isXdigit(i8 %9) br i1 %10, label %cond.true1, label %cond.false2 @@ -15740,8 +18655,8 @@ cond.true1: ; preds = %cond.true br label %cond.end3 cond.false2: ; preds = %cond.true - %11 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr - %12 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %11) + %11 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %r.addr + %12 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %11) %13 = icmp eq i8 %12, 95 br label %cond.end3 @@ -15750,23 +18665,23 @@ cond.end3: ; preds = %cond.false2, %cond. br label %cond.end if_block5: ; preds = %while_body - %14 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr - %15 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %14) + %14 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %r.addr + %15 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %14) %16 = icmp ne i8 %15, 95 br i1 %16, label %if_then6, label %if_end7 if_then6: ; preds = %if_block5 %17 = load %String*, %String** %capture.addr - %18 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr - %19 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %18) - call void @"+=.366"(%String* %17, i8 %19) + %18 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %r.addr + %19 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %18) + call void @"+=.473"(%String* %17, i8 %19) %20 = load i64, i64* %res %21 = load i64, i64* %base.addr %22 = mul i64 %20, %21 store i64 %22, i64* %res %23 = load i64, i64* %res - %24 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr - %25 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %24) + %24 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %r.addr + %25 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %24) %26 = call i32 @getXdigitVal(i8 %25) %27 = zext i32 %26 to i64 store i64 %27, i64* %tmp.this8 @@ -15779,24 +18694,24 @@ if_end7: ; preds = %if_then6, %if_block br label %while_step while_block9: ; preds = %while_step11, %if_else - %30 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr - %31 = call i1 @"pre_!!.338"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %30) + %30 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %r.addr + %31 = call i1 @"pre_!!.442"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %30) br i1 %31, label %cond.true13, label %cond.false14 while_body10: ; preds = %cond.end15 br label %if_block21 while_step11: ; preds = %if_end23 - %32 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %32) + %32 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %r.addr + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %32) br label %while_block9 while_end12: ; preds = %cond.end15 br label %if_end cond.true13: ; preds = %while_block9 - %33 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr - %34 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %33) + %33 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %r.addr + %34 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %33) %35 = call i1 @isXdigit(i8 %34) br i1 %35, label %cond.true16, label %cond.false17 @@ -15811,8 +18726,8 @@ cond.true16: ; preds = %cond.true13 br label %cond.end18 cond.false17: ; preds = %cond.true13 - %36 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr - %37 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %36) + %36 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %r.addr + %37 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %36) %38 = icmp eq i8 %37, 95 br label %cond.end18 @@ -15821,23 +18736,23 @@ cond.end18: ; preds = %cond.false17, %cond br label %cond.end15 if_block21: ; preds = %while_body10 - %39 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr - %40 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %39) + %39 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %r.addr + %40 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %39) %41 = icmp ne i8 %40, 95 br i1 %41, label %if_then22, label %if_end23 if_then22: ; preds = %if_block21 %42 = load %String*, %String** %capture.addr - %43 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr - %44 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %43) - call void @"+=.366"(%String* %42, i8 %44) + %43 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %r.addr + %44 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %43) + call void @"+=.473"(%String* %42, i8 %44) %45 = load i64, i64* %res %46 = load i64, i64* %base.addr %47 = mul i64 %45, %46 store i64 %47, i64* %res %48 = load i64, i64* %res - %49 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr - %50 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %49) + %49 = load %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"*, %"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"** %r.addr + %50 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %49) %51 = call i32 @getDigitVal(i8 %50) %52 = zext i32 %51 to i64 store i64 %52, i64* %tmp.this24 @@ -15887,9 +18802,9 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @advanceAndCaptureDigit(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"FunctionPtr1[Bool, Char]" %pred) #4 { - %this.addr = alloca %"SparrowScanner[_CharSource, ExternalErrorReporter]"* - store %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %this, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr +define internal void @advanceAndCaptureDigit(%SparrowScanner* %this, %"FunctionPtr1[Bool, Char]" %pred) #4 { + %this.addr = alloca %SparrowScanner* + store %SparrowScanner* %this, %SparrowScanner** %this.addr %pred.addr = alloca %"FunctionPtr1[Bool, Char]" store %"FunctionPtr1[Bool, Char]" %pred, %"FunctionPtr1[Bool, Char]"* %pred.addr br label %code @@ -15898,28 +18813,28 @@ code: ; preds = %0 br label %while_block while_block: ; preds = %while_step, %code - %1 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1, i32 0, i32 1 - %3 = call i1 @"pre_!!.338"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %2) + %1 = load %SparrowScanner*, %SparrowScanner** %this.addr + %2 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %1, i32 0, i32 2 + %3 = call i1 @"pre_!!.442"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %2) br i1 %3, label %cond.true, label %cond.false while_body: ; preds = %cond.end br label %if_block while_step: ; preds = %if_end - %4 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %5 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %4, i32 0, i32 1 - call void @popFront.319(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5) + %4 = load %SparrowScanner*, %SparrowScanner** %this.addr + %5 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %4, i32 0, i32 2 + call void @popFront.423(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %5) br label %while_block while_end: ; preds = %cond.end ret void cond.true: ; preds = %while_block - %6 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %7 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %6, i32 0, i32 1 - %8 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %7) - %9 = call i1 @"().368"(%"FunctionPtr1[Bool, Char]"* %pred.addr, i8 %8) + %6 = load %SparrowScanner*, %SparrowScanner** %this.addr + %7 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %6, i32 0, i32 2 + %8 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %7) + %9 = call i1 @"().475"(%"FunctionPtr1[Bool, Char]"* %pred.addr, i8 %8) br i1 %9, label %cond.true1, label %cond.false2 cond.false: ; preds = %while_block @@ -15933,9 +18848,9 @@ cond.true1: ; preds = %cond.true br label %cond.end3 cond.false2: ; preds = %cond.true - %10 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %11 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %10, i32 0, i32 1 - %12 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %11) + %10 = load %SparrowScanner*, %SparrowScanner** %this.addr + %11 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %10, i32 0, i32 2 + %12 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %11) %13 = icmp eq i8 %12, 95 br label %cond.end3 @@ -15944,20 +18859,20 @@ cond.end3: ; preds = %cond.false2, %cond. br label %cond.end if_block: ; preds = %while_body - %14 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %15 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %14, i32 0, i32 1 - %16 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %15) + %14 = load %SparrowScanner*, %SparrowScanner** %this.addr + %15 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %14, i32 0, i32 2 + %16 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %15) %17 = icmp ne i8 %16, 95 br i1 %17, label %if_then, label %if_end if_then: ; preds = %if_block - %18 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %19 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %18, i32 0, i32 2 + %18 = load %SparrowScanner*, %SparrowScanner** %this.addr + %19 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %18, i32 0, i32 3 %20 = getelementptr inbounds %Token, %Token* %19, i32 0, i32 2 - %21 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %22 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %21, i32 0, i32 1 - %23 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %22) - call void @"+=.366"(%String* %20, i8 %23) + %21 = load %SparrowScanner*, %SparrowScanner** %this.addr + %22 = getelementptr inbounds %SparrowScanner, %SparrowScanner* %21, i32 0, i32 2 + %23 = call i8 @"pre_*"(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %22) + call void @"+=.473"(%String* %20, i8 %23) br label %if_end if_end: ; preds = %if_then, %if_block @@ -15965,22 +18880,7 @@ if_end: ; preds = %if_then, %if_block } ; Function Attrs: inlinehint nounwind -define internal i1 @isEmpty.370(%String* %this) #4 { - %this.addr = alloca %String* - store %String* %this, %String** %this.addr - br label %code - -code: ; preds = %0 - %1 = load %String*, %String** %this.addr - %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 0 - %3 = load %String*, %String** %this.addr - %4 = getelementptr inbounds %String, %String* %3, i32 0, i32 1 - %5 = call i1 @"==.225"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) - ret i1 %5 -} - -; Function Attrs: inlinehint nounwind -define internal void @popBack.371(%String* %this) #4 { +define internal void @popBack.477(%String* %this) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr %"$tmpC" = alloca %"RawPtr[Char]" @@ -15995,8 +18895,8 @@ code: ; preds = %0 %5 = load %"RawPtr[Char]", %"RawPtr[Char]"* %4 store i64 -1, i64* %tmp.this %6 = load i64, i64* %tmp.this - call void @advance.187(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %5, i64 %6) - call void @"=.178"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %"$tmpC") + call void @advance(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %5, i64 %6) + call void @"=.200"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %"$tmpC") %7 = load %String*, %String** %this.addr %8 = getelementptr inbounds %String, %String* %7, i32 0, i32 1 %9 = load %"RawPtr[Char]", %"RawPtr[Char]"* %8 @@ -16006,7 +18906,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @toString.372(%String* sret %_result, %StringRef %a1, i8 %a2, %StringRef %a3, i32 %a4, i8 %a5) #4 { +define internal void @toString.478(%String* sret %_result, %StringRef %a1, i8 %a2, %StringRef %a3, i32 %a4, i8 %a5) #4 { %_result.addr = alloca %String* store %String* %_result, %String** %_result.addr %a1.addr = alloca %StringRef @@ -16023,25 +18923,25 @@ define internal void @toString.372(%String* sret %_result, %StringRef %a1, i8 %a br label %code code: ; preds = %0 - call void @ctor.289(%StringOutputStream* %s) + call void @ctor.452(%StringOutputStream* %s) %1 = call %StringOutputStream* @"<<"(%StringOutputStream* %s, %StringRef* %a1.addr) - %2 = call %StringOutputStream* @"<<.373"(%StringOutputStream* %1, i8* %a2.addr) + %2 = call %StringOutputStream* @"<<.479"(%StringOutputStream* %1, i8* %a2.addr) %3 = call %StringOutputStream* @"<<"(%StringOutputStream* %2, %StringRef* %a3.addr) - %4 = call %StringOutputStream* @"<<.377"(%StringOutputStream* %3, i32* %a4.addr) - %5 = call %StringOutputStream* @"<<.373"(%StringOutputStream* %4, i8* %a5.addr) + %4 = call %StringOutputStream* @"<<.483"(%StringOutputStream* %3, i32* %a4.addr) + %5 = call %StringOutputStream* @"<<.479"(%StringOutputStream* %4, i8* %a5.addr) %6 = load %String*, %String** %_result.addr %7 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %s, i32 0, i32 0 - call void @ctor.184(%String* %6, %String* %7) - call void @dtor.291(%StringOutputStream* %s) + call void @ctor.189(%String* %6, %String* %7) + call void @dtor.454(%StringOutputStream* %s) ret void dumy_block: ; No predecessors! - call void @dtor.291(%StringOutputStream* %s) + call void @dtor.454(%StringOutputStream* %s) ret void } ; Function Attrs: inlinehint nounwind -define internal %StringOutputStream* @"<<.373"(%StringOutputStream* %s, i8* %x) #4 { +define internal %StringOutputStream* @"<<.479"(%StringOutputStream* %s, i8* %x) #4 { %s.addr = alloca %StringOutputStream* store %StringOutputStream* %s, %StringOutputStream** %s.addr %x.addr = alloca i8* @@ -16052,13 +18952,13 @@ code: ; preds = %0 %1 = load %StringOutputStream*, %StringOutputStream** %s.addr %2 = load i8*, i8** %x.addr %3 = load i8, i8* %2 - call void @"<<<.374"(%StringOutputStream* %1, i8 %3) + call void @"<<<.480"(%StringOutputStream* %1, i8 %3) %4 = load %StringOutputStream*, %StringOutputStream** %s.addr ret %StringOutputStream* %4 } ; Function Attrs: alwaysinline nounwind -define internal void @"<<<.374"(%StringOutputStream* %this, i8 %x) #3 { +define internal void @"<<<.480"(%StringOutputStream* %this, i8 %x) #3 { %this.addr = alloca %StringOutputStream* store %StringOutputStream* %this, %StringOutputStream** %this.addr %x.addr = alloca i8 @@ -16069,12 +18969,12 @@ code: ; preds = %0 %1 = load %StringOutputStream*, %StringOutputStream** %this.addr %2 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %1, i32 0, i32 0 %3 = load i8, i8* %x.addr - call void @append.375(%String* %2, i8 %3) + call void @append.481(%String* %2, i8 %3) ret void } ; Function Attrs: inlinehint nounwind -define internal void @append.375(%String* %this, i8 %value) #4 { +define internal void @append.481(%String* %this, i8 %value) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr %value.addr = alloca i8 @@ -16095,12 +18995,12 @@ code: ; preds = %0 %10 = call i8* @bytePtr(%"RawPtr[Char]" %9) call void @ctor.57(%StringRef* %tmp.this, i8* %6, i8* %10) %11 = load %StringRef, %StringRef* %tmp.this - call void @insertBefore.376(%String* %1, i8 %2, %StringRef %11) + call void @insertBefore.482(%String* %1, i8 %2, %StringRef %11) ret void } ; Function Attrs: inlinehint nounwind -define internal void @insertBefore.376(%String* %this, i8 %value, %StringRef %pos) #4 { +define internal void @insertBefore.482(%String* %this, i8 %value, %StringRef %pos) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr %value.addr = alloca i8 @@ -16132,7 +19032,7 @@ code: ; preds = %0 store i64 %6, i64* %posCount %7 = load %String*, %String** %this.addr %8 = load %String*, %String** %this.addr - %9 = call i64 @size.185(%String* %8) + %9 = call i64 @size.190(%String* %8) store i64 1, i64* %tmp.this %10 = load i64, i64* %tmp.this %11 = add i64 %9, %10 @@ -16142,7 +19042,7 @@ code: ; preds = %0 %14 = load %"RawPtr[Char]", %"RawPtr[Char]"* %13 store i64 -1, i64* %tmp.this1 %15 = load i64, i64* %tmp.this1 - call void @advance.187(%"RawPtr[Char]"* %p, %"RawPtr[Char]" %14, i64 %15) + call void @advance(%"RawPtr[Char]"* %p, %"RawPtr[Char]" %14, i64 %15) %16 = load %String*, %String** %this.addr %17 = getelementptr inbounds %String, %String* %16, i32 0, i32 0 %18 = load %"RawPtr[Char]", %"RawPtr[Char]"* %17 @@ -16150,11 +19050,11 @@ code: ; preds = %0 store i64 1, i64* %tmp.this2 %20 = load i64, i64* %tmp.this2 %21 = call i64 @_DiffType_opMinus(i64 %19, i64 %20) - call void @advance.187(%"RawPtr[Char]"* %q, %"RawPtr[Char]" %18, i64 %21) + call void @advance(%"RawPtr[Char]"* %q, %"RawPtr[Char]" %18, i64 %21) br label %while_block while_block: ; preds = %while_step, %code - %22 = call i1 @"==.225"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %q) + %22 = call i1 @"==.268"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %q) %23 = xor i1 true, %22 br i1 %23, label %while_body, label %while_end @@ -16163,7 +19063,7 @@ while_body: ; preds = %while_block %25 = call i8* @value(%"RawPtr[Char]" %24) %26 = load i8, i8* %25 %27 = load %"RawPtr[Char]", %"RawPtr[Char]"* %p - call void @advance.226(%"RawPtr[Char]"* %"$tmpC3", %"RawPtr[Char]" %27) + call void @advance.269(%"RawPtr[Char]"* %"$tmpC3", %"RawPtr[Char]" %27) %28 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC3" %29 = call i8* @value(%"RawPtr[Char]" %28) store i8 %26, i8* %29 @@ -16176,14 +19076,14 @@ while_step: ; preds = %while_body %33 = load %"RawPtr[Char]", %"RawPtr[Char]"* %p store i64 -1, i64* %tmp.this5 %34 = load i64, i64* %tmp.this5 - call void @advance.187(%"RawPtr[Char]"* %"$tmpC4", %"RawPtr[Char]" %33, i64 %34) - call void @"=.178"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %"$tmpC4") + call void @advance(%"RawPtr[Char]"* %"$tmpC4", %"RawPtr[Char]" %33, i64 %34) + call void @"=.200"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %"$tmpC4") br label %while_block while_end: ; preds = %while_block %35 = load i8, i8* %value.addr %36 = load %"RawPtr[Char]", %"RawPtr[Char]"* %p - call void @advance.226(%"RawPtr[Char]"* %"$tmpC6", %"RawPtr[Char]" %36) + call void @advance.269(%"RawPtr[Char]"* %"$tmpC6", %"RawPtr[Char]" %36) %37 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC6" %38 = call i8* @value(%"RawPtr[Char]" %37) store i8 %35, i8* %38 @@ -16192,13 +19092,13 @@ while_end: ; preds = %while_block %41 = load %String*, %String** %this.addr %42 = getelementptr inbounds %String, %String* %41, i32 0, i32 1 %43 = load %"RawPtr[Char]", %"RawPtr[Char]"* %42 - call void @advance.226(%"RawPtr[Char]"* %"$tmpC7", %"RawPtr[Char]" %43) - call void @"=.178"(%"RawPtr[Char]"* %40, %"RawPtr[Char]"* %"$tmpC7") + call void @advance.269(%"RawPtr[Char]"* %"$tmpC7", %"RawPtr[Char]" %43) + call void @"=.200"(%"RawPtr[Char]"* %40, %"RawPtr[Char]"* %"$tmpC7") ret void } ; Function Attrs: inlinehint nounwind -define internal %StringOutputStream* @"<<.377"(%StringOutputStream* %s, i32* %x) #4 { +define internal %StringOutputStream* @"<<.483"(%StringOutputStream* %s, i32* %x) #4 { %s.addr = alloca %StringOutputStream* store %StringOutputStream* %s, %StringOutputStream** %s.addr %x.addr = alloca i32* @@ -16209,13 +19109,13 @@ code: ; preds = %0 %1 = load %StringOutputStream*, %StringOutputStream** %s.addr %2 = load i32*, i32** %x.addr %3 = load i32, i32* %2 - call void @"<<<.378"(%StringOutputStream* %1, i32 %3) + call void @"<<<.484"(%StringOutputStream* %1, i32 %3) %4 = load %StringOutputStream*, %StringOutputStream** %s.addr ret %StringOutputStream* %4 } ; Function Attrs: alwaysinline nounwind -define internal void @"<<<.378"(%StringOutputStream* %this, i32 %x) #3 { +define internal void @"<<<.484"(%StringOutputStream* %this, i32 %x) #3 { %this.addr = alloca %StringOutputStream* store %StringOutputStream* %this, %StringOutputStream** %this.addr %x.addr = alloca i32 @@ -16228,14 +19128,14 @@ code: ; preds = %0 %2 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %1, i32 0, i32 0 %3 = load i32, i32* %x.addr call void @intToString(%String* %"$tmpC", i32 %3) - %4 = call %StringRef @all.379(%String* %"$tmpC") + %4 = call %StringRef @all.485(%String* %"$tmpC") call void @append(%String* %2, %StringRef %4) - call void @dtor.218(%String* %"$tmpC") + call void @dtor.261(%String* %"$tmpC") ret void } ; Function Attrs: inlinehint nounwind -define internal %StringRef @all.379(%String* %this) #4 { +define internal %StringRef @all.485(%String* %this) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr %tmp.this = alloca %StringRef @@ -16273,12 +19173,12 @@ code: ; preds = %0 %4 = bitcast [12 x i8]* %buf to i8* %5 = call %StringRef @_String_fromCString(i8* %4) store %StringRef %5, %StringRef* %"$tmpForRef" - call void @ctor.364(%String* %3, %StringRef* %"$tmpForRef") + call void @ctor.471(%String* %3, %StringRef* %"$tmpForRef") ret void } ; Function Attrs: inlinehint nounwind -define internal void @"+=.380"(%"Vector[UInt]"* %this, i32* %value) #4 { +define internal void @"+=.486"(%"Vector[UInt]"* %this, i32* %value) #4 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr %value.addr = alloca i32* @@ -16288,12 +19188,12 @@ define internal void @"+=.380"(%"Vector[UInt]"* %this, i32* %value) #4 { code: ; preds = %0 %1 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %2 = load i32*, i32** %value.addr - call void @pushBack.381(%"Vector[UInt]"* %1, i32* %2) + call void @pushBack.487(%"Vector[UInt]"* %1, i32* %2) ret void } ; Function Attrs: inlinehint nounwind -define internal void @pushBack.381(%"Vector[UInt]"* %this, i32* %value) #4 { +define internal void @pushBack.487(%"Vector[UInt]"* %this, i32* %value) #4 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr %value.addr = alloca i32* @@ -16313,14 +19213,14 @@ if_block: ; preds = %code %2 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %1, i32 0, i32 1 %3 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %4 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %3, i32 0, i32 2 - %5 = call i1 @"==.228"(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %4) + %5 = call i1 @"==.271"(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %4) br i1 %5, label %if_then, label %if_end if_then: ; preds = %if_block store i64 2, i64* %tmp.this %6 = load i64, i64* %tmp.this %7 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr - %8 = call i64 @capacity.382(%"Vector[UInt]"* %7) + %8 = call i64 @capacity.488(%"Vector[UInt]"* %7) %9 = mul i64 %6, %8 store i64 %9, i64* %t br label %if_block1 @@ -16331,15 +19231,15 @@ if_end: ; preds = %if_end3, %if_block %12 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %13 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %12, i32 0, i32 1 %14 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %13 - %15 = call i32* @value.229(%"RawPtr[UInt]" %14) + %15 = call i32* @value.272(%"RawPtr[UInt]" %14) store i32 %11, i32* %15 %16 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %17 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %16, i32 0, i32 1 %18 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %19 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %18, i32 0, i32 1 %20 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %19 - call void @advance.230(%"RawPtr[UInt]"* %"$tmpC", %"RawPtr[UInt]" %20) - call void @"=.207"(%"RawPtr[UInt]"* %17, %"RawPtr[UInt]"* %"$tmpC") + call void @advance.273(%"RawPtr[UInt]"* %"$tmpC", %"RawPtr[UInt]" %20) + call void @"=.225"(%"RawPtr[UInt]"* %17, %"RawPtr[UInt]"* %"$tmpC") ret void if_block1: ; preds = %if_then @@ -16358,12 +19258,12 @@ if_then2: ; preds = %if_block1 if_end3: ; preds = %if_then2, %if_block1 %25 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %26 = load i64, i64* %t - call void @reserve.383(%"Vector[UInt]"* %25, i64 %26) + call void @reserve.489(%"Vector[UInt]"* %25, i64 %26) br label %if_end } ; Function Attrs: inlinehint nounwind -define internal i64 @capacity.382(%"Vector[UInt]"* %this) #4 { +define internal i64 @capacity.488(%"Vector[UInt]"* %this) #4 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr %tmp.this = alloca i64 @@ -16376,14 +19276,14 @@ code: ; preds = %0 %4 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %5 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %4, i32 0, i32 0 %6 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %5 - %7 = call i64 @diff.205(%"RawPtr[UInt]" %3, %"RawPtr[UInt]" %6) + %7 = call i64 @diff.223(%"RawPtr[UInt]" %3, %"RawPtr[UInt]" %6) store i64 %7, i64* %tmp.this %8 = load i64, i64* %tmp.this ret i64 %8 } ; Function Attrs: inlinehint nounwind -define internal void @reserve.383(%"Vector[UInt]"* %this, i64 %n) #4 { +define internal void @reserve.489(%"Vector[UInt]"* %this, i64 %n) #4 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr %n.addr = alloca i64 @@ -16402,7 +19302,7 @@ define internal void @reserve.383(%"Vector[UInt]"* %this, i64 %n) #4 { code: ; preds = %0 %1 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr - %2 = call i64 @capacity.382(%"Vector[UInt]"* %1) + %2 = call i64 @capacity.488(%"Vector[UInt]"* %1) store i64 %2, i64* %curCapacity br label %if_block @@ -16464,33 +19364,33 @@ if_then6: ; preds = %if_block5 if_end7: ; preds = %if_then6, %if_block5 %24 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr - %25 = call i64 @size.204(%"Vector[UInt]"* %24) + %25 = call i64 @size.222(%"Vector[UInt]"* %24) store i64 %25, i64* %curSize %26 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %27 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %26, i32 0, i32 0 %28 = load i64, i64* %n.addr - call void @reallocPtr.384(%"RawPtr[UInt]"* %27, i64 %28) + call void @reallocPtr.490(%"RawPtr[UInt]"* %27, i64 %28) %29 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %30 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %29, i32 0, i32 1 %31 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %32 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %31, i32 0, i32 0 %33 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %32 %34 = load i64, i64* %curSize - call void @advance.210(%"RawPtr[UInt]"* %"$tmpC", %"RawPtr[UInt]" %33, i64 %34) - call void @"=.207"(%"RawPtr[UInt]"* %30, %"RawPtr[UInt]"* %"$tmpC") + call void @advance.228(%"RawPtr[UInt]"* %"$tmpC", %"RawPtr[UInt]" %33, i64 %34) + call void @"=.225"(%"RawPtr[UInt]"* %30, %"RawPtr[UInt]"* %"$tmpC") %35 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %36 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %35, i32 0, i32 2 %37 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %38 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %37, i32 0, i32 0 %39 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %38 %40 = load i64, i64* %n.addr - call void @advance.210(%"RawPtr[UInt]"* %"$tmpC12", %"RawPtr[UInt]" %39, i64 %40) - call void @"=.207"(%"RawPtr[UInt]"* %36, %"RawPtr[UInt]"* %"$tmpC12") + call void @advance.228(%"RawPtr[UInt]"* %"$tmpC12", %"RawPtr[UInt]" %39, i64 %40) + call void @"=.225"(%"RawPtr[UInt]"* %36, %"RawPtr[UInt]"* %"$tmpC12") ret void } ; Function Attrs: inlinehint nounwind -define internal void @reallocPtr.384(%"RawPtr[UInt]"* %this, i64 %n) #4 { +define internal void @reallocPtr.490(%"RawPtr[UInt]"* %this, i64 %n) #4 { %this.addr = alloca %"RawPtr[UInt]"* store %"RawPtr[UInt]"* %this, %"RawPtr[UInt]"** %this.addr %n.addr = alloca i64 @@ -16500,7 +19400,7 @@ define internal void @reallocPtr.384(%"RawPtr[UInt]"* %this, i64 %n) #4 { code: ; preds = %0 %1 = load %"RawPtr[UInt]"*, %"RawPtr[UInt]"** %this.addr %2 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %1 - %3 = call i8* @bytePtr.206(%"RawPtr[UInt]" %2) + %3 = call i8* @bytePtr.224(%"RawPtr[UInt]" %2) %4 = load i64, i64* %n.addr %5 = mul i64 %4, 4 %6 = call i8* @realloc(i8* %3, i64 %5) @@ -16512,20 +19412,20 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i1 @isEmpty.385(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this) #4 { - %this.addr = alloca %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* - store %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr +define internal i1 @isEmpty.491(%"RangeWithLookahead[SparrowScanner]"* %this) #4 { + %this.addr = alloca %"RangeWithLookahead[SparrowScanner]"* + store %"RangeWithLookahead[SparrowScanner]"* %this, %"RangeWithLookahead[SparrowScanner]"** %this.addr br label %code code: ; preds = %0 - %1 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr - %2 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %1, i32 0, i32 1 - %3 = call i1 @isEmpty.386(%"Vector[Token]"* %2) + %1 = load %"RangeWithLookahead[SparrowScanner]"*, %"RangeWithLookahead[SparrowScanner]"** %this.addr + %2 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner]", %"RangeWithLookahead[SparrowScanner]"* %1, i32 0, i32 1 + %3 = call i1 @isEmpty.492(%"Vector[Token]"* %2) ret i1 %3 } ; Function Attrs: inlinehint nounwind -define internal i1 @isEmpty.386(%"Vector[Token]"* %this) #4 { +define internal i1 @isEmpty.492(%"Vector[Token]"* %this) #4 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr br label %code @@ -16535,29 +19435,29 @@ code: ; preds = %0 %2 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %1, i32 0, i32 0 %3 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %4 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %3, i32 0, i32 1 - %5 = call i1 @"==.200"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %4) + %5 = call i1 @"==.218"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %4) ret i1 %5 } ; Function Attrs: inlinehint nounwind -define internal void @front.387(%Token* sret %_result, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this) #4 { +define internal void @front.493(%Token* sret %_result, %"RangeWithLookahead[SparrowScanner]"* %this) #4 { %_result.addr = alloca %Token* store %Token* %_result, %Token** %_result.addr - %this.addr = alloca %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* - store %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr + %this.addr = alloca %"RangeWithLookahead[SparrowScanner]"* + store %"RangeWithLookahead[SparrowScanner]"* %this, %"RangeWithLookahead[SparrowScanner]"** %this.addr br label %code code: ; preds = %0 %1 = load %Token*, %Token** %_result.addr - %2 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr - %3 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %2, i32 0, i32 1 - %4 = call %Token* @front.388(%"Vector[Token]"* %3) - call void @ctor.182(%Token* %1, %Token* %4) + %2 = load %"RangeWithLookahead[SparrowScanner]"*, %"RangeWithLookahead[SparrowScanner]"** %this.addr + %3 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner]", %"RangeWithLookahead[SparrowScanner]"* %2, i32 0, i32 1 + %4 = call %Token* @front.494(%"Vector[Token]"* %3) + call void @ctor.202(%Token* %1, %Token* %4) ret void } ; Function Attrs: inlinehint nounwind -define internal %Token* @front.388(%"Vector[Token]"* %this) #4 { +define internal %Token* @front.494(%"Vector[Token]"* %this) #4 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr br label %code @@ -16566,14 +19466,14 @@ code: ; preds = %0 %1 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %2 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %1, i32 0, i32 0 %3 = load %"RawPtr[Token]", %"RawPtr[Token]"* %2 - %4 = call %Token* @value.201(%"RawPtr[Token]" %3) + %4 = call %Token* @value.219(%"RawPtr[Token]" %3) ret %Token* %4 } ; Function Attrs: noinline nounwind -define void @popFront.389(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this) #5 { - %this.addr = alloca %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define void @popFront.495(%"SparrowLayoutDecoder[SparrowScanner]"* %this) #5 { + %this.addr = alloca %"SparrowLayoutDecoder[SparrowScanner]"* + store %"SparrowLayoutDecoder[SparrowScanner]"* %this, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr %tmp.this = alloca %TokenType %oldType = alloca %TokenType %"$tmpC" = alloca %Token @@ -16617,37 +19517,37 @@ code: ; preds = %0 br label %if_block if_block: ; preds = %code - %1 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 5 + %1 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %2 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %1, i32 0, i32 5 %3 = load i32, i32* %2 %4 = icmp sgt i32 %3, 0 br i1 %4, label %if_then, label %if_end if_then: ; preds = %if_block - %5 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %6 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 5 + %5 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %6 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %5, i32 0, i32 5 %7 = call i32 @post_--.48(i32* %6) - %8 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %9 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %8, i32 0, i32 4 - call void @ctor.313(%TokenType* %tmp.this, i32 25) - call void @"=.249"(%TokenType* %9, %TokenType* %tmp.this) + %8 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %9 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %8, i32 0, i32 4 + call void @ctor.417(%TokenType* %tmp.this, i32 25) + call void @"=.298"(%TokenType* %9, %TokenType* %tmp.this) ret void if_end: ; preds = %dumy_block, %if_block - %10 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @front.390(%Token* %"$tmpC", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %10) + %10 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + call void @front.496(%Token* %"$tmpC", %"SparrowLayoutDecoder[SparrowScanner]"* %10) %11 = getelementptr inbounds %Token, %Token* %"$tmpC", i32 0, i32 1 - call void @ctor.183(%TokenType* %oldType, %TokenType* %11) - call void @dtor.217(%Token* %"$tmpC") - %12 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %13 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %12, i32 0, i32 0 - call void @popFront.391(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %13) - %14 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %15 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %14, i32 0, i32 0 - call void @front.387(%Token* %"$tmpC1", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %15) + call void @ctor.203(%TokenType* %oldType, %TokenType* %11) + call void @dtor.260(%Token* %"$tmpC") + %12 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %13 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %12, i32 0, i32 0 + call void @popFront.497(%"RangeWithLookahead[SparrowScanner]"* %13) + %14 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %15 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %14, i32 0, i32 0 + call void @front.493(%Token* %"$tmpC1", %"RangeWithLookahead[SparrowScanner]"* %15) %16 = getelementptr inbounds %Token, %Token* %"$tmpC1", i32 0, i32 1 - call void @ctor.313(%TokenType* %tmp.this2, i32 1) - %17 = call i1 @"==.273"(%TokenType* %16, %TokenType* %tmp.this2) + call void @ctor.417(%TokenType* %tmp.this2, i32 1) + %17 = call i1 @"==.352"(%TokenType* %16, %TokenType* %tmp.this2) br i1 %17, label %cond.true, label %cond.false dumy_block: ; No predecessors! @@ -16657,12 +19557,12 @@ cond.true: ; preds = %if_end br label %cond.end cond.false: ; preds = %if_end - %18 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %19 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %18, i32 0, i32 0 - call void @front.387(%Token* %"$tmpC3", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %19) + %18 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %19 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %18, i32 0, i32 0 + call void @front.493(%Token* %"$tmpC3", %"RangeWithLookahead[SparrowScanner]"* %19) %20 = getelementptr inbounds %Token, %Token* %"$tmpC3", i32 0, i32 1 - call void @ctor.313(%TokenType* %tmp.this4, i32 0) - %21 = call i1 @"==.273"(%TokenType* %20, %TokenType* %tmp.this4) + call void @ctor.417(%TokenType* %tmp.this4, i32 0) + %21 = call i1 @"==.352"(%TokenType* %20, %TokenType* %tmp.this4) br label %cond.end cond.end: ; preds = %cond.false, %cond.true @@ -16674,48 +19574,48 @@ cond_destruct_alt1: ; preds = %cond.end br label %cond_destruct_end cond_destruct_alt2: ; preds = %cond.end - call void @dtor.217(%Token* %"$tmpC3") + call void @dtor.260(%Token* %"$tmpC3") br label %cond_destruct_end cond_destruct_end: ; preds = %cond_destruct_alt2, %cond_destruct_alt1 - call void @dtor.217(%Token* %"$tmpC1") + call void @dtor.260(%Token* %"$tmpC1") br label %while_block while_block: ; preds = %while_step, %cond_destruct_end - %22 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %23 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %22, i32 0, i32 0 - call void @front.387(%Token* %"$tmpC5", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %23) + %22 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %23 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %22, i32 0, i32 0 + call void @front.493(%Token* %"$tmpC5", %"RangeWithLookahead[SparrowScanner]"* %23) %24 = getelementptr inbounds %Token, %Token* %"$tmpC5", i32 0, i32 1 - call void @ctor.313(%TokenType* %tmp.this6, i32 1) - %25 = call i1 @"==.273"(%TokenType* %24, %TokenType* %tmp.this6) + call void @ctor.417(%TokenType* %tmp.this6, i32 1) + %25 = call i1 @"==.352"(%TokenType* %24, %TokenType* %tmp.this6) br i1 %25, label %while_body, label %while_end while_body: ; preds = %while_block - %26 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %27 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %26, i32 0, i32 0 - call void @popFront.391(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %27) + %26 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %27 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %26, i32 0, i32 0 + call void @popFront.497(%"RangeWithLookahead[SparrowScanner]"* %27) br label %while_step while_step: ; preds = %while_body br label %while_block while_end: ; preds = %while_block - call void @dtor.217(%Token* %"$tmpC5") - %28 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %29 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %28, i32 0, i32 0 - call void @front.387(%Token* %tk, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %29) - %30 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %31 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %30, i32 0, i32 3 - %32 = call i1 @isEmpty.312(%"Vector[Char]"* %31) + call void @dtor.260(%Token* %"$tmpC5") + %28 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %29 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %28, i32 0, i32 0 + call void @front.493(%Token* %tk, %"RangeWithLookahead[SparrowScanner]"* %29) + %30 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %31 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %30, i32 0, i32 3 + %32 = call i1 @isEmpty.416(%"Vector[Char]"* %31) br i1 %32, label %cond.true7, label %cond.false8 cond.true7: ; preds = %while_end br label %cond.end9 cond.false8: ; preds = %while_end - %33 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %34 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %33, i32 0, i32 3 - %35 = call i8* @back.405(%"Vector[Char]"* %34) + %33 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %34 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %33, i32 0, i32 3 + %35 = call i8* @back.511(%"Vector[Char]"* %34) %36 = load i8, i8* %35 %37 = icmp eq i8 %36, 123 br label %cond.end9 @@ -16735,9 +19635,9 @@ if_then12: ; preds = %cond.end16 %41 = getelementptr inbounds %LineCol, %LineCol* %40, i32 0, i32 1 %42 = load i32, i32* %41 store i32 %42, i32* %newCol - %43 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %44 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %43, i32 0, i32 2 - %45 = call i32* @back.406(%"Vector[UInt]"* %44) + %43 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %44 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %43, i32 0, i32 2 + %45 = call i32* @back.512(%"Vector[UInt]"* %44) %46 = load i32, i32* %45 store i32 %46, i32* %oldCol br label %if_block18 @@ -16758,8 +19658,8 @@ cond.end16: ; preds = %cond.false15, %cond if_block18: ; preds = %if_then12 %48 = getelementptr inbounds %Token, %Token* %tk, i32 0, i32 1 - call void @ctor.313(%TokenType* %tmp.this21, i32 0) - %49 = call i1 @"==.273"(%TokenType* %48, %TokenType* %tmp.this21) + call void @ctor.417(%TokenType* %tmp.this21, i32 0) + %49 = call i1 @"==.352"(%TokenType* %48, %TokenType* %tmp.this21) br i1 %49, label %if_then19, label %if_end20 if_then19: ; preds = %if_block18 @@ -16778,12 +19678,12 @@ if_block23: ; preds = %if_end20 br i1 %53, label %cond.true32, label %cond.false33 if_then24: ; preds = %cond.end28 - %54 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %55 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %54, i32 0, i32 4 - call void @ctor.313(%TokenType* %tmp.this41, i32 31) - call void @"=.249"(%TokenType* %55, %TokenType* %tmp.this41) - %56 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %57 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %56, i32 0, i32 5 + %54 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %55 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %54, i32 0, i32 4 + call void @ctor.417(%TokenType* %tmp.this41, i32 31) + call void @"=.298"(%TokenType* %55, %TokenType* %tmp.this41) + %56 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %57 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %56, i32 0, i32 5 store i32 1, i32* %57 br label %if_end25 @@ -16791,8 +19691,8 @@ if_end25: ; preds = %if_then24, %cond.en br i1 %cond.res38, label %cond_destruct_alt142, label %cond_destruct_alt243 cond.true26: ; preds = %cond.end31 - call void @ctor.313(%TokenType* %tmp.this39, i32 25) - %58 = call i1 @"==.273"(%TokenType* %oldType, %TokenType* %tmp.this39) + call void @ctor.417(%TokenType* %tmp.this39, i32 25) + %58 = call i1 @"==.352"(%TokenType* %oldType, %TokenType* %tmp.this39) %59 = xor i1 true, %58 br label %cond.end28 @@ -16804,8 +19704,8 @@ cond.end28: ; preds = %cond.false27, %cond br i1 %cond.res40, label %if_then24, label %if_end25 cond.true29: ; preds = %cond.end34 - call void @ctor.313(%TokenType* %tmp.this37, i32 31) - %60 = call i1 @"==.273"(%TokenType* %oldType, %TokenType* %tmp.this37) + call void @ctor.417(%TokenType* %tmp.this37, i32 31) + %60 = call i1 @"==.352"(%TokenType* %oldType, %TokenType* %tmp.this37) %61 = xor i1 true, %60 br label %cond.end31 @@ -16818,8 +19718,8 @@ cond.end31: ; preds = %cond.false30, %cond cond.true32: ; preds = %if_block23 %62 = getelementptr inbounds %Token, %Token* %tk, i32 0, i32 1 - call void @ctor.313(%TokenType* %tmp.this35, i32 24) - %63 = call i1 @"==.273"(%TokenType* %62, %TokenType* %tmp.this35) + call void @ctor.417(%TokenType* %tmp.this35, i32 24) + %63 = call i1 @"==.352"(%TokenType* %62, %TokenType* %tmp.this35) %64 = xor i1 true, %63 br label %cond.end34 @@ -16864,16 +19764,16 @@ if_block51: ; preds = %cond_destruct_end50 br i1 %67, label %cond.true54, label %cond.false55 if_then52: ; preds = %cond.end56 - %68 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %69 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %68, i32 0, i32 4 - call void @ctor.313(%TokenType* %tmp.this59, i32 24) - call void @"=.249"(%TokenType* %69, %TokenType* %tmp.this59) - %70 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %71 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %70, i32 0, i32 5 + %68 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %69 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %68, i32 0, i32 4 + call void @ctor.417(%TokenType* %tmp.this59, i32 24) + call void @"=.298"(%TokenType* %69, %TokenType* %tmp.this59) + %70 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %71 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %70, i32 0, i32 5 store i32 1, i32* %71 - %72 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %73 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %72, i32 0, i32 2 - call void @"+=.380"(%"Vector[UInt]"* %73, i32* %newCol) + %72 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %73 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %72, i32 0, i32 2 + call void @"+=.486"(%"Vector[UInt]"* %73, i32* %newCol) br label %if_end53 if_end53: ; preds = %if_then52, %cond.end56 @@ -16881,8 +19781,8 @@ if_end53: ; preds = %if_then52, %cond.en cond.true54: ; preds = %if_block51 %74 = getelementptr inbounds %Token, %Token* %tk, i32 0, i32 1 - call void @ctor.313(%TokenType* %tmp.this57, i32 0) - %75 = call i1 @"==.273"(%TokenType* %74, %TokenType* %tmp.this57) + call void @ctor.417(%TokenType* %tmp.this57, i32 0) + %75 = call i1 @"==.352"(%TokenType* %74, %TokenType* %tmp.this57) %76 = xor i1 true, %75 br label %cond.end56 @@ -16931,67 +19831,67 @@ cond.end68: ; preds = %cond.false67, %cond while_block71: ; preds = %while_step73, %if_then64 %83 = load i32, i32* %newCol - %84 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %85 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %84, i32 0, i32 2 - %86 = call i32* @back.406(%"Vector[UInt]"* %85) + %84 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %85 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %84, i32 0, i32 2 + %86 = call i32* @back.512(%"Vector[UInt]"* %85) %87 = load i32, i32* %86 %88 = icmp slt i32 %83, %87 br i1 %88, label %while_body72, label %while_end74 while_body72: ; preds = %while_block71 %89 = call i32 @"post_++.39"(i32* %numDedents) - %90 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %91 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %90, i32 0, i32 2 - call void @popBack.408(%"Vector[UInt]"* %91) + %90 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %91 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %90, i32 0, i32 2 + call void @popBack.514(%"Vector[UInt]"* %91) br label %while_step73 while_step73: ; preds = %while_body72 br label %while_block71 while_end74: ; preds = %while_block71 - %92 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %93 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %92, i32 0, i32 4 - call void @ctor.313(%TokenType* %tmp.this75, i32 31) - call void @"=.249"(%TokenType* %93, %TokenType* %tmp.this75) + %92 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %93 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %92, i32 0, i32 4 + call void @ctor.417(%TokenType* %tmp.this75, i32 31) + call void @"=.298"(%TokenType* %93, %TokenType* %tmp.this75) %94 = load i32, i32* %numDedents %95 = add i32 1, %94 - %96 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %97 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %96, i32 0, i32 5 + %96 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %97 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %96, i32 0, i32 5 store i32 %95, i32* %97 br label %if_block76 if_block76: ; preds = %while_end74 %98 = load i32, i32* %newCol - %99 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %100 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %99, i32 0, i32 2 - %101 = call i32* @back.406(%"Vector[UInt]"* %100) + %99 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %100 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %99, i32 0, i32 2 + %101 = call i32* @back.512(%"Vector[UInt]"* %100) %102 = load i32, i32* %101 %103 = icmp ne i32 %98, %102 br i1 %103, label %if_then77, label %if_end78 if_then77: ; preds = %if_block76 - %104 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %105 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %104, i32 0, i32 1 - %106 = getelementptr inbounds %Token, %Token* %tk, i32 0, i32 0 - %107 = load %Location, %Location* %106 + %104 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %105 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %104, i32 0, i32 1 + %106 = load %ErrorReporter, %ErrorReporter* %105 + %107 = getelementptr inbounds %Token, %Token* %tk, i32 0, i32 0 %108 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 0 %109 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 1 - store i8* getelementptr inbounds ([32 x i8], [32 x i8]* @str.42, i32 0, i32 0), i8** %108 - store i8* getelementptr inbounds ([32 x i8], [32 x i8]* @str.42, i32 0, i32 31), i8** %109 + store i8* getelementptr inbounds ([32 x i8], [32 x i8]* @str.39, i32 0, i32 0), i8** %108 + store i8* getelementptr inbounds ([32 x i8], [32 x i8]* @str.39, i32 0, i32 31), i8** %109 %110 = load %StringRef, %StringRef* %tmp.StringRef - %111 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %112 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %111, i32 0, i32 2 - %113 = call i32* @back.406(%"Vector[UInt]"* %112) + %111 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %112 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %111, i32 0, i32 2 + %113 = call i32* @back.512(%"Vector[UInt]"* %112) %114 = load i32, i32* %113 %115 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef80, i32 0, i32 0 %116 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef80, i32 0, i32 1 - store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.43, i32 0, i32 0), i8** %115 - store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.43, i32 0, i32 6), i8** %116 + store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.40, i32 0, i32 0), i8** %115 + store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.40, i32 0, i32 6), i8** %116 %117 = load %StringRef, %StringRef* %tmp.StringRef80 %118 = load i32, i32* %newCol - call void @toString.409(%String* %"$tmpC79", %StringRef %110, i32 %114, %StringRef %117, i32 %118) - call void @reportError(%ExternalErrorReporter* %105, %Location %107, %String* %"$tmpC79") - call void @dtor.218(%String* %"$tmpC79") + call void @toString.515(%String* %"$tmpC79", %StringRef %110, i32 %114, %StringRef %117, i32 %118) + call void @reportError.450(%ErrorReporter %106, %Location* %107, %String* %"$tmpC79") + call void @dtor.261(%String* %"$tmpC79") br label %if_end78 if_end78: ; preds = %if_then77, %if_block76 @@ -17008,13 +19908,13 @@ cond_destruct_end83: ; preds = %cond_destruct_alt28 if_block84: ; preds = %if_end13 %119 = getelementptr inbounds %Token, %Token* %tk, i32 0, i32 1 - call void @ctor.313(%TokenType* %tmp.this87, i32 28) - %120 = call i1 @"==.273"(%TokenType* %119, %TokenType* %tmp.this87) + call void @ctor.417(%TokenType* %tmp.this87, i32 28) + %120 = call i1 @"==.352"(%TokenType* %119, %TokenType* %tmp.this87) br i1 %120, label %if_then85, label %if_else if_then85: ; preds = %if_block84 - %121 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %122 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %121, i32 0, i32 3 + %121 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %122 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %121, i32 0, i32 3 store i8 40, i8* %"$tmpForRef" call void @"+="(%"Vector[Char]"* %122, i8* %"$tmpForRef") br label %if_end86 @@ -17023,18 +19923,18 @@ if_else: ; preds = %if_block84 br label %if_block88 if_end86: ; preds = %if_end91, %if_then85 - call void @dtor.217(%Token* %tk) + call void @dtor.260(%Token* %tk) ret void if_block88: ; preds = %if_else %123 = getelementptr inbounds %Token, %Token* %tk, i32 0, i32 1 - call void @ctor.313(%TokenType* %tmp.this92, i32 26) - %124 = call i1 @"==.273"(%TokenType* %123, %TokenType* %tmp.this92) + call void @ctor.417(%TokenType* %tmp.this92, i32 26) + %124 = call i1 @"==.352"(%TokenType* %123, %TokenType* %tmp.this92) br i1 %124, label %if_then89, label %if_else90 if_then89: ; preds = %if_block88 - %125 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %126 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %125, i32 0, i32 3 + %125 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %126 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %125, i32 0, i32 3 store i8 91, i8* %"$tmpForRef93" call void @"+="(%"Vector[Char]"* %126, i8* %"$tmpForRef93") br label %if_end91 @@ -17047,13 +19947,13 @@ if_end91: ; preds = %if_end97, %if_then8 if_block94: ; preds = %if_else90 %127 = getelementptr inbounds %Token, %Token* %tk, i32 0, i32 1 - call void @ctor.313(%TokenType* %tmp.this98, i32 24) - %128 = call i1 @"==.273"(%TokenType* %127, %TokenType* %tmp.this98) + call void @ctor.417(%TokenType* %tmp.this98, i32 24) + %128 = call i1 @"==.352"(%TokenType* %127, %TokenType* %tmp.this98) br i1 %128, label %if_then95, label %if_else96 if_then95: ; preds = %if_block94 - %129 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %130 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %129, i32 0, i32 3 + %129 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %130 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %129, i32 0, i32 3 store i8 123, i8* %"$tmpForRef99" call void @"+="(%"Vector[Char]"* %130, i8* %"$tmpForRef99") br label %if_end97 @@ -17066,14 +19966,14 @@ if_end97: ; preds = %if_end103, %if_then if_block100: ; preds = %if_else96 %131 = getelementptr inbounds %Token, %Token* %tk, i32 0, i32 1 - call void @ctor.313(%TokenType* %tmp.this107, i32 29) - %132 = call i1 @"==.273"(%TokenType* %131, %TokenType* %tmp.this107) + call void @ctor.417(%TokenType* %tmp.this107, i32 29) + %132 = call i1 @"==.352"(%TokenType* %131, %TokenType* %tmp.this107) br i1 %132, label %cond.true104, label %cond.false105 if_then101: ; preds = %cond.end106 - %133 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %134 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %133, i32 0, i32 3 - call void @popBack.412(%"Vector[Char]"* %134) + %133 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %134 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %133, i32 0, i32 3 + call void @popBack.518(%"Vector[Char]"* %134) br label %if_end103 if_else102: ; preds = %cond.end106 @@ -17083,9 +19983,9 @@ if_end103: ; preds = %if_end112, %if_then br label %if_end97 cond.true104: ; preds = %if_block100 - %135 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %136 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %135, i32 0, i32 3 - %137 = call i8* @back.405(%"Vector[Char]"* %136) + %135 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %136 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %135, i32 0, i32 3 + %137 = call i8* @back.511(%"Vector[Char]"* %136) %138 = load i8, i8* %137 %139 = icmp eq i8 %138, 40 br label %cond.end106 @@ -17099,14 +19999,14 @@ cond.end106: ; preds = %cond.false105, %con if_block109: ; preds = %if_else102 %140 = getelementptr inbounds %Token, %Token* %tk, i32 0, i32 1 - call void @ctor.313(%TokenType* %tmp.this116, i32 27) - %141 = call i1 @"==.273"(%TokenType* %140, %TokenType* %tmp.this116) + call void @ctor.417(%TokenType* %tmp.this116, i32 27) + %141 = call i1 @"==.352"(%TokenType* %140, %TokenType* %tmp.this116) br i1 %141, label %cond.true113, label %cond.false114 if_then110: ; preds = %cond.end115 - %142 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %143 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %142, i32 0, i32 3 - call void @popBack.412(%"Vector[Char]"* %143) + %142 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %143 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %142, i32 0, i32 3 + call void @popBack.518(%"Vector[Char]"* %143) br label %if_end112 if_else111: ; preds = %cond.end115 @@ -17116,9 +20016,9 @@ if_end112: ; preds = %if_end120, %if_then br label %if_end103 cond.true113: ; preds = %if_block109 - %144 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %145 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %144, i32 0, i32 3 - %146 = call i8* @back.405(%"Vector[Char]"* %145) + %144 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %145 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %144, i32 0, i32 3 + %146 = call i8* @back.511(%"Vector[Char]"* %145) %147 = load i8, i8* %146 %148 = icmp eq i8 %147, 91 br label %cond.end115 @@ -17132,23 +20032,23 @@ cond.end115: ; preds = %cond.false114, %con if_block118: ; preds = %if_else111 %149 = getelementptr inbounds %Token, %Token* %tk, i32 0, i32 1 - call void @ctor.313(%TokenType* %tmp.this124, i32 25) - %150 = call i1 @"==.273"(%TokenType* %149, %TokenType* %tmp.this124) + call void @ctor.417(%TokenType* %tmp.this124, i32 25) + %150 = call i1 @"==.352"(%TokenType* %149, %TokenType* %tmp.this124) br i1 %150, label %cond.true121, label %cond.false122 if_then119: ; preds = %cond.end123 - %151 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %152 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %151, i32 0, i32 3 - call void @popBack.412(%"Vector[Char]"* %152) + %151 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %152 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %151, i32 0, i32 3 + call void @popBack.518(%"Vector[Char]"* %152) br label %if_end120 if_end120: ; preds = %if_then119, %cond.end123 br label %if_end112 cond.true121: ; preds = %if_block118 - %153 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %154 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %153, i32 0, i32 3 - %155 = call i8* @back.405(%"Vector[Char]"* %154) + %153 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %154 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %153, i32 0, i32 3 + %155 = call i8* @back.511(%"Vector[Char]"* %154) %156 = load i8, i8* %155 %157 = icmp eq i8 %156, 123 br label %cond.end123 @@ -17162,84 +20062,84 @@ cond.end123: ; preds = %cond.false122, %con } ; Function Attrs: inlinehint nounwind -define internal void @front.390(%Token* sret %_result, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this) #4 { +define internal void @front.496(%Token* sret %_result, %"SparrowLayoutDecoder[SparrowScanner]"* %this) #4 { %_result.addr = alloca %Token* store %Token* %_result, %Token** %_result.addr - %this.addr = alloca %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr + %this.addr = alloca %"SparrowLayoutDecoder[SparrowScanner]"* + store %"SparrowLayoutDecoder[SparrowScanner]"* %this, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr %tk = alloca %Token br label %code code: ; preds = %0 - %1 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 0 - call void @front.387(%Token* %tk, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %2) + %1 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %2 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %1, i32 0, i32 0 + call void @front.493(%Token* %tk, %"RangeWithLookahead[SparrowScanner]"* %2) br label %if_block if_block: ; preds = %code - %3 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %4 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %3, i32 0, i32 5 + %3 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %4 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %3, i32 0, i32 5 %5 = load i32, i32* %4 %6 = icmp sgt i32 %5, 0 br i1 %6, label %if_then, label %if_end if_then: ; preds = %if_block %7 = getelementptr inbounds %Token, %Token* %tk, i32 0, i32 1 - %8 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %9 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %8, i32 0, i32 4 - call void @"=.249"(%TokenType* %7, %TokenType* %9) + %8 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %9 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %8, i32 0, i32 4 + call void @"=.298"(%TokenType* %7, %TokenType* %9) br label %if_end if_end: ; preds = %if_then, %if_block %10 = load %Token*, %Token** %_result.addr - call void @ctor.182(%Token* %10, %Token* %tk) - call void @dtor.217(%Token* %tk) + call void @ctor.202(%Token* %10, %Token* %tk) + call void @dtor.260(%Token* %tk) ret void dumy_block: ; No predecessors! - call void @dtor.217(%Token* %tk) + call void @dtor.260(%Token* %tk) ret void } ; Function Attrs: inlinehint nounwind -define internal void @popFront.391(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this) #4 { - %this.addr = alloca %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* - store %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr +define internal void @popFront.497(%"RangeWithLookahead[SparrowScanner]"* %this) #4 { + %this.addr = alloca %"RangeWithLookahead[SparrowScanner]"* + store %"RangeWithLookahead[SparrowScanner]"* %this, %"RangeWithLookahead[SparrowScanner]"** %this.addr %tmp.this = alloca i64 %"$tmpC" = alloca %Token br label %code code: ; preds = %0 - %1 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr - %2 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %1, i32 0, i32 1 + %1 = load %"RangeWithLookahead[SparrowScanner]"*, %"RangeWithLookahead[SparrowScanner]"** %this.addr + %2 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner]", %"RangeWithLookahead[SparrowScanner]"* %1, i32 0, i32 1 store i64 0, i64* %tmp.this %3 = load i64, i64* %tmp.this - call void @remove.392(%"Vector[Token]"* %2, i64 %3) + call void @remove.498(%"Vector[Token]"* %2, i64 %3) br label %if_block if_block: ; preds = %code - %4 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr - %5 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %4, i32 0, i32 1 - %6 = call i1 @isEmpty.386(%"Vector[Token]"* %5) + %4 = load %"RangeWithLookahead[SparrowScanner]"*, %"RangeWithLookahead[SparrowScanner]"** %this.addr + %5 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner]", %"RangeWithLookahead[SparrowScanner]"* %4, i32 0, i32 1 + %6 = call i1 @isEmpty.492(%"Vector[Token]"* %5) br i1 %6, label %cond.true, label %cond.false if_then: ; preds = %cond.end - %7 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr - %8 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %7, i32 0, i32 1 - %9 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr - %10 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %9, i32 0, i32 0 - call void @"post_++.307"(%Token* %"$tmpC", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %10) - call void @"+=.305"(%"Vector[Token]"* %8, %Token* %"$tmpC") - call void @dtor.217(%Token* %"$tmpC") + %7 = load %"RangeWithLookahead[SparrowScanner]"*, %"RangeWithLookahead[SparrowScanner]"** %this.addr + %8 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner]", %"RangeWithLookahead[SparrowScanner]"* %7, i32 0, i32 1 + %9 = load %"RangeWithLookahead[SparrowScanner]"*, %"RangeWithLookahead[SparrowScanner]"** %this.addr + %10 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner]", %"RangeWithLookahead[SparrowScanner]"* %9, i32 0, i32 0 + call void @"post_++.411"(%Token* %"$tmpC", %SparrowScanner* %10) + call void @"+=.409"(%"Vector[Token]"* %8, %Token* %"$tmpC") + call void @dtor.260(%Token* %"$tmpC") br label %if_end if_end: ; preds = %if_then, %cond.end ret void cond.true: ; preds = %if_block - %11 = load %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"** %this.addr - %12 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]", %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %11, i32 0, i32 0 - %13 = call i1 @"pre_!!.303"(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %12) + %11 = load %"RangeWithLookahead[SparrowScanner]"*, %"RangeWithLookahead[SparrowScanner]"** %this.addr + %12 = getelementptr inbounds %"RangeWithLookahead[SparrowScanner]", %"RangeWithLookahead[SparrowScanner]"* %11, i32 0, i32 0 + %13 = call i1 @"pre_!!.407"(%SparrowScanner* %12) br label %cond.end cond.false: ; preds = %if_block @@ -17251,7 +20151,7 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: inlinehint nounwind -define internal void @remove.392(%"Vector[Token]"* %this, i64 %index) #4 { +define internal void @remove.498(%"Vector[Token]"* %this, i64 %index) #4 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr %index.addr = alloca i64 @@ -17262,25 +20162,25 @@ define internal void @remove.392(%"Vector[Token]"* %this, i64 %index) #4 { code: ; preds = %0 %1 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr - call void @all.393(%"ContiguousMemoryRange[Token]"* %r, %"Vector[Token]"* %1) + call void @all.499(%"ContiguousMemoryRange[Token]"* %r, %"Vector[Token]"* %1) %2 = load i64, i64* %index.addr - call void @popFront.395(%"ContiguousMemoryRange[Token]"* %r, i64 %2) + call void @popFront.501(%"ContiguousMemoryRange[Token]"* %r, i64 %2) %3 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr - %4 = call i64 @size.191(%"Vector[Token]"* %3) + %4 = call i64 @size.209(%"Vector[Token]"* %3) %5 = load i64, i64* %index.addr %6 = call i64 @_SizeType_opMinus(i64 %4, i64 %5) store i64 1, i64* %tmp.this %7 = load i64, i64* %tmp.this %8 = call i64 @_SizeType_opMinus(i64 %6, i64 %7) - call void @popBack.397(%"ContiguousMemoryRange[Token]"* %r, i64 %8) + call void @popBack.503(%"ContiguousMemoryRange[Token]"* %r, i64 %8) %9 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %10 = load %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %r - call void @remove.398(%"Vector[Token]"* %9, %"ContiguousMemoryRange[Token]" %10) + call void @remove.504(%"Vector[Token]"* %9, %"ContiguousMemoryRange[Token]" %10) ret void } ; Function Attrs: inlinehint nounwind -define internal void @all.393(%"ContiguousMemoryRange[Token]"* sret %_result, %"Vector[Token]"* %this) #4 { +define internal void @all.499(%"ContiguousMemoryRange[Token]"* sret %_result, %"Vector[Token]"* %this) #4 { %_result.addr = alloca %"ContiguousMemoryRange[Token]"* store %"ContiguousMemoryRange[Token]"* %_result, %"ContiguousMemoryRange[Token]"** %_result.addr %this.addr = alloca %"Vector[Token]"* @@ -17295,12 +20195,12 @@ code: ; preds = %0 %5 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %6 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %5, i32 0, i32 1 %7 = load %"RawPtr[Token]", %"RawPtr[Token]"* %6 - call void @ctor.394(%"ContiguousMemoryRange[Token]"* %1, %"RawPtr[Token]" %4, %"RawPtr[Token]" %7) + call void @ctor.500(%"ContiguousMemoryRange[Token]"* %1, %"RawPtr[Token]" %4, %"RawPtr[Token]" %7) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.394(%"ContiguousMemoryRange[Token]"* %this, %"RawPtr[Token]" %f_begin, %"RawPtr[Token]" %f_end) #3 { +define internal void @ctor.500(%"ContiguousMemoryRange[Token]"* %this, %"RawPtr[Token]" %f_begin, %"RawPtr[Token]" %f_end) #3 { %this.addr = alloca %"ContiguousMemoryRange[Token]"* store %"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"** %this.addr %f_begin.addr = alloca %"RawPtr[Token]" @@ -17312,15 +20212,15 @@ define internal void @ctor.394(%"ContiguousMemoryRange[Token]"* %this, %"RawPtr[ code: ; preds = %0 %1 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %this.addr %2 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %1, i32 0, i32 0 - call void @ctor.199(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %f_begin.addr) + call void @ctor.217(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %f_begin.addr) %3 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %this.addr %4 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %3, i32 0, i32 1 - call void @ctor.199(%"RawPtr[Token]"* %4, %"RawPtr[Token]"* %f_end.addr) + call void @ctor.217(%"RawPtr[Token]"* %4, %"RawPtr[Token]"* %f_end.addr) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @popFront.395(%"ContiguousMemoryRange[Token]"* %this, i64 %n) #3 { +define internal void @popFront.501(%"ContiguousMemoryRange[Token]"* %this, i64 %n) #3 { %this.addr = alloca %"ContiguousMemoryRange[Token]"* store %"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"** %this.addr %n.addr = alloca i64 @@ -17338,13 +20238,13 @@ code: ; preds = %0 %6 = load i64, i64* %n.addr store i64 %6, i64* %tmp.this %7 = load i64, i64* %tmp.this - call void @advance.396(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %5, i64 %7) - call void @"=.194"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %"$tmpC") + call void @advance.502(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %5, i64 %7) + call void @"=.212"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %"$tmpC") ret void } ; Function Attrs: inlinehint nounwind -define internal void @advance.396(%"RawPtr[Token]"* sret %_result, %"RawPtr[Token]" %this, i64 %n) #4 { +define internal void @advance.502(%"RawPtr[Token]"* sret %_result, %"RawPtr[Token]" %this, i64 %n) #4 { %_result.addr = alloca %"RawPtr[Token]"* store %"RawPtr[Token]"* %_result, %"RawPtr[Token]"** %_result.addr %this.addr = alloca %"RawPtr[Token]" @@ -17358,7 +20258,7 @@ define internal void @advance.396(%"RawPtr[Token]"* sret %_result, %"RawPtr[Toke code: ; preds = %0 %1 = load %"RawPtr[Token]"*, %"RawPtr[Token]"** %_result.addr %2 = load %"RawPtr[Token]", %"RawPtr[Token]"* %this.addr - %3 = call i8* @bytePtr.193(%"RawPtr[Token]" %2) + %3 = call i8* @bytePtr.211(%"RawPtr[Token]" %2) %4 = load i64, i64* %n.addr store i64 72, i64* %tmp.this1 %5 = load i64, i64* %tmp.this1 @@ -17366,12 +20266,12 @@ code: ; preds = %0 store i64 %6, i64* %tmp.this %7 = load i64, i64* %tmp.this %8 = call i8* @ptrAdd(i8* %3, i64 %7) - call void @ctor.198(%"RawPtr[Token]"* %1, i8* %8) + call void @ctor.216(%"RawPtr[Token]"* %1, i8* %8) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @popBack.397(%"ContiguousMemoryRange[Token]"* %this, i64 %n) #3 { +define internal void @popBack.503(%"ContiguousMemoryRange[Token]"* %this, i64 %n) #3 { %this.addr = alloca %"ContiguousMemoryRange[Token]"* store %"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"** %this.addr %n.addr = alloca i64 @@ -17390,13 +20290,13 @@ code: ; preds = %0 store i64 %6, i64* %tmp.this %7 = load i64, i64* %tmp.this %8 = sub i64 0, %7 - call void @advance.396(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %5, i64 %8) - call void @"=.194"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %"$tmpC") + call void @advance.502(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %5, i64 %8) + call void @"=.212"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %"$tmpC") ret void } ; Function Attrs: inlinehint nounwind -define internal void @remove.398(%"Vector[Token]"* %this, %"ContiguousMemoryRange[Token]" %range) #4 { +define internal void @remove.504(%"Vector[Token]"* %this, %"ContiguousMemoryRange[Token]" %range) #4 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr %range.addr = alloca %"ContiguousMemoryRange[Token]" @@ -17411,28 +20311,28 @@ define internal void @remove.398(%"Vector[Token]"* %this, %"ContiguousMemoryRang code: ; preds = %0 %1 = load %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %range.addr - call void @frontPtr.399(%"RawPtr[Token]"* %rBegin, %"ContiguousMemoryRange[Token]" %1) + call void @frontPtr.505(%"RawPtr[Token]"* %rBegin, %"ContiguousMemoryRange[Token]" %1) %2 = load %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %range.addr - call void @backPtr.400(%"RawPtr[Token]"* %rEnd, %"ContiguousMemoryRange[Token]" %2) - call void @ctor.401(%"ContiguousMemoryRange[Token]"* %"$rangeVar", %"ContiguousMemoryRange[Token]"* %range.addr) + call void @backPtr.506(%"RawPtr[Token]"* %rEnd, %"ContiguousMemoryRange[Token]" %2) + call void @ctor.507(%"ContiguousMemoryRange[Token]"* %"$rangeVar", %"ContiguousMemoryRange[Token]"* %range.addr) br label %while_block while_block: ; preds = %while_step, %code %3 = load %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %"$rangeVar" - %4 = call i1 @isEmpty.402(%"ContiguousMemoryRange[Token]" %3) + %4 = call i1 @isEmpty.508(%"ContiguousMemoryRange[Token]" %3) %5 = xor i1 true, %4 br i1 %5, label %while_body, label %while_end while_body: ; preds = %while_block %6 = load %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %"$rangeVar" - %7 = call %Token* @front.403(%"ContiguousMemoryRange[Token]" %6) + %7 = call %Token* @front.509(%"ContiguousMemoryRange[Token]" %6) store %Token* %7, %Token** %el %8 = load %Token*, %Token** %el - call void @dtor.217(%Token* %8) + call void @dtor.260(%Token* %8) br label %while_step while_step: ; preds = %while_body - call void @popFront.404(%"ContiguousMemoryRange[Token]"* %"$rangeVar") + call void @popFront.510(%"ContiguousMemoryRange[Token]"* %"$rangeVar") br label %while_block while_end: ; preds = %while_block @@ -17441,25 +20341,25 @@ while_end: ; preds = %while_block while_block1: ; preds = %while_step3, %while_end %9 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %10 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %9, i32 0, i32 1 - %11 = call i1 @"==.200"(%"RawPtr[Token]"* %rEnd, %"RawPtr[Token]"* %10) + %11 = call i1 @"==.218"(%"RawPtr[Token]"* %rEnd, %"RawPtr[Token]"* %10) %12 = xor i1 true, %11 br i1 %12, label %while_body2, label %while_end4 while_body2: ; preds = %while_block1 %13 = load %"RawPtr[Token]", %"RawPtr[Token]"* %rBegin - %14 = call %Token* @value.201(%"RawPtr[Token]" %13) + %14 = call %Token* @value.219(%"RawPtr[Token]" %13) %15 = load %"RawPtr[Token]", %"RawPtr[Token]"* %rEnd - %16 = call %Token* @value.201(%"RawPtr[Token]" %15) - call void @ctor.182(%Token* %14, %Token* %16) + %16 = call %Token* @value.219(%"RawPtr[Token]" %15) + call void @ctor.202(%Token* %14, %Token* %16) %17 = load %"RawPtr[Token]", %"RawPtr[Token]"* %rEnd - %18 = call %Token* @value.201(%"RawPtr[Token]" %17) - call void @dtor.217(%Token* %18) + %18 = call %Token* @value.219(%"RawPtr[Token]" %17) + call void @dtor.260(%Token* %18) %19 = load %"RawPtr[Token]", %"RawPtr[Token]"* %rBegin - call void @advance.202(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %19) - call void @"=.194"(%"RawPtr[Token]"* %rBegin, %"RawPtr[Token]"* %"$tmpC") + call void @advance.220(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %19) + call void @"=.212"(%"RawPtr[Token]"* %rBegin, %"RawPtr[Token]"* %"$tmpC") %20 = load %"RawPtr[Token]", %"RawPtr[Token]"* %rEnd - call void @advance.202(%"RawPtr[Token]"* %"$tmpC5", %"RawPtr[Token]" %20) - call void @"=.194"(%"RawPtr[Token]"* %rEnd, %"RawPtr[Token]"* %"$tmpC5") + call void @advance.220(%"RawPtr[Token]"* %"$tmpC5", %"RawPtr[Token]" %20) + call void @"=.212"(%"RawPtr[Token]"* %rEnd, %"RawPtr[Token]"* %"$tmpC5") br label %while_step3 while_step3: ; preds = %while_body2 @@ -17468,12 +20368,12 @@ while_step3: ; preds = %while_body2 while_end4: ; preds = %while_block1 %21 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr %22 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %21, i32 0, i32 1 - call void @"=.194"(%"RawPtr[Token]"* %22, %"RawPtr[Token]"* %rBegin) + call void @"=.212"(%"RawPtr[Token]"* %22, %"RawPtr[Token]"* %rBegin) ret void } ; Function Attrs: inlinehint nounwind -define internal void @frontPtr.399(%"RawPtr[Token]"* sret %_result, %"ContiguousMemoryRange[Token]" %this) #4 { +define internal void @frontPtr.505(%"RawPtr[Token]"* sret %_result, %"ContiguousMemoryRange[Token]" %this) #4 { %_result.addr = alloca %"RawPtr[Token]"* store %"RawPtr[Token]"* %_result, %"RawPtr[Token]"** %_result.addr %this.addr = alloca %"ContiguousMemoryRange[Token]" @@ -17483,12 +20383,12 @@ define internal void @frontPtr.399(%"RawPtr[Token]"* sret %_result, %"Contiguous code: ; preds = %0 %1 = load %"RawPtr[Token]"*, %"RawPtr[Token]"** %_result.addr %2 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %this.addr, i32 0, i32 0 - call void @ctor.199(%"RawPtr[Token]"* %1, %"RawPtr[Token]"* %2) + call void @ctor.217(%"RawPtr[Token]"* %1, %"RawPtr[Token]"* %2) ret void } ; Function Attrs: inlinehint nounwind -define internal void @backPtr.400(%"RawPtr[Token]"* sret %_result, %"ContiguousMemoryRange[Token]" %this) #4 { +define internal void @backPtr.506(%"RawPtr[Token]"* sret %_result, %"ContiguousMemoryRange[Token]" %this) #4 { %_result.addr = alloca %"RawPtr[Token]"* store %"RawPtr[Token]"* %_result, %"RawPtr[Token]"** %_result.addr %this.addr = alloca %"ContiguousMemoryRange[Token]" @@ -17498,12 +20398,12 @@ define internal void @backPtr.400(%"RawPtr[Token]"* sret %_result, %"ContiguousM code: ; preds = %0 %1 = load %"RawPtr[Token]"*, %"RawPtr[Token]"** %_result.addr %2 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %this.addr, i32 0, i32 1 - call void @ctor.199(%"RawPtr[Token]"* %1, %"RawPtr[Token]"* %2) + call void @ctor.217(%"RawPtr[Token]"* %1, %"RawPtr[Token]"* %2) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.401(%"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"* %other) #3 { +define internal void @ctor.507(%"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"* %other) #3 { %this.addr = alloca %"ContiguousMemoryRange[Token]"* store %"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"** %this.addr %other.addr = alloca %"ContiguousMemoryRange[Token]"* @@ -17515,17 +20415,17 @@ code: ; preds = %0 %2 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %1, i32 0, i32 0 %3 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %other.addr %4 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %3, i32 0, i32 0 - call void @ctor.199(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %4) + call void @ctor.217(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %4) %5 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %this.addr %6 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %5, i32 0, i32 1 %7 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %other.addr %8 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %7, i32 0, i32 1 - call void @ctor.199(%"RawPtr[Token]"* %6, %"RawPtr[Token]"* %8) + call void @ctor.217(%"RawPtr[Token]"* %6, %"RawPtr[Token]"* %8) ret void } ; Function Attrs: inlinehint nounwind -define internal i1 @isEmpty.402(%"ContiguousMemoryRange[Token]" %this) #4 { +define internal i1 @isEmpty.508(%"ContiguousMemoryRange[Token]" %this) #4 { %this.addr = alloca %"ContiguousMemoryRange[Token]" store %"ContiguousMemoryRange[Token]" %this, %"ContiguousMemoryRange[Token]"* %this.addr %tmp.this = alloca i64 @@ -17536,7 +20436,7 @@ code: ; preds = %0 %2 = load %"RawPtr[Token]", %"RawPtr[Token]"* %1 %3 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %this.addr, i32 0, i32 0 %4 = load %"RawPtr[Token]", %"RawPtr[Token]"* %3 - %5 = call i64 @diff.192(%"RawPtr[Token]" %2, %"RawPtr[Token]" %4) + %5 = call i64 @diff.210(%"RawPtr[Token]" %2, %"RawPtr[Token]" %4) store i64 0, i64* %tmp.this %6 = load i64, i64* %tmp.this %7 = icmp sle i64 %5, %6 @@ -17544,7 +20444,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal %Token* @front.403(%"ContiguousMemoryRange[Token]" %this) #4 { +define internal %Token* @front.509(%"ContiguousMemoryRange[Token]" %this) #4 { %this.addr = alloca %"ContiguousMemoryRange[Token]" store %"ContiguousMemoryRange[Token]" %this, %"ContiguousMemoryRange[Token]"* %this.addr br label %code @@ -17552,12 +20452,12 @@ define internal %Token* @front.403(%"ContiguousMemoryRange[Token]" %this) #4 { code: ; preds = %0 %1 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %this.addr, i32 0, i32 0 %2 = load %"RawPtr[Token]", %"RawPtr[Token]"* %1 - %3 = call %Token* @value.201(%"RawPtr[Token]" %2) + %3 = call %Token* @value.219(%"RawPtr[Token]" %2) ret %Token* %3 } ; Function Attrs: alwaysinline nounwind -define internal void @popFront.404(%"ContiguousMemoryRange[Token]"* %this) #3 { +define internal void @popFront.510(%"ContiguousMemoryRange[Token]"* %this) #3 { %this.addr = alloca %"ContiguousMemoryRange[Token]"* store %"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"** %this.addr %"$tmpC" = alloca %"RawPtr[Token]" @@ -17569,13 +20469,13 @@ code: ; preds = %0 %3 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %this.addr %4 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %3, i32 0, i32 0 %5 = load %"RawPtr[Token]", %"RawPtr[Token]"* %4 - call void @advance.202(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %5) - call void @"=.194"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %"$tmpC") + call void @advance.220(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %5) + call void @"=.212"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %"$tmpC") ret void } ; Function Attrs: inlinehint nounwind -define internal i8* @back.405(%"Vector[Char]"* %this) #4 { +define internal i8* @back.511(%"Vector[Char]"* %this) #4 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr %"$tmpC" = alloca %"RawPtr[Char]" @@ -17588,14 +20488,14 @@ code: ; preds = %0 %3 = load %"RawPtr[Char]", %"RawPtr[Char]"* %2 store i64 -1, i64* %tmp.this %4 = load i64, i64* %tmp.this - call void @advance.187(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %3, i64 %4) + call void @advance(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %3, i64 %4) %5 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC" %6 = call i8* @value(%"RawPtr[Char]" %5) ret i8* %6 } ; Function Attrs: inlinehint nounwind -define internal i32* @back.406(%"Vector[UInt]"* %this) #4 { +define internal i32* @back.512(%"Vector[UInt]"* %this) #4 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr %"$tmpC" = alloca %"RawPtr[UInt]" @@ -17608,14 +20508,14 @@ code: ; preds = %0 %3 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %2 store i64 -1, i64* %tmp.this %4 = load i64, i64* %tmp.this - call void @advance.407(%"RawPtr[UInt]"* %"$tmpC", %"RawPtr[UInt]" %3, i64 %4) + call void @advance.513(%"RawPtr[UInt]"* %"$tmpC", %"RawPtr[UInt]" %3, i64 %4) %5 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %"$tmpC" - %6 = call i32* @value.229(%"RawPtr[UInt]" %5) + %6 = call i32* @value.272(%"RawPtr[UInt]" %5) ret i32* %6 } ; Function Attrs: inlinehint nounwind -define internal void @advance.407(%"RawPtr[UInt]"* sret %_result, %"RawPtr[UInt]" %this, i64 %n) #4 { +define internal void @advance.513(%"RawPtr[UInt]"* sret %_result, %"RawPtr[UInt]" %this, i64 %n) #4 { %_result.addr = alloca %"RawPtr[UInt]"* store %"RawPtr[UInt]"* %_result, %"RawPtr[UInt]"** %_result.addr %this.addr = alloca %"RawPtr[UInt]" @@ -17629,7 +20529,7 @@ define internal void @advance.407(%"RawPtr[UInt]"* sret %_result, %"RawPtr[UInt] code: ; preds = %0 %1 = load %"RawPtr[UInt]"*, %"RawPtr[UInt]"** %_result.addr %2 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %this.addr - %3 = call i8* @bytePtr.206(%"RawPtr[UInt]" %2) + %3 = call i8* @bytePtr.224(%"RawPtr[UInt]" %2) %4 = load i64, i64* %n.addr store i64 4, i64* %tmp.this1 %5 = load i64, i64* %tmp.this1 @@ -17637,12 +20537,12 @@ code: ; preds = %0 store i64 %6, i64* %tmp.this %7 = load i64, i64* %tmp.this %8 = call i8* @ptrAdd(i8* %3, i64 %7) - call void @ctor.211(%"RawPtr[UInt]"* %1, i8* %8) + call void @ctor.229(%"RawPtr[UInt]"* %1, i8* %8) ret void } ; Function Attrs: inlinehint nounwind -define internal void @popBack.408(%"Vector[UInt]"* %this) #4 { +define internal void @popBack.514(%"Vector[UInt]"* %this) #4 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr %"$tmpC" = alloca %"RawPtr[UInt]" @@ -17657,18 +20557,18 @@ code: ; preds = %0 %5 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %4 store i64 -1, i64* %tmp.this %6 = load i64, i64* %tmp.this - call void @advance.407(%"RawPtr[UInt]"* %"$tmpC", %"RawPtr[UInt]" %5, i64 %6) - call void @"=.207"(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %"$tmpC") + call void @advance.513(%"RawPtr[UInt]"* %"$tmpC", %"RawPtr[UInt]" %5, i64 %6) + call void @"=.225"(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %"$tmpC") %7 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr %8 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %7, i32 0, i32 1 %9 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %8 - %10 = call i32* @value.229(%"RawPtr[UInt]" %9) + %10 = call i32* @value.272(%"RawPtr[UInt]" %9) %11 = load i32, i32* %10 ret void } ; Function Attrs: inlinehint nounwind -define internal void @toString.409(%String* sret %_result, %StringRef %a1, i32 %a2, %StringRef %a3, i32 %a4) #4 { +define internal void @toString.515(%String* sret %_result, %StringRef %a1, i32 %a2, %StringRef %a3, i32 %a4) #4 { %_result.addr = alloca %String* store %String* %_result, %String** %_result.addr %a1.addr = alloca %StringRef @@ -17683,24 +20583,24 @@ define internal void @toString.409(%String* sret %_result, %StringRef %a1, i32 % br label %code code: ; preds = %0 - call void @ctor.289(%StringOutputStream* %s) + call void @ctor.452(%StringOutputStream* %s) %1 = call %StringOutputStream* @"<<"(%StringOutputStream* %s, %StringRef* %a1.addr) - %2 = call %StringOutputStream* @"<<.410"(%StringOutputStream* %1, i32* %a2.addr) + %2 = call %StringOutputStream* @"<<.516"(%StringOutputStream* %1, i32* %a2.addr) %3 = call %StringOutputStream* @"<<"(%StringOutputStream* %2, %StringRef* %a3.addr) - %4 = call %StringOutputStream* @"<<.410"(%StringOutputStream* %3, i32* %a4.addr) + %4 = call %StringOutputStream* @"<<.516"(%StringOutputStream* %3, i32* %a4.addr) %5 = load %String*, %String** %_result.addr %6 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %s, i32 0, i32 0 - call void @ctor.184(%String* %5, %String* %6) - call void @dtor.291(%StringOutputStream* %s) + call void @ctor.189(%String* %5, %String* %6) + call void @dtor.454(%StringOutputStream* %s) ret void dumy_block: ; No predecessors! - call void @dtor.291(%StringOutputStream* %s) + call void @dtor.454(%StringOutputStream* %s) ret void } ; Function Attrs: inlinehint nounwind -define internal %StringOutputStream* @"<<.410"(%StringOutputStream* %s, i32* %x) #4 { +define internal %StringOutputStream* @"<<.516"(%StringOutputStream* %s, i32* %x) #4 { %s.addr = alloca %StringOutputStream* store %StringOutputStream* %s, %StringOutputStream** %s.addr %x.addr = alloca i32* @@ -17715,13 +20615,13 @@ code: ; preds = %0 %4 = zext i32 %3 to i64 store i64 %4, i64* %tmp.this %5 = load i64, i64* %tmp.this - call void @"<<<.411"(%StringOutputStream* %1, i64 %5) + call void @"<<<.517"(%StringOutputStream* %1, i64 %5) %6 = load %StringOutputStream*, %StringOutputStream** %s.addr ret %StringOutputStream* %6 } ; Function Attrs: alwaysinline nounwind -define internal void @"<<<.411"(%StringOutputStream* %this, i64 %x) #3 { +define internal void @"<<<.517"(%StringOutputStream* %this, i64 %x) #3 { %this.addr = alloca %StringOutputStream* store %StringOutputStream* %this, %StringOutputStream** %this.addr %x.addr = alloca i64 @@ -17734,288 +20634,869 @@ code: ; preds = %0 %2 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %1, i32 0, i32 0 %3 = load i64, i64* %x.addr call void @ulongToString(%String* %"$tmpC", i64 %3) - %4 = call %StringRef @all.379(%String* %"$tmpC") + %4 = call %StringRef @all.485(%String* %"$tmpC") call void @append(%String* %2, %StringRef %4) - call void @dtor.218(%String* %"$tmpC") + call void @dtor.261(%String* %"$tmpC") + ret void +} + +; Function Attrs: inlinehint nounwind +define internal void @ulongToString(%String* sret %_result, i64 %x) #4 { + %_result.addr = alloca %String* + store %String* %_result, %String** %_result.addr + %x.addr = alloca i64 + store i64 %x, i64* %x.addr + %buf = alloca [16 x i8] + %"$tmpForRef" = alloca %StringRef + br label %code + +code: ; preds = %0 + %1 = load i64, i64* %x.addr + %2 = bitcast [16 x i8]* %buf to i8* + call void @_ULong_to_CString(i64 %1, i8* %2) + %3 = load %String*, %String** %_result.addr + %4 = bitcast [16 x i8]* %buf to i8* + %5 = call %StringRef @_String_fromCString(i8* %4) + store %StringRef %5, %StringRef* %"$tmpForRef" + call void @ctor.471(%String* %3, %StringRef* %"$tmpForRef") + ret void +} + +; Function Attrs: inlinehint nounwind +define internal void @popBack.518(%"Vector[Char]"* %this) #4 { + %this.addr = alloca %"Vector[Char]"* + store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr + %"$tmpC" = alloca %"RawPtr[Char]" + %tmp.this = alloca i64 + br label %code + +code: ; preds = %0 + %1 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr + %2 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %1, i32 0, i32 1 + %3 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr + %4 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %3, i32 0, i32 1 + %5 = load %"RawPtr[Char]", %"RawPtr[Char]"* %4 + store i64 -1, i64* %tmp.this + %6 = load i64, i64* %tmp.this + call void @advance(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %5, i64 %6) + call void @"=.200"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %"$tmpC") + %7 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr + %8 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %7, i32 0, i32 1 + %9 = load %"RawPtr[Char]", %"RawPtr[Char]"* %8 + %10 = call i8* @value(%"RawPtr[Char]" %9) + %11 = load i8, i8* %10 + ret void +} + +; Function Attrs: inlinehint nounwind +define internal void @ctor.519(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowLayoutDecoder[SparrowScanner]" %tokens, %AstBuilder* %astBuilder, %ErrorReporter %errorReporter) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %tokens.addr = alloca %"SparrowLayoutDecoder[SparrowScanner]" + store %"SparrowLayoutDecoder[SparrowScanner]" %tokens, %"SparrowLayoutDecoder[SparrowScanner]"* %tokens.addr + %astBuilder.addr = alloca %AstBuilder* + store %AstBuilder* %astBuilder, %AstBuilder** %astBuilder.addr + %errorReporter.addr = alloca %ErrorReporter + store %ErrorReporter %errorReporter, %ErrorReporter* %errorReporter.addr + br label %code + +code: ; preds = %0 + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, i32 0, i32 1 + call void @ctor.143(%Token* %2) + %3 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %4 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %3, i32 0, i32 0 + %5 = load %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %tokens.addr + call void @ctor.520(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %4, %"SparrowLayoutDecoder[SparrowScanner]" %5) + %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %7 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %6, i32 0, i32 2 + store i1 false, i1* %7 + %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %9 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %8, i32 0, i32 3 + %10 = load %AstBuilder*, %AstBuilder** %astBuilder.addr + call void @ctor.233(%AstBuilder* %9, %AstBuilder* %10) + %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %12 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %11, i32 0, i32 4 + call void @ctor.204(%ErrorReporter* %12, %ErrorReporter* %errorReporter.addr) + ret void +} + +; Function Attrs: inlinehint nounwind +define internal void @ctor.520(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowLayoutDecoder[SparrowScanner]" %src) #4 { + %this.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* + store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %src.addr = alloca %"SparrowLayoutDecoder[SparrowScanner]" + store %"SparrowLayoutDecoder[SparrowScanner]" %src, %"SparrowLayoutDecoder[SparrowScanner]"* %src.addr + %tmp.this = alloca i64 + %"$tmpC" = alloca %Token + br label %code + +code: ; preds = %0 + %1 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %2 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %1, i32 0, i32 0 + call void @ctor.147(%"SparrowLayoutDecoder[SparrowScanner]"* %2) + %3 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %4 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %3, i32 0, i32 0 + call void @"=.301"(%"SparrowLayoutDecoder[SparrowScanner]"* %4, %"SparrowLayoutDecoder[SparrowScanner]"* %src.addr) + %5 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %6 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %5, i32 0, i32 1 + call void @ctor.149(%"Vector[Token]"* %6) + %7 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %8 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %7, i32 0, i32 1 + store i64 10, i64* %tmp.this + %9 = load i64, i64* %tmp.this + call void @reserve.404(%"Vector[Token]"* %8, i64 %9) + br label %if_block + +if_block: ; preds = %code + %10 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %11 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %10, i32 0, i32 0 + %12 = call i1 @"pre_!!.521"(%"SparrowLayoutDecoder[SparrowScanner]"* %11) + br i1 %12, label %if_then, label %if_end + +if_then: ; preds = %if_block + %13 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %14 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %13, i32 0, i32 1 + %15 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %16 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %15, i32 0, i32 0 + call void @"post_++.523"(%Token* %"$tmpC", %"SparrowLayoutDecoder[SparrowScanner]"* %16) + call void @"+=.409"(%"Vector[Token]"* %14, %Token* %"$tmpC") + call void @dtor.260(%Token* %"$tmpC") + br label %if_end + +if_end: ; preds = %if_then, %if_block + ret void +} + +; Function Attrs: inlinehint nounwind +define internal i1 @"pre_!!.521"(%"SparrowLayoutDecoder[SparrowScanner]"* %r) #4 { + %r.addr = alloca %"SparrowLayoutDecoder[SparrowScanner]"* + store %"SparrowLayoutDecoder[SparrowScanner]"* %r, %"SparrowLayoutDecoder[SparrowScanner]"** %r.addr + br label %code + +code: ; preds = %0 + %1 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %r.addr + %2 = call i1 @isEmpty.522(%"SparrowLayoutDecoder[SparrowScanner]"* %1) + %3 = xor i1 true, %2 + ret i1 %3 +} + +; Function Attrs: inlinehint nounwind +define internal i1 @isEmpty.522(%"SparrowLayoutDecoder[SparrowScanner]"* %this) #4 { + %this.addr = alloca %"SparrowLayoutDecoder[SparrowScanner]"* + store %"SparrowLayoutDecoder[SparrowScanner]"* %this, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + br label %code + +code: ; preds = %0 + %1 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %2 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %1, i32 0, i32 5 + %3 = load i32, i32* %2 + %4 = icmp eq i32 %3, 0 + br i1 %4, label %cond.true, label %cond.false + +cond.true: ; preds = %code + %5 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %this.addr + %6 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner]", %"SparrowLayoutDecoder[SparrowScanner]"* %5, i32 0, i32 0 + %7 = call i1 @isEmpty.491(%"RangeWithLookahead[SparrowScanner]"* %6) + br label %cond.end + +cond.false: ; preds = %code + br label %cond.end + +cond.end: ; preds = %cond.false, %cond.true + %cond.res = phi i1 [ %7, %cond.true ], [ false, %cond.false ] + ret i1 %cond.res +} + +; Function Attrs: inlinehint nounwind +define internal void @"post_++.523"(%Token* sret %_result, %"SparrowLayoutDecoder[SparrowScanner]"* %r) #4 { + %_result.addr = alloca %Token* + store %Token* %_result, %Token** %_result.addr + %r.addr = alloca %"SparrowLayoutDecoder[SparrowScanner]"* + store %"SparrowLayoutDecoder[SparrowScanner]"* %r, %"SparrowLayoutDecoder[SparrowScanner]"** %r.addr + %res = alloca %Token + br label %code + +code: ; preds = %0 + %1 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %r.addr + call void @front.496(%Token* %res, %"SparrowLayoutDecoder[SparrowScanner]"* %1) + %2 = load %"SparrowLayoutDecoder[SparrowScanner]"*, %"SparrowLayoutDecoder[SparrowScanner]"** %r.addr + call void @popFront.495(%"SparrowLayoutDecoder[SparrowScanner]"* %2) + %3 = load %Token*, %Token** %_result.addr + call void @ctor.202(%Token* %3, %Token* %res) + call void @dtor.260(%Token* %res) + ret void + +dumy_block: ; No predecessors! + call void @dtor.260(%Token* %res) + ret void +} + +; Function Attrs: noinline nounwind +define %ParserContext* @spr_parserIf_createParser(%CharSource %chars, %Location* %loc, %AstBuilder* %astBuilder, %ErrorReporter %reporter) #5 { + %chars.addr = alloca %CharSource + store %CharSource %chars, %CharSource* %chars.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %astBuilder.addr = alloca %AstBuilder* + store %AstBuilder* %astBuilder, %AstBuilder** %astBuilder.addr + %reporter.addr = alloca %ErrorReporter + store %ErrorReporter %reporter, %ErrorReporter* %reporter.addr + %res = alloca %ParserContext* + br label %code + +code: ; preds = %0 + %1 = load %Location*, %Location** %loc.addr + %2 = load %AstBuilder*, %AstBuilder** %astBuilder.addr + %3 = call %ParserContext* @new(%CharSource* %chars.addr, %Location* %1, %AstBuilder* %2, %ErrorReporter* %reporter.addr) + store %ParserContext* %3, %ParserContext** %res + %4 = load %ParserContext*, %ParserContext** %res + ret %ParserContext* %4 +} + +; Function Attrs: inlinehint nounwind +define internal %ParserContext* @new(%CharSource* %arg1, %Location* %arg2, %AstBuilder* %arg3, %ErrorReporter* %arg4) #4 { + %arg1.addr = alloca %CharSource* + store %CharSource* %arg1, %CharSource** %arg1.addr + %arg2.addr = alloca %Location* + store %Location* %arg2, %Location** %arg2.addr + %arg3.addr = alloca %AstBuilder* + store %AstBuilder* %arg3, %AstBuilder** %arg3.addr + %arg4.addr = alloca %ErrorReporter* + store %ErrorReporter* %arg4, %ErrorReporter** %arg4.addr + %res = alloca %ParserContext* + br label %code + +code: ; preds = %0 + %1 = call i8* @malloc(i64 1280) + %2 = bitcast i8* %1 to %ParserContext* + store %ParserContext* %2, %ParserContext** %res + %3 = load %ParserContext*, %ParserContext** %res + %4 = load %CharSource*, %CharSource** %arg1.addr + %5 = load %CharSource, %CharSource* %4 + %6 = load %Location*, %Location** %arg2.addr + %7 = load %Location, %Location* %6 + %8 = load %AstBuilder*, %AstBuilder** %arg3.addr + %9 = load %ErrorReporter*, %ErrorReporter** %arg4.addr + %10 = load %ErrorReporter, %ErrorReporter* %9 + call void @ctor.388(%ParserContext* %3, %CharSource %5, %Location %7, %AstBuilder* %8, %ErrorReporter %10) + %11 = load %ParserContext*, %ParserContext** %res + ret %ParserContext* %11 +} + +; Function Attrs: noinline nounwind +define %ParserContext* @spr_parserIf_createParserFile(%StringRef %filename, %Location* %loc, %AstBuilder* %astBuilder, %ErrorReporter %reporter) #5 { + %filename.addr = alloca %StringRef + store %StringRef %filename, %StringRef* %filename.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %astBuilder.addr = alloca %AstBuilder* + store %AstBuilder* %astBuilder, %AstBuilder** %astBuilder.addr + %reporter.addr = alloca %ErrorReporter + store %ErrorReporter %reporter, %ErrorReporter* %reporter.addr + %fileCharSource = alloca %FileCharSource* + %"$tmpC" = alloca %CharSource + br label %code + +code: ; preds = %0 + %1 = call %FileCharSource* @new.524(%StringRef* %filename.addr) + store %FileCharSource* %1, %FileCharSource** %fileCharSource + %2 = load %FileCharSource*, %FileCharSource** %fileCharSource + call void @mkCharSource(%CharSource* %"$tmpC", %FileCharSource* %2) + %3 = load %CharSource, %CharSource* %"$tmpC" + %4 = load %Location*, %Location** %loc.addr + %5 = load %AstBuilder*, %AstBuilder** %astBuilder.addr + %6 = load %ErrorReporter, %ErrorReporter* %reporter.addr + %7 = call %ParserContext* @spr_parserIf_createParser(%CharSource %3, %Location* %4, %AstBuilder* %5, %ErrorReporter %6) + ret %ParserContext* %7 +} + +; Function Attrs: inlinehint nounwind +define internal %FileCharSource* @new.524(%StringRef* %arg1) #4 { + %arg1.addr = alloca %StringRef* + store %StringRef* %arg1, %StringRef** %arg1.addr + %res = alloca %FileCharSource* + br label %code + +code: ; preds = %0 + %1 = call i8* @malloc(i64 8) + %2 = bitcast i8* %1 to %FileCharSource* + store %FileCharSource* %2, %FileCharSource** %res + %3 = load %FileCharSource*, %FileCharSource** %res + %4 = load %StringRef*, %StringRef** %arg1.addr + %5 = load %StringRef, %StringRef* %4 + call void @ctor.525(%FileCharSource* %3, %StringRef %5) + %6 = load %FileCharSource*, %FileCharSource** %res + ret %FileCharSource* %6 +} + +; Function Attrs: inlinehint nounwind +define internal void @ctor.525(%FileCharSource* %this, %StringRef %filename) #4 { + %this.addr = alloca %FileCharSource* + store %FileCharSource* %this, %FileCharSource** %this.addr + %filename.addr = alloca %StringRef + store %StringRef %filename, %StringRef* %filename.addr + %tmp.StringRef = alloca %StringRef + br label %code + +code: ; preds = %0 + %1 = load %FileCharSource*, %FileCharSource** %this.addr + %2 = getelementptr inbounds %FileCharSource, %FileCharSource* %1, i32 0, i32 0 + %3 = load %StringRef, %StringRef* %filename.addr + %4 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 0 + %5 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 1 + store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.41, i32 0, i32 0), i8** %4 + store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.41, i32 0, i32 1), i8** %5 + %6 = load %StringRef, %StringRef* %tmp.StringRef + call void @ctor.526(%File* %2, %StringRef %3, %StringRef %6) + ret void +} + +; Function Attrs: inlinehint nounwind +define internal void @ctor.526(%File* %this, %StringRef %filename, %StringRef %mode) #4 { + %this.addr = alloca %File* + store %File* %this, %File** %this.addr + %filename.addr = alloca %StringRef + store %StringRef %filename, %StringRef* %filename.addr + %mode.addr = alloca %StringRef + store %StringRef %mode, %StringRef* %mode.addr + br label %code + +code: ; preds = %0 + %1 = load %File*, %File** %this.addr + %2 = getelementptr inbounds %File, %File* %1, i32 0, i32 0 + store i8* null, i8** %2 + %3 = call i8* @cStr(%StringRef* %filename.addr) + %4 = call i8* @cStr(%StringRef* %mode.addr) + %5 = call i8* @fopen(i8* %3, i8* %4) + %6 = load %File*, %File** %this.addr + %7 = getelementptr inbounds %File, %File* %6, i32 0, i32 0 + store i8* %5, i8** %7 + ret void +} + +declare i8* @fopen(i8*, i8*) + +; Function Attrs: inlinehint nounwind +define internal void @mkCharSource(%CharSource* sret %_result, %FileCharSource* %obj) #4 { + %_result.addr = alloca %CharSource* + store %CharSource* %_result, %CharSource** %_result.addr + %obj.addr = alloca %FileCharSource* + store %FileCharSource* %obj, %FileCharSource** %obj.addr + %res = alloca %CharSource + %"$tmpForRef" = alloca %UntypedPtr + %funptr = alloca void (%FileCharSource*, %String*, i32)* + br label %code + +code: ; preds = %0 + call void @ctor.134(%CharSource* %res) + %1 = getelementptr inbounds %CharSource, %CharSource* %res, i32 0, i32 0 + %2 = load %FileCharSource*, %FileCharSource** %obj.addr + %3 = call %UntypedPtr @_eraseType(%FileCharSource* %2) + store %UntypedPtr %3, %UntypedPtr* %"$tmpForRef" + call void @"=.288"(%UntypedPtr* %1, %UntypedPtr* %"$tmpForRef") + %4 = getelementptr inbounds %CharSource, %CharSource* %res, i32 0, i32 1 + store void (%FileCharSource*, %String*, i32)* @readChars.529, void (%FileCharSource*, %String*, i32)** %funptr + %5 = bitcast void (%FileCharSource*, %String*, i32)** %funptr to %"FunctionPtr3[Void, @FileCharSource, @String, Int]"* + %6 = load %"FunctionPtr3[Void, @FileCharSource, @String, Int]", %"FunctionPtr3[Void, @FileCharSource, @String, Int]"* %5 + call void @_reinterpretAssign(%"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %4, %"FunctionPtr3[Void, @FileCharSource, @String, Int]" %6) + %7 = load %CharSource*, %CharSource** %_result.addr + call void @ctor.186(%CharSource* %7, %CharSource* %res) + ret void +} + +; Function Attrs: inlinehint nounwind +define internal %UntypedPtr @_eraseType(%FileCharSource* %obj) #4 { + %obj.addr = alloca %FileCharSource* + store %FileCharSource* %obj, %FileCharSource** %obj.addr + %tmp.this = alloca %UntypedPtr + br label %code + +code: ; preds = %0 + %1 = load %FileCharSource*, %FileCharSource** %obj.addr + %2 = bitcast %FileCharSource* %1 to i8* + call void @ctor.527(%UntypedPtr* %tmp.this, i8* %2) + %3 = load %UntypedPtr, %UntypedPtr* %tmp.this + ret %UntypedPtr %3 +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.527(%UntypedPtr* %this, i8* %fdata) #3 { + %this.addr = alloca %UntypedPtr* + store %UntypedPtr* %this, %UntypedPtr** %this.addr + %fdata.addr = alloca i8* + store i8* %fdata, i8** %fdata.addr + br label %code + +code: ; preds = %0 + %1 = load i8*, i8** %fdata.addr + %2 = load %UntypedPtr*, %UntypedPtr** %this.addr + %3 = getelementptr inbounds %UntypedPtr, %UntypedPtr* %2, i32 0, i32 0 + store i8* %1, i8** %3 + ret void +} + +; Function Attrs: inlinehint nounwind +define internal void @_reinterpretAssign(%"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %dest, %"FunctionPtr3[Void, @FileCharSource, @String, Int]" %src) #4 { + %dest.addr = alloca %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* + store %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %dest, %"FunctionPtr3[Void, UntypedPtr, @String, Int]"** %dest.addr + %src.addr = alloca %"FunctionPtr3[Void, @FileCharSource, @String, Int]" + store %"FunctionPtr3[Void, @FileCharSource, @String, Int]" %src, %"FunctionPtr3[Void, @FileCharSource, @String, Int]"* %src.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Void, UntypedPtr, @String, Int]"*, %"FunctionPtr3[Void, UntypedPtr, @String, Int]"** %dest.addr + %2 = bitcast %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %1 to %"FunctionPtr3[Void, @FileCharSource, @String, Int]"* + call void @"=.528"(%"FunctionPtr3[Void, @FileCharSource, @String, Int]"* %2, %"FunctionPtr3[Void, @FileCharSource, @String, Int]"* %src.addr) + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @"=.528"(%"FunctionPtr3[Void, @FileCharSource, @String, Int]"* %this, %"FunctionPtr3[Void, @FileCharSource, @String, Int]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Void, @FileCharSource, @String, Int]"* + store %"FunctionPtr3[Void, @FileCharSource, @String, Int]"* %this, %"FunctionPtr3[Void, @FileCharSource, @String, Int]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Void, @FileCharSource, @String, Int]"* + store %"FunctionPtr3[Void, @FileCharSource, @String, Int]"* %other, %"FunctionPtr3[Void, @FileCharSource, @String, Int]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Void, @FileCharSource, @String, Int]"*, %"FunctionPtr3[Void, @FileCharSource, @String, Int]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr3[Void, @FileCharSource, @String, Int]", %"FunctionPtr3[Void, @FileCharSource, @String, Int]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Void, @FileCharSource, @String, Int]"*, %"FunctionPtr3[Void, @FileCharSource, @String, Int]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr3[Void, @FileCharSource, @String, Int]", %"FunctionPtr3[Void, @FileCharSource, @String, Int]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 ret void } ; Function Attrs: inlinehint nounwind -define internal void @ulongToString(%String* sret %_result, i64 %x) #4 { - %_result.addr = alloca %String* - store %String* %_result, %String** %_result.addr - %x.addr = alloca i64 - store i64 %x, i64* %x.addr - %buf = alloca [16 x i8] - %"$tmpForRef" = alloca %StringRef +define internal void @readChars.529(%FileCharSource* %this, %String* %dest, i32 %numChars) #4 { + %this.addr = alloca %FileCharSource* + store %FileCharSource* %this, %FileCharSource** %this.addr + %dest.addr = alloca %String* + store %String* %dest, %String** %dest.addr + %numChars.addr = alloca i32 + store i32 %numChars, i32* %numChars.addr + %"$rangeVar" = alloca %"NumericRangeInc[Int]" + %i = alloca i32 + %ch = alloca i8 br label %code code: ; preds = %0 - %1 = load i64, i64* %x.addr - %2 = bitcast [16 x i8]* %buf to i8* - call void @_ULong_to_CString(i64 %1, i8* %2) - %3 = load %String*, %String** %_result.addr - %4 = bitcast [16 x i8]* %buf to i8* - %5 = call %StringRef @_String_fromCString(i8* %4) - store %StringRef %5, %StringRef* %"$tmpForRef" - call void @ctor.364(%String* %3, %StringRef* %"$tmpForRef") + %1 = load i32, i32* %numChars.addr + call void @..(%"NumericRangeInc[Int]"* %"$rangeVar", i32 0, i32 %1) + br label %while_block + +while_block: ; preds = %while_step, %code + %2 = load %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %"$rangeVar" + %3 = call i1 @isEmpty.531(%"NumericRangeInc[Int]" %2) + %4 = xor i1 true, %3 + br i1 %4, label %while_body, label %while_end + +while_body: ; preds = %while_block + %5 = load %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %"$rangeVar" + %6 = call i32 @front.532(%"NumericRangeInc[Int]" %5) + store i32 %6, i32* %i + %7 = load %FileCharSource*, %FileCharSource** %this.addr + %8 = getelementptr inbounds %FileCharSource, %FileCharSource* %7, i32 0, i32 0 + %9 = call i8 @readChar(%File* %8) + store i8 %9, i8* %ch + br label %if_block + +while_step: ; preds = %if_end + call void @popFront.533(%"NumericRangeInc[Int]"* %"$rangeVar") + br label %while_block + +while_end: ; preds = %if_then, %while_block ret void + +if_block: ; preds = %while_body + %10 = load %FileCharSource*, %FileCharSource** %this.addr + %11 = getelementptr inbounds %FileCharSource, %FileCharSource* %10, i32 0, i32 0 + %12 = call i1 @isEof(%File* %11) + br i1 %12, label %if_then, label %if_end + +if_then: ; preds = %if_block + br label %while_end + +if_end: ; preds = %dumy_block, %if_block + %13 = load %String*, %String** %dest.addr + %14 = load i8, i8* %ch + call void @"+=.473"(%String* %13, i8 %14) + br label %while_step + +dumy_block: ; No predecessors! + br label %if_end } ; Function Attrs: inlinehint nounwind -define internal void @popBack.412(%"Vector[Char]"* %this) #4 { - %this.addr = alloca %"Vector[Char]"* - store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr - %"$tmpC" = alloca %"RawPtr[Char]" - %tmp.this = alloca i64 +define internal void @..(%"NumericRangeInc[Int]"* sret %_result, i32 %start, i32 %end) #4 { + %_result.addr = alloca %"NumericRangeInc[Int]"* + store %"NumericRangeInc[Int]"* %_result, %"NumericRangeInc[Int]"** %_result.addr + %start.addr = alloca i32 + store i32 %start, i32* %start.addr + %end.addr = alloca i32 + store i32 %end, i32* %end.addr br label %code code: ; preds = %0 - %1 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %2 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %1, i32 0, i32 1 - %3 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %4 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %3, i32 0, i32 1 - %5 = load %"RawPtr[Char]", %"RawPtr[Char]"* %4 - store i64 -1, i64* %tmp.this - %6 = load i64, i64* %tmp.this - call void @advance.187(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %5, i64 %6) - call void @"=.178"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %"$tmpC") - %7 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %8 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %7, i32 0, i32 1 - %9 = load %"RawPtr[Char]", %"RawPtr[Char]"* %8 - %10 = call i8* @value(%"RawPtr[Char]" %9) - %11 = load i8, i8* %10 + %1 = load %"NumericRangeInc[Int]"*, %"NumericRangeInc[Int]"** %_result.addr + %2 = load i32, i32* %start.addr + %3 = load i32, i32* %end.addr + call void @ctor.530(%"NumericRangeInc[Int]"* %1, i32 %2, i32 %3) ret void } ; Function Attrs: inlinehint nounwind -define internal void @ctor.413(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]" %tokens, %ExternalErrorReporter %errorReporter) #4 { - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %tokens.addr = alloca %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]" - store %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]" %tokens, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %tokens.addr - %errorReporter.addr = alloca %ExternalErrorReporter - store %ExternalErrorReporter %errorReporter, %ExternalErrorReporter* %errorReporter.addr +define internal void @ctor.530(%"NumericRangeInc[Int]"* %this, i32 %start, i32 %end) #4 { + %this.addr = alloca %"NumericRangeInc[Int]"* + store %"NumericRangeInc[Int]"* %this, %"NumericRangeInc[Int]"** %this.addr + %start.addr = alloca i32 + store i32 %start, i32* %start.addr + %end.addr = alloca i32 + store i32 %end, i32* %end.addr br label %code code: ; preds = %0 - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 1 - call void @ctor.156(%Token* %2) - %3 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %4 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %3, i32 0, i32 0 - %5 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %tokens.addr - call void @ctor.414(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %4, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]" %5) - %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %7 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %6, i32 0, i32 2 - store i1 false, i1* %7 + %1 = load i32, i32* %start.addr + %2 = load %"NumericRangeInc[Int]"*, %"NumericRangeInc[Int]"** %this.addr + %3 = getelementptr inbounds %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %2, i32 0, i32 0 + store i32 %1, i32* %3 + %4 = load i32, i32* %end.addr + %5 = load %"NumericRangeInc[Int]"*, %"NumericRangeInc[Int]"** %this.addr + %6 = getelementptr inbounds %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %5, i32 0, i32 1 + store i32 %4, i32* %6 + %7 = load %"NumericRangeInc[Int]"*, %"NumericRangeInc[Int]"** %this.addr + %8 = getelementptr inbounds %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %7, i32 0, i32 2 + store i1 false, i1* %8 ret void } ; Function Attrs: inlinehint nounwind -define internal void @ctor.414(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]" %src) #4 { - %this.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* - store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %src.addr = alloca %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]" - store %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]" %src, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %src.addr - %tmp.this = alloca i64 - %"$tmpC" = alloca %Token +define internal i1 @isEmpty.531(%"NumericRangeInc[Int]" %this) #4 { + %this.addr = alloca %"NumericRangeInc[Int]" + store %"NumericRangeInc[Int]" %this, %"NumericRangeInc[Int]"* %this.addr br label %code code: ; preds = %0 - %1 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %2 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %1, i32 0, i32 0 - call void @ctor.159(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %2) - %3 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %4 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %3, i32 0, i32 0 - call void @"=.253"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %4, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %src.addr) - %5 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %6 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %5, i32 0, i32 1 - call void @ctor.161(%"Vector[Token]"* %6) - %7 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %8 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %7, i32 0, i32 1 - store i64 10, i64* %tmp.this - %9 = load i64, i64* %tmp.this - call void @reserve.300(%"Vector[Token]"* %8, i64 %9) - br label %if_block + %1 = getelementptr inbounds %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %this.addr, i32 0, i32 2 + %2 = load i1, i1* %1 + br i1 %2, label %cond_alt1, label %cond_alt2 -if_block: ; preds = %code - %10 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %11 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %10, i32 0, i32 0 - %12 = call i1 @"pre_!!.415"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %11) - br i1 %12, label %if_then, label %if_end +cond_alt1: ; preds = %code + %3 = getelementptr inbounds %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %this.addr, i32 0, i32 0 + %4 = load i32, i32* %3 + %5 = getelementptr inbounds %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %this.addr, i32 0, i32 1 + %6 = load i32, i32* %5 + %7 = icmp sgt i32 %4, %6 + br label %cond_end -if_then: ; preds = %if_block - %13 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %14 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %13, i32 0, i32 1 - %15 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %16 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %15, i32 0, i32 0 - call void @"post_++.417"(%Token* %"$tmpC", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %16) - call void @"+=.305"(%"Vector[Token]"* %14, %Token* %"$tmpC") - call void @dtor.217(%Token* %"$tmpC") - br label %if_end +cond_alt2: ; preds = %code + %8 = getelementptr inbounds %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %this.addr, i32 0, i32 0 + %9 = load i32, i32* %8 + %10 = getelementptr inbounds %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %this.addr, i32 0, i32 1 + %11 = load i32, i32* %10 + %12 = icmp sge i32 %9, %11 + br label %cond_end -if_end: ; preds = %if_then, %if_block - ret void +cond_end: ; preds = %cond_alt2, %cond_alt1 + %cond = phi i1 [ %7, %cond_alt1 ], [ %12, %cond_alt2 ] + ret i1 %cond } ; Function Attrs: inlinehint nounwind -define internal i1 @"pre_!!.415"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %r) #4 { - %r.addr = alloca %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %r, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %r.addr +define internal i32 @front.532(%"NumericRangeInc[Int]" %this) #4 { + %this.addr = alloca %"NumericRangeInc[Int]" + store %"NumericRangeInc[Int]" %this, %"NumericRangeInc[Int]"* %this.addr br label %code code: ; preds = %0 - %1 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %r.addr - %2 = call i1 @isEmpty.416(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %1) - %3 = xor i1 true, %2 - ret i1 %3 + %1 = getelementptr inbounds %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %this.addr, i32 0, i32 0 + %2 = load i32, i32* %1 + ret i32 %2 } ; Function Attrs: inlinehint nounwind -define internal i1 @isEmpty.416(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this) #4 { - %this.addr = alloca %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal i8 @readChar(%File* %this) #4 { + %this.addr = alloca %File* + store %File* %this, %File** %this.addr + %tmp.this = alloca i8 br label %code code: ; preds = %0 - %1 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 5 - %3 = load i32, i32* %2 - %4 = icmp eq i32 %3, 0 - br i1 %4, label %cond.true, label %cond.false + %1 = load %File*, %File** %this.addr + %2 = getelementptr inbounds %File, %File* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = call i32 @fgetc(i8* %3) + %5 = trunc i32 %4 to i8 + store i8 %5, i8* %tmp.this + %6 = load i8, i8* %tmp.this + ret i8 %6 +} -cond.true: ; preds = %code - %5 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %6 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 0 - %7 = call i1 @isEmpty.385(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %6) - br label %cond.end +declare i32 @fgetc(i8*) -cond.false: ; preds = %code - br label %cond.end +; Function Attrs: inlinehint nounwind +define internal i1 @isEof(%File* %this) #4 { + %this.addr = alloca %File* + store %File* %this, %File** %this.addr + br label %code -cond.end: ; preds = %cond.false, %cond.true - %cond.res = phi i1 [ %7, %cond.true ], [ false, %cond.false ] - ret i1 %cond.res +code: ; preds = %0 + %1 = load %File*, %File** %this.addr + %2 = getelementptr inbounds %File, %File* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = call i32 @feof(i8* %3) + %5 = icmp ne i32 0, %4 + ret i1 %5 } -; Function Attrs: inlinehint nounwind -define internal void @"post_++.417"(%Token* sret %_result, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %r) #4 { - %_result.addr = alloca %Token* - store %Token* %_result, %Token** %_result.addr - %r.addr = alloca %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %r, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %r.addr - %res = alloca %Token +declare i32 @feof(i8*) + +; Function Attrs: alwaysinline nounwind +define internal void @popFront.533(%"NumericRangeInc[Int]"* %this) #3 { + %this.addr = alloca %"NumericRangeInc[Int]"* + store %"NumericRangeInc[Int]"* %this, %"NumericRangeInc[Int]"** %this.addr + %tmp.this = alloca i32 br label %code code: ; preds = %0 - %1 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %r.addr - call void @front.390(%Token* %res, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %1) - %2 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %r.addr - call void @popFront.389(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %2) - %3 = load %Token*, %Token** %_result.addr - call void @ctor.182(%Token* %3, %Token* %res) - call void @dtor.217(%Token* %res) + %1 = load %"NumericRangeInc[Int]"*, %"NumericRangeInc[Int]"** %this.addr + %2 = getelementptr inbounds %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %1, i32 0, i32 0 + %3 = load i32, i32* %2 + store i32 1, i32* %tmp.this + %4 = load i32, i32* %tmp.this + %5 = add i32 %3, %4 + %6 = load %"NumericRangeInc[Int]"*, %"NumericRangeInc[Int]"** %this.addr + %7 = getelementptr inbounds %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %6, i32 0, i32 0 + store i32 %5, i32* %7 ret void +} -dumy_block: ; No predecessors! - call void @dtor.217(%Token* %res) +; Function Attrs: alwaysinline nounwind +define internal void @dtor.534(%"NumericRangeInc[Int]"* %this) #3 { + %this.addr = alloca %"NumericRangeInc[Int]"* + store %"NumericRangeInc[Int]"* %this, %"NumericRangeInc[Int]"** %this.addr + br label %code + +code: ; preds = %0 ret void } -; Function Attrs: inlinehint nounwind -define internal %ParserContext* @createScanner(%StringRef %filename, %StringRef %code, %Location* %loc) #4 { - %filename.addr = alloca %StringRef - store %StringRef %filename, %StringRef* %filename.addr +; Function Attrs: alwaysinline nounwind +define internal void @dtor.535(%CharSource* %this) #3 { + %this.addr = alloca %CharSource* + store %CharSource* %this, %CharSource** %this.addr + br label %code + +code: ; preds = %0 + ret void +} + +; Function Attrs: noinline nounwind +define %ParserContext* @spr_parserIf_createParserStringRef(%StringRef %code, %Location* %loc, %AstBuilder* %astBuilder, %ErrorReporter %reporter) #5 { %code.addr = alloca %StringRef store %StringRef %code, %StringRef* %code.addr %loc.addr = alloca %Location* store %Location* %loc, %Location** %loc.addr - %"$tmpForRef" = alloca i1 + %astBuilder.addr = alloca %AstBuilder* + store %AstBuilder* %astBuilder, %AstBuilder** %astBuilder.addr + %reporter.addr = alloca %ErrorReporter + store %ErrorReporter %reporter, %ErrorReporter* %reporter.addr + %stringCharSource = alloca %StringCharSource* + %"$tmpC" = alloca %CharSource br label %code1 code1: ; preds = %0 - %1 = load %Location*, %Location** %loc.addr - store i1 true, i1* %"$tmpForRef" - %2 = call %ParserContext* @new(%StringRef* %filename.addr, %StringRef* %code.addr, %Location* %1, i1* %"$tmpForRef") - ret %ParserContext* %2 + %1 = call %StringCharSource* @new.536(%StringRef* %code.addr) + store %StringCharSource* %1, %StringCharSource** %stringCharSource + %2 = load %StringCharSource*, %StringCharSource** %stringCharSource + call void @mkCharSource.538(%CharSource* %"$tmpC", %StringCharSource* %2) + %3 = load %CharSource, %CharSource* %"$tmpC" + %4 = load %Location*, %Location** %loc.addr + %5 = load %AstBuilder*, %AstBuilder** %astBuilder.addr + %6 = load %ErrorReporter, %ErrorReporter* %reporter.addr + %7 = call %ParserContext* @spr_parserIf_createParser(%CharSource %3, %Location* %4, %AstBuilder* %5, %ErrorReporter %6) + ret %ParserContext* %7 } ; Function Attrs: inlinehint nounwind -define internal %ParserContext* @new(%StringRef* %arg1, %StringRef* %arg2, %Location* %arg3, i1* %arg4) #4 { +define internal %StringCharSource* @new.536(%StringRef* %arg1) #4 { %arg1.addr = alloca %StringRef* store %StringRef* %arg1, %StringRef** %arg1.addr - %arg2.addr = alloca %StringRef* - store %StringRef* %arg2, %StringRef** %arg2.addr - %arg3.addr = alloca %Location* - store %Location* %arg3, %Location** %arg3.addr - %arg4.addr = alloca i1* - store i1* %arg4, i1** %arg4.addr - %res = alloca %ParserContext* + %res = alloca %StringCharSource* br label %code code: ; preds = %0 - %1 = call i8* @malloc(i64 792) - %2 = bitcast i8* %1 to %ParserContext* - store %ParserContext* %2, %ParserContext** %res - %3 = load %ParserContext*, %ParserContext** %res + %1 = call i8* @malloc(i64 16) + %2 = bitcast i8* %1 to %StringCharSource* + store %StringCharSource* %2, %StringCharSource** %res + %3 = load %StringCharSource*, %StringCharSource** %res %4 = load %StringRef*, %StringRef** %arg1.addr %5 = load %StringRef, %StringRef* %4 - %6 = load %StringRef*, %StringRef** %arg2.addr - %7 = load %StringRef, %StringRef* %6 - %8 = load %Location*, %Location** %arg3.addr - %9 = load %Location, %Location* %8 - %10 = load i1*, i1** %arg4.addr - %11 = load i1, i1* %10 - call void @ctor.285(%ParserContext* %3, %StringRef %5, %StringRef %7, %Location %9, i1 %11) - %12 = load %ParserContext*, %ParserContext** %res - ret %ParserContext* %12 + call void @ctor.537(%StringCharSource* %3, %StringRef %5) + %6 = load %StringCharSource*, %StringCharSource** %res + ret %StringCharSource* %6 } -; Function Attrs: noinline nounwind -define %ParserContext* @spr_parserIf_createParser(%StringRef %filename, %StringRef %code, %Location* %loc) #5 { - %filename.addr = alloca %StringRef - store %StringRef %filename, %StringRef* %filename.addr - %code.addr = alloca %StringRef - store %StringRef %code, %StringRef* %code.addr - %loc.addr = alloca %Location* - store %Location* %loc, %Location** %loc.addr - %res = alloca %ParserContext* - br label %code1 +; Function Attrs: alwaysinline nounwind +define internal void @ctor.537(%StringCharSource* %this, %StringRef %f_content) #3 { + %this.addr = alloca %StringCharSource* + store %StringCharSource* %this, %StringCharSource** %this.addr + %f_content.addr = alloca %StringRef + store %StringRef %f_content, %StringRef* %f_content.addr + br label %code -code1: ; preds = %0 - %1 = load %Location*, %Location** %loc.addr - %2 = call %ParserContext* @new.418(%StringRef* %filename.addr, %StringRef* %code.addr, %Location* %1) - store %ParserContext* %2, %ParserContext** %res - %3 = load %ParserContext*, %ParserContext** %res - ret %ParserContext* %3 +code: ; preds = %0 + %1 = load %StringCharSource*, %StringCharSource** %this.addr + %2 = getelementptr inbounds %StringCharSource, %StringCharSource* %1, i32 0, i32 0 + %3 = load %StringRef, %StringRef* %f_content.addr + call void @ctor.56(%StringRef* %2, %StringRef %3) + ret void } ; Function Attrs: inlinehint nounwind -define internal %ParserContext* @new.418(%StringRef* %arg1, %StringRef* %arg2, %Location* %arg3) #4 { - %arg1.addr = alloca %StringRef* - store %StringRef* %arg1, %StringRef** %arg1.addr - %arg2.addr = alloca %StringRef* - store %StringRef* %arg2, %StringRef** %arg2.addr - %arg3.addr = alloca %Location* - store %Location* %arg3, %Location** %arg3.addr - %res = alloca %ParserContext* +define internal void @mkCharSource.538(%CharSource* sret %_result, %StringCharSource* %obj) #4 { + %_result.addr = alloca %CharSource* + store %CharSource* %_result, %CharSource** %_result.addr + %obj.addr = alloca %StringCharSource* + store %StringCharSource* %obj, %StringCharSource** %obj.addr + %res = alloca %CharSource + %"$tmpForRef" = alloca %UntypedPtr + %funptr = alloca void (%StringCharSource*, %String*, i32)* br label %code code: ; preds = %0 - %1 = call i8* @malloc(i64 792) - %2 = bitcast i8* %1 to %ParserContext* - store %ParserContext* %2, %ParserContext** %res - %3 = load %ParserContext*, %ParserContext** %res - %4 = load %StringRef*, %StringRef** %arg1.addr - %5 = load %StringRef, %StringRef* %4 - %6 = load %StringRef*, %StringRef** %arg2.addr - %7 = load %StringRef, %StringRef* %6 - %8 = load %Location*, %Location** %arg3.addr - %9 = load %Location, %Location* %8 - call void @ctor.285(%ParserContext* %3, %StringRef %5, %StringRef %7, %Location %9, i1 false) - %10 = load %ParserContext*, %ParserContext** %res - ret %ParserContext* %10 + call void @ctor.134(%CharSource* %res) + %1 = getelementptr inbounds %CharSource, %CharSource* %res, i32 0, i32 0 + %2 = load %StringCharSource*, %StringCharSource** %obj.addr + %3 = call %UntypedPtr @_eraseType.539(%StringCharSource* %2) + store %UntypedPtr %3, %UntypedPtr* %"$tmpForRef" + call void @"=.288"(%UntypedPtr* %1, %UntypedPtr* %"$tmpForRef") + %4 = getelementptr inbounds %CharSource, %CharSource* %res, i32 0, i32 1 + store void (%StringCharSource*, %String*, i32)* @readChars.542, void (%StringCharSource*, %String*, i32)** %funptr + %5 = bitcast void (%StringCharSource*, %String*, i32)** %funptr to %"FunctionPtr3[Void, @StringCharSource, @String, Int]"* + %6 = load %"FunctionPtr3[Void, @StringCharSource, @String, Int]", %"FunctionPtr3[Void, @StringCharSource, @String, Int]"* %5 + call void @_reinterpretAssign.540(%"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %4, %"FunctionPtr3[Void, @StringCharSource, @String, Int]" %6) + %7 = load %CharSource*, %CharSource** %_result.addr + call void @ctor.186(%CharSource* %7, %CharSource* %res) + ret void +} + +; Function Attrs: inlinehint nounwind +define internal %UntypedPtr @_eraseType.539(%StringCharSource* %obj) #4 { + %obj.addr = alloca %StringCharSource* + store %StringCharSource* %obj, %StringCharSource** %obj.addr + %tmp.this = alloca %UntypedPtr + br label %code + +code: ; preds = %0 + %1 = load %StringCharSource*, %StringCharSource** %obj.addr + %2 = bitcast %StringCharSource* %1 to i8* + call void @ctor.527(%UntypedPtr* %tmp.this, i8* %2) + %3 = load %UntypedPtr, %UntypedPtr* %tmp.this + ret %UntypedPtr %3 +} + +; Function Attrs: inlinehint nounwind +define internal void @_reinterpretAssign.540(%"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %dest, %"FunctionPtr3[Void, @StringCharSource, @String, Int]" %src) #4 { + %dest.addr = alloca %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* + store %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %dest, %"FunctionPtr3[Void, UntypedPtr, @String, Int]"** %dest.addr + %src.addr = alloca %"FunctionPtr3[Void, @StringCharSource, @String, Int]" + store %"FunctionPtr3[Void, @StringCharSource, @String, Int]" %src, %"FunctionPtr3[Void, @StringCharSource, @String, Int]"* %src.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Void, UntypedPtr, @String, Int]"*, %"FunctionPtr3[Void, UntypedPtr, @String, Int]"** %dest.addr + %2 = bitcast %"FunctionPtr3[Void, UntypedPtr, @String, Int]"* %1 to %"FunctionPtr3[Void, @StringCharSource, @String, Int]"* + call void @"=.541"(%"FunctionPtr3[Void, @StringCharSource, @String, Int]"* %2, %"FunctionPtr3[Void, @StringCharSource, @String, Int]"* %src.addr) + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @"=.541"(%"FunctionPtr3[Void, @StringCharSource, @String, Int]"* %this, %"FunctionPtr3[Void, @StringCharSource, @String, Int]"* %other) #3 { + %this.addr = alloca %"FunctionPtr3[Void, @StringCharSource, @String, Int]"* + store %"FunctionPtr3[Void, @StringCharSource, @String, Int]"* %this, %"FunctionPtr3[Void, @StringCharSource, @String, Int]"** %this.addr + %other.addr = alloca %"FunctionPtr3[Void, @StringCharSource, @String, Int]"* + store %"FunctionPtr3[Void, @StringCharSource, @String, Int]"* %other, %"FunctionPtr3[Void, @StringCharSource, @String, Int]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Void, @StringCharSource, @String, Int]"*, %"FunctionPtr3[Void, @StringCharSource, @String, Int]"** %other.addr + %2 = getelementptr inbounds %"FunctionPtr3[Void, @StringCharSource, @String, Int]", %"FunctionPtr3[Void, @StringCharSource, @String, Int]"* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %"FunctionPtr3[Void, @StringCharSource, @String, Int]"*, %"FunctionPtr3[Void, @StringCharSource, @String, Int]"** %this.addr + %5 = getelementptr inbounds %"FunctionPtr3[Void, @StringCharSource, @String, Int]", %"FunctionPtr3[Void, @StringCharSource, @String, Int]"* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} + +; Function Attrs: inlinehint nounwind +define internal void @readChars.542(%StringCharSource* %this, %String* %dest, i32 %numChars) #4 { + %this.addr = alloca %StringCharSource* + store %StringCharSource* %this, %StringCharSource** %this.addr + %dest.addr = alloca %String* + store %String* %dest, %String** %dest.addr + %numChars.addr = alloca i32 + store i32 %numChars, i32* %numChars.addr + %sz = alloca i32 + %toRead = alloca i32 + %"$rangeVar" = alloca %"NumericRangeInc[Int]" + %i = alloca i32 + br label %code + +code: ; preds = %0 + %1 = load %StringCharSource*, %StringCharSource** %this.addr + %2 = getelementptr inbounds %StringCharSource, %StringCharSource* %1, i32 0, i32 0 + %3 = call i64 @size(%StringRef* %2) + %4 = trunc i64 %3 to i32 + store i32 %4, i32* %sz + %5 = load i32, i32* %numChars.addr + %6 = load i32, i32* %sz + %7 = icmp slt i32 %5, %6 + br i1 %7, label %cond_alt1, label %cond_alt2 + +cond_alt1: ; preds = %code + br label %cond_end + +cond_alt2: ; preds = %code + br label %cond_end + +cond_end: ; preds = %cond_alt2, %cond_alt1 + %cond = phi i32* [ %numChars.addr, %cond_alt1 ], [ %sz, %cond_alt2 ] + %8 = load i32, i32* %cond + store i32 %8, i32* %toRead + %9 = load i32, i32* %sz + call void @..(%"NumericRangeInc[Int]"* %"$rangeVar", i32 0, i32 %9) + br label %while_block + +while_block: ; preds = %while_step, %cond_end + %10 = load %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %"$rangeVar" + %11 = call i1 @isEmpty.531(%"NumericRangeInc[Int]" %10) + %12 = xor i1 true, %11 + br i1 %12, label %while_body, label %while_end + +while_body: ; preds = %while_block + %13 = load %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %"$rangeVar" + %14 = call i32 @front.532(%"NumericRangeInc[Int]" %13) + store i32 %14, i32* %i + %15 = load %String*, %String** %dest.addr + %16 = load %StringCharSource*, %StringCharSource** %this.addr + %17 = getelementptr inbounds %StringCharSource, %StringCharSource* %16, i32 0, i32 0 + %18 = call i8* @front(%StringRef* %17) + %19 = load i8, i8* %18 + call void @"+=.473"(%String* %15, i8 %19) + %20 = load %StringCharSource*, %StringCharSource** %this.addr + %21 = getelementptr inbounds %StringCharSource, %StringCharSource* %20, i32 0, i32 0 + call void @popFront(%StringRef* %21) + br label %while_step + +while_step: ; preds = %while_body + call void @popFront.533(%"NumericRangeInc[Int]"* %"$rangeVar") + br label %while_block + +while_end: ; preds = %while_block + ret void } ; Function Attrs: noinline nounwind @@ -18047,7 +21528,7 @@ if_block: ; preds = %code if_then: ; preds = %if_block %4 = load %ParserContext*, %ParserContext** %obj.addr - call void @dtor.215(%ParserContext* %4) + call void @dtor.258(%ParserContext* %4) %5 = load %ParserContext*, %ParserContext** %obj.addr %6 = bitcast %ParserContext* %5 to i8* call void @free(i8* %6) @@ -18069,10 +21550,10 @@ define void @spr_parserIf_nextToken(%ParserContext* %ctx, %Token* %outToken) #5 code: ; preds = %0 %1 = load %Token*, %Token** %outToken.addr %2 = load %ParserContext*, %ParserContext** %ctx.addr - %3 = getelementptr inbounds %ParserContext, %ParserContext* %2, i32 0, i32 3 - call void @"post_++.307"(%Token* %"$tmpC", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %3) - call void @"=.248"(%Token* %1, %Token* %"$tmpC") - call void @dtor.217(%Token* %"$tmpC") + %3 = getelementptr inbounds %ParserContext, %ParserContext* %2, i32 0, i32 0 + call void @"post_++.411"(%Token* %"$tmpC", %SparrowScanner* %3) + call void @"=.297"(%Token* %1, %Token* %"$tmpC") + call void @dtor.260(%Token* %"$tmpC") ret void } @@ -18080,157 +21561,172 @@ code: ; preds = %0 define %Node @spr_parserIf_parseModule(%ParserContext* %ctx) #5 { %ctx.addr = alloca %ParserContext* store %ParserContext* %ctx, %ParserContext** %ctx.addr - %"$tmpC" = alloca %Node br label %code code: ; preds = %0 %1 = load %ParserContext*, %ParserContext** %ctx.addr - %2 = getelementptr inbounds %ParserContext, %ParserContext* %1, i32 0, i32 5 - call void @parseModule(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2) - %3 = load %Node, %Node* %"$tmpC" + %2 = getelementptr inbounds %ParserContext, %ParserContext* %1, i32 0, i32 2 + %3 = call %Node @parseModule(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %2) ret %Node %3 } ; Function Attrs: inlinehint nounwind -define internal void @parseModule(%Node* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this) #4 { - %_result.addr = alloca %Node* - store %Node* %_result, %Node** %_result.addr - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal %Node @parseModule(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %loc = alloca %Location %moduleName = alloca %Node + %"$tmpForRef" = alloca %Node %decls = alloca %Node %tmp.this = alloca %TokenType - %"$tmpForRef" = alloca %Node %"$tmpC" = alloca %Location %"$tmpC1" = alloca %Location br label %code code: ; preds = %0 - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @curLoc(%Location* %loc, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1) - %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseModuleName(%Node* %moduleName, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2) - call void @ctor.432(%Node* %decls) - %3 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseStmts(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %3, i1 true, %Node* %decls) - %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 0) - %5 = load %TokenType, %TokenType* %tmp.this - %6 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %4, %TokenType %5) - %7 = load %Node*, %Node** %_result.addr - %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @lastLoc(%Location* %"$tmpC1", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @curLoc(%Location* %loc, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1) + %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %3 = call %Node @parseModuleName(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %2) + store %Node %3, %Node* %"$tmpForRef" + call void @ctor.545(%Node* %moduleName, %Node* %"$tmpForRef") + call void @ctor.556(%Node* %decls) + %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @parseStmts(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %4, i1 true, %Node* %decls) + %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 0) + %6 = load %TokenType, %TokenType* %tmp.this + %7 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %5, %TokenType %6) + %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %9 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %8, i32 0, i32 3 + %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @lastLoc(%Location* %"$tmpC1", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %10) call void @span(%Location* %"$tmpC", %Location* %loc, %Location* %"$tmpC1") - %9 = load %Node, %Node* %moduleName - %10 = load %Node, %Node* %decls - %11 = call %Node @comp_parser_mkModule(%Location* %"$tmpC", %Node %9, %Node %10) - store %Node %11, %Node* %"$tmpForRef" - call void @ctor.428(%Node* %7, %Node* %"$tmpForRef") - ret void + %11 = load %Node, %Node* %moduleName + %12 = load %Node, %Node* %decls + %13 = call %Node @mkModule(%AstBuilder* %9, %Location* %"$tmpC", %Node %11, %Node %12) + ret %Node %13 } ; Function Attrs: inlinehint nounwind -define internal void @curLoc(%Location* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this) #4 { +define internal void @curLoc(%Location* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this) #4 { %_result.addr = alloca %Location* store %Location* %_result, %Location** %_result.addr - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %"$tmpC" = alloca %Token br label %code code: ; preds = %0 %1 = load %Location*, %Location** %_result.addr - %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %3 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, i32 0, i32 0 - call void @"pre_*.419"(%Token* %"$tmpC", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %3) + %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %3 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %2, i32 0, i32 0 + call void @"pre_*.543"(%Token* %"$tmpC", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %3) %4 = getelementptr inbounds %Token, %Token* %"$tmpC", i32 0, i32 0 - call void @ctor.171(%Location* %1, %Location* %4) - call void @dtor.217(%Token* %"$tmpC") + call void @ctor.182(%Location* %1, %Location* %4) + call void @dtor.260(%Token* %"$tmpC") ret void dumy_block: ; No predecessors! - call void @dtor.217(%Token* %"$tmpC") + call void @dtor.260(%Token* %"$tmpC") ret void } ; Function Attrs: inlinehint nounwind -define internal void @"pre_*.419"(%Token* sret %_result, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %r) #4 { +define internal void @"pre_*.543"(%Token* sret %_result, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %r) #4 { %_result.addr = alloca %Token* store %Token* %_result, %Token** %_result.addr - %r.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* - store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %r, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %r.addr + %r.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* + store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %r, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %r.addr br label %code code: ; preds = %0 %1 = load %Token*, %Token** %_result.addr - %2 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %r.addr - call void @front.420(%Token* %1, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %2) + %2 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %r.addr + call void @front.544(%Token* %1, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %2) ret void } ; Function Attrs: inlinehint nounwind -define internal void @front.420(%Token* sret %_result, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this) #4 { +define internal void @front.544(%Token* sret %_result, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %this) #4 { %_result.addr = alloca %Token* store %Token* %_result, %Token** %_result.addr - %this.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* - store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr + %this.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* + store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr br label %code code: ; preds = %0 %1 = load %Token*, %Token** %_result.addr - %2 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %3 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %2, i32 0, i32 1 - %4 = call %Token* @front.388(%"Vector[Token]"* %3) - call void @ctor.182(%Token* %1, %Token* %4) + %2 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %3 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %2, i32 0, i32 1 + %4 = call %Token* @front.494(%"Vector[Token]"* %3) + call void @ctor.202(%Token* %1, %Token* %4) + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.545(%Node* %this, %Node* %other) #3 { + %this.addr = alloca %Node* + store %Node* %this, %Node** %this.addr + %other.addr = alloca %Node* + store %Node* %other, %Node** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %Node*, %Node** %this.addr + %2 = getelementptr inbounds %Node, %Node* %1, i32 0, i32 0 + %3 = load %Node*, %Node** %other.addr + %4 = getelementptr inbounds %Node, %Node* %3, i32 0, i32 0 + call void @ctor.187(%UntypedPtr* %2, %UntypedPtr* %4) ret void } ; Function Attrs: inlinehint nounwind -define internal void @parseModuleName(%Node* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this) #4 { - %_result.addr = alloca %Node* - store %Node* %_result, %Node** %_result.addr - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal %Node @parseModuleName(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %tmp.this = alloca %TokenType %qid = alloca %Node + %"$tmpForRef" = alloca %Node %tmp.this1 = alloca %TokenType + %tmp.this2 = alloca %Node br label %code code: ; preds = %0 br label %if_block if_block: ; preds = %code - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 2) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 2) %2 = load %TokenType, %TokenType* %tmp.this - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_end if_then: ; preds = %if_block - %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseQualifiedName(%Node* %qid, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %4, i1 false) - %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this1, i32 31) - %6 = load %TokenType, %TokenType* %tmp.this1 - %7 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, %TokenType %6) - %8 = load %Node*, %Node** %_result.addr - call void @ctor.428(%Node* %8, %Node* %qid) - ret void + %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %5 = call %Node @parseQualifiedName(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %4, i1 false) + store %Node %5, %Node* %"$tmpForRef" + call void @ctor.545(%Node* %qid, %Node* %"$tmpForRef") + %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this1, i32 31) + %7 = load %TokenType, %TokenType* %tmp.this1 + %8 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %6, %TokenType %7) + %9 = load %Node, %Node* %qid + ret %Node %9 if_end: ; preds = %dumy_block, %if_block - %9 = load %Node*, %Node** %_result.addr - call void @ctor.432(%Node* %9) - ret void + call void @ctor.556(%Node* %tmp.this2) + %10 = load %Node, %Node* %tmp.this2 + ret %Node %10 dumy_block: ; No predecessors! br label %if_end } ; Function Attrs: inlinehint nounwind -define internal i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %TokenType %t) #4 { - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %TokenType %t) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %t.addr = alloca %TokenType store %TokenType %t, %TokenType* %t.addr %"$tmpC" = alloca %Token @@ -18241,26 +21737,26 @@ code: ; preds = %0 br label %if_block if_block: ; preds = %code - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 0 - call void @"pre_*.419"(%Token* %"$tmpC", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %2) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, i32 0, i32 0 + call void @"pre_*.543"(%Token* %"$tmpC", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %2) %3 = getelementptr inbounds %Token, %Token* %"$tmpC", i32 0, i32 1 - %4 = call i1 @"==.273"(%TokenType* %3, %TokenType* %t.addr) + %4 = call i1 @"==.352"(%TokenType* %3, %TokenType* %t.addr) br i1 %4, label %if_then, label %if_end if_then: ; preds = %if_block - %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 1 - %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %8 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %7, i32 0, i32 0 - call void @"post_++.421"(%Token* %"$tmpC1", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %8) - call void @"=.248"(%Token* %6, %Token* %"$tmpC1") - call void @dtor.217(%Token* %"$tmpC1") - call void @dtor.217(%Token* %"$tmpC") + %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %5, i32 0, i32 1 + %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %8 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %7, i32 0, i32 0 + call void @"post_++.546"(%Token* %"$tmpC1", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %8) + call void @"=.297"(%Token* %6, %Token* %"$tmpC1") + call void @dtor.260(%Token* %"$tmpC1") + call void @dtor.260(%Token* %"$tmpC") ret i1 true if_end: ; preds = %dumy_block, %if_block - call void @dtor.217(%Token* %"$tmpC") + call void @dtor.260(%Token* %"$tmpC") ret i1 false dumy_block: ; No predecessors! @@ -18268,68 +21764,68 @@ dumy_block: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal void @"post_++.421"(%Token* sret %_result, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %r) #4 { +define internal void @"post_++.546"(%Token* sret %_result, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %r) #4 { %_result.addr = alloca %Token* store %Token* %_result, %Token** %_result.addr - %r.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* - store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %r, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %r.addr + %r.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* + store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %r, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %r.addr %res = alloca %Token br label %code code: ; preds = %0 - %1 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %r.addr - call void @front.420(%Token* %res, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %1) - %2 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %r.addr - call void @popFront.422(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %2) + %1 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %r.addr + call void @front.544(%Token* %res, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %1) + %2 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %r.addr + call void @popFront.547(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %2) %3 = load %Token*, %Token** %_result.addr - call void @ctor.182(%Token* %3, %Token* %res) - call void @dtor.217(%Token* %res) + call void @ctor.202(%Token* %3, %Token* %res) + call void @dtor.260(%Token* %res) ret void dumy_block: ; No predecessors! - call void @dtor.217(%Token* %res) + call void @dtor.260(%Token* %res) ret void } ; Function Attrs: inlinehint nounwind -define internal void @popFront.422(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this) #4 { - %this.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* - store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr +define internal void @popFront.547(%"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %this) #4 { + %this.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* + store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %tmp.this = alloca i64 %"$tmpC" = alloca %Token br label %code code: ; preds = %0 - %1 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %2 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %1, i32 0, i32 1 + %1 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %2 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %1, i32 0, i32 1 store i64 0, i64* %tmp.this %3 = load i64, i64* %tmp.this - call void @remove.392(%"Vector[Token]"* %2, i64 %3) + call void @remove.498(%"Vector[Token]"* %2, i64 %3) br label %if_block if_block: ; preds = %code - %4 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %5 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %4, i32 0, i32 1 - %6 = call i1 @isEmpty.386(%"Vector[Token]"* %5) + %4 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %5 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %4, i32 0, i32 1 + %6 = call i1 @isEmpty.492(%"Vector[Token]"* %5) br i1 %6, label %cond.true, label %cond.false if_then: ; preds = %cond.end - %7 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %8 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %7, i32 0, i32 1 - %9 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %10 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %9, i32 0, i32 0 - call void @"post_++.417"(%Token* %"$tmpC", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %10) - call void @"+=.305"(%"Vector[Token]"* %8, %Token* %"$tmpC") - call void @dtor.217(%Token* %"$tmpC") + %7 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %8 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %7, i32 0, i32 1 + %9 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %10 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %9, i32 0, i32 0 + call void @"post_++.523"(%Token* %"$tmpC", %"SparrowLayoutDecoder[SparrowScanner]"* %10) + call void @"+=.409"(%"Vector[Token]"* %8, %Token* %"$tmpC") + call void @dtor.260(%Token* %"$tmpC") br label %if_end if_end: ; preds = %if_then, %cond.end ret void cond.true: ; preds = %if_block - %11 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %12 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %11, i32 0, i32 0 - %13 = call i1 @"pre_!!.415"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %12) + %11 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %12 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %11, i32 0, i32 0 + %13 = call i1 @"pre_!!.521"(%"SparrowLayoutDecoder[SparrowScanner]"* %12) br label %cond.end cond.false: ; preds = %if_block @@ -18341,11 +21837,9 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: inlinehint nounwind -define internal void @parseQualifiedName(%Node* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, i1 %allowStar) #4 { - %_result.addr = alloca %Node* - store %Node* %_result, %Node** %_result.addr - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal %Node @parseQualifiedName(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, i1 %allowStar) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %allowStar.addr = alloca i1 store i1 %allowStar, i1* %allowStar.addr %loc = alloca %Location @@ -18365,31 +21859,33 @@ define internal void @parseQualifiedName(%Node* sret %_result, %"SparrowParser[S br label %code code: ; preds = %0 - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @curLoc(%Location* %loc, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1) - %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 36) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @curLoc(%Location* %loc, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1) + %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 36) %3 = load %TokenType, %TokenType* %tmp.this - %4 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, %TokenType %3) - %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 1 - %7 = getelementptr inbounds %Token, %Token* %6, i32 0, i32 2 - %8 = call %StringRef @asStringRef(%String* %7) - %9 = call %Node @comp_parser_mkIdentifier(%Location* %loc, %StringRef %8) - store %Node %9, %Node* %"$tmpForRef" - call void @ctor.428(%Node* %base, %Node* %"$tmpForRef") - %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %11 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %10, i32 0, i32 1 - %12 = getelementptr inbounds %Token, %Token* %11, i32 0, i32 2 - call void @ctor.184(%String* %lastId, %String* %12) + %4 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %2, %TokenType %3) + %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %5, i32 0, i32 3 + %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %8 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %7, i32 0, i32 1 + %9 = getelementptr inbounds %Token, %Token* %8, i32 0, i32 2 + %10 = call %StringRef @asStringRef(%String* %9) + %11 = call %Node @mkIdentifier(%AstBuilder* %6, %Location* %loc, %StringRef %10) + store %Node %11, %Node* %"$tmpForRef" + call void @ctor.545(%Node* %base, %Node* %"$tmpForRef") + %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %13 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %12, i32 0, i32 1 + %14 = getelementptr inbounds %Token, %Token* %13, i32 0, i32 2 + call void @ctor.189(%String* %lastId, %String* %14) br label %while_block while_block: ; preds = %while_step, %code - %13 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this1, i32 33) - %14 = load %TokenType, %TokenType* %tmp.this1 - %15 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %13, %TokenType %14) - br i1 %15, label %while_body, label %while_end + %15 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this1, i32 33) + %16 = load %TokenType, %TokenType* %tmp.this1 + %17 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %15, %TokenType %16) + br i1 %17, label %while_body, label %while_end while_body: ; preds = %while_block br label %if_block @@ -18398,44 +21894,45 @@ while_step: ; preds = %cond_destruct_end7 br label %while_block while_end: ; preds = %cond_destruct_end, %while_block - %16 = load %Node*, %Node** %_result.addr - call void @ctor.428(%Node* %16, %Node* %base) - call void @dtor.218(%String* %lastId) - ret void + %18 = load %Node, %Node* %base + call void @dtor.261(%String* %lastId) + ret %Node %18 if_block: ; preds = %while_body - %17 = load i1, i1* %allowStar.addr - br i1 %17, label %cond.true, label %cond.false + %19 = load i1, i1* %allowStar.addr + br i1 %19, label %cond.true, label %cond.false if_then: ; preds = %cond.end - %18 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @lastLoc(%Location* %"$tmpC4", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %18) + %20 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %21 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %20, i32 0, i32 3 + %22 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @lastLoc(%Location* %"$tmpC4", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %22) call void @span(%Location* %"$tmpC", %Location* %loc, %Location* %"$tmpC4") - %19 = load %Node, %Node* %base - %20 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %21 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %20, i32 0, i32 1 - %22 = getelementptr inbounds %Token, %Token* %21, i32 0, i32 2 - %23 = call %StringRef @asStringRef(%String* %22) - %24 = call %Node @comp_parser_mkStarExpr(%Location* %"$tmpC", %Node %19, %StringRef %23) - store %Node %24, %Node* %"$tmpForRef3" - call void @"=.430"(%Node* %base, %Node* %"$tmpForRef3") - br i1 %17, label %cond_destruct_alt1, label %cond_destruct_alt2 + %23 = load %Node, %Node* %base + %24 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %25 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %24, i32 0, i32 1 + %26 = getelementptr inbounds %Token, %Token* %25, i32 0, i32 2 + %27 = call %StringRef @asStringRef(%String* %26) + %28 = call %Node @mkStarExpr(%AstBuilder* %21, %Location* %"$tmpC", %Node %23, %StringRef %27) + store %Node %28, %Node* %"$tmpForRef3" + call void @"=.554"(%Node* %base, %Node* %"$tmpForRef3") + br i1 %19, label %cond_destruct_alt1, label %cond_destruct_alt2 if_end: ; preds = %dumy_block, %cond.end - br i1 %17, label %cond_destruct_alt15, label %cond_destruct_alt26 + br i1 %19, label %cond_destruct_alt15, label %cond_destruct_alt26 cond.true: ; preds = %if_block - %25 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this2, i32 37) - %26 = load %TokenType, %TokenType* %tmp.this2 - %27 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %25, %TokenType %26) + %29 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this2, i32 37) + %30 = load %TokenType, %TokenType* %tmp.this2 + %31 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %29, %TokenType %30) br label %cond.end cond.false: ; preds = %if_block br label %cond.end cond.end: ; preds = %cond.false, %cond.true - %cond.res = phi i1 [ %27, %cond.true ], [ false, %cond.false ] + %cond.res = phi i1 [ %31, %cond.true ], [ false, %cond.false ] br i1 %cond.res, label %if_then, label %if_end cond_destruct_alt1: ; preds = %if_then @@ -18457,32 +21954,34 @@ cond_destruct_alt26: ; preds = %if_end br label %cond_destruct_end7 cond_destruct_end7: ; preds = %cond_destruct_alt26, %cond_destruct_alt15 - %28 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this8, i32 36) - %29 = load %TokenType, %TokenType* %tmp.this8 - %30 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %28, %TokenType %29) - %31 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @lastLoc(%Location* %"$tmpC11", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %31) + %32 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this8, i32 36) + %33 = load %TokenType, %TokenType* %tmp.this8 + %34 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %32, %TokenType %33) + %35 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %36 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %35, i32 0, i32 3 + %37 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @lastLoc(%Location* %"$tmpC11", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %37) call void @span(%Location* %"$tmpC10", %Location* %loc, %Location* %"$tmpC11") - %32 = load %Node, %Node* %base - %33 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %34 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %33, i32 0, i32 1 - %35 = getelementptr inbounds %Token, %Token* %34, i32 0, i32 2 - %36 = call %StringRef @asStringRef(%String* %35) - %37 = call %Node @comp_parser_mkCompoundExpr(%Location* %"$tmpC10", %Node %32, %StringRef %36) - store %Node %37, %Node* %"$tmpForRef9" - call void @"=.430"(%Node* %base, %Node* %"$tmpForRef9") + %38 = load %Node, %Node* %base + %39 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %40 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %39, i32 0, i32 1 + %41 = getelementptr inbounds %Token, %Token* %40, i32 0, i32 2 + %42 = call %StringRef @asStringRef(%String* %41) + %43 = call %Node @mkCompoundExpr(%AstBuilder* %36, %Location* %"$tmpC10", %Node %38, %StringRef %42) + store %Node %43, %Node* %"$tmpForRef9" + call void @"=.554"(%Node* %base, %Node* %"$tmpForRef9") br label %while_step dumy_block12: ; No predecessors! - call void @dtor.218(%String* %lastId) - ret void + call void @dtor.261(%String* %lastId) + unreachable } ; Function Attrs: inlinehint nounwind -define internal i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %TokenType %t) #4 { - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %TokenType %t) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %t.addr = alloca %TokenType store %TokenType %t, %TokenType* %t.addr %"$tmpC" = alloca %String @@ -18495,9 +21994,9 @@ code: ; preds = %0 br label %if_block if_block: ; preds = %code - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %2 = load %TokenType, %TokenType* %t.addr - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_end if_then: ; preds = %if_block @@ -18510,8 +22009,8 @@ dumy_block: ; No predecessors! br label %if_end if_block1: ; preds = %if_end - %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %5 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %4, i32 0, i32 2 + %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %5 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %4, i32 0, i32 2 %6 = load i1, i1* %5 br i1 %6, label %if_then2, label %if_end3 @@ -18519,27 +22018,27 @@ if_then2: ; preds = %if_block1 ret i1 false if_end3: ; preds = %dumy_block4, %if_block1 - %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr + %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %8 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 0 %9 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 1 - store i8* getelementptr inbounds ([26 x i8], [26 x i8]* @str.90, i32 0, i32 0), i8** %8 - store i8* getelementptr inbounds ([26 x i8], [26 x i8]* @str.90, i32 0, i32 25), i8** %9 + store i8* getelementptr inbounds ([26 x i8], [26 x i8]* @str.91, i32 0, i32 0), i8** %8 + store i8* getelementptr inbounds ([26 x i8], [26 x i8]* @str.91, i32 0, i32 25), i8** %9 %10 = load %StringRef, %StringRef* %tmp.StringRef - %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %12 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11, i32 0, i32 0 - call void @"pre_*.419"(%Token* %"$tmpC5", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %12) + %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %12 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %11, i32 0, i32 0 + call void @"pre_*.543"(%Token* %"$tmpC5", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %12) %13 = getelementptr inbounds %Token, %Token* %"$tmpC5", i32 0, i32 1 %14 = load %TokenType, %TokenType* %13 %15 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef6, i32 0, i32 0 %16 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef6, i32 0, i32 1 - store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @str.91, i32 0, i32 0), i8** %15 - store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @str.91, i32 0, i32 12), i8** %16 + store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @str.92, i32 0, i32 0), i8** %15 + store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @str.92, i32 0, i32 12), i8** %16 %17 = load %StringRef, %StringRef* %tmp.StringRef6 %18 = load %TokenType, %TokenType* %t.addr - call void @toString.424(%String* %"$tmpC", %StringRef %10, %TokenType %14, %StringRef %17, %TokenType %18) - call void @reportError.423(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %7, %String* %"$tmpC") - call void @dtor.218(%String* %"$tmpC") - call void @dtor.217(%Token* %"$tmpC5") + call void @toString.549(%String* %"$tmpC", %StringRef %10, %TokenType %14, %StringRef %17, %TokenType %18) + call void @reportError.548(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %7, %String* %"$tmpC") + call void @dtor.261(%String* %"$tmpC") + call void @dtor.260(%Token* %"$tmpC5") ret i1 false dumy_block4: ; No predecessors! @@ -18547,9 +22046,9 @@ dumy_block4: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal void @reportError.423(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %String* %msg) #4 { - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal void @reportError.548(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %String* %msg) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %msg.addr = alloca %String* store %String* %msg, %String** %msg.addr %"$tmpC" = alloca %Token @@ -18559,51 +22058,51 @@ define internal void @reportError.423(%"SparrowParser[SparrowLayoutDecoder[Sparr br label %code code: ; preds = %0 - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 3 - %3 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %4 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %3, i32 0, i32 0 - call void @"pre_*.419"(%Token* %"$tmpC", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %4) - %5 = getelementptr inbounds %Token, %Token* %"$tmpC", i32 0, i32 0 - %6 = load %Location, %Location* %5 + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, i32 0, i32 4 + %3 = load %ErrorReporter, %ErrorReporter* %2 + %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %5 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %4, i32 0, i32 0 + call void @"pre_*.543"(%Token* %"$tmpC", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %5) + %6 = getelementptr inbounds %Token, %Token* %"$tmpC", i32 0, i32 0 %7 = load %String*, %String** %msg.addr - call void @reportError(%ExternalErrorReporter* %2, %Location %6, %String* %7) - call void @dtor.217(%Token* %"$tmpC") + call void @reportError.450(%ErrorReporter %3, %Location* %6, %String* %7) + call void @dtor.260(%Token* %"$tmpC") br label %while_block while_block: ; preds = %while_step, %code - %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %9 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8, i32 0, i32 0 - call void @"pre_*.419"(%Token* %"$tmpC1", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %9) + %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %9 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %8, i32 0, i32 0 + call void @"pre_*.543"(%Token* %"$tmpC1", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %9) %10 = getelementptr inbounds %Token, %Token* %"$tmpC1", i32 0, i32 1 - call void @ctor.313(%TokenType* %tmp.this, i32 0) - %11 = call i1 @"==.273"(%TokenType* %10, %TokenType* %tmp.this) + call void @ctor.417(%TokenType* %tmp.this, i32 0) + %11 = call i1 @"==.352"(%TokenType* %10, %TokenType* %tmp.this) %12 = xor i1 true, %11 br i1 %12, label %while_body, label %while_end while_body: ; preds = %while_block - %13 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %14 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %13, i32 0, i32 1 - %15 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %16 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %15, i32 0, i32 0 - call void @"post_++.421"(%Token* %"$tmpC2", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %16) - call void @"=.248"(%Token* %14, %Token* %"$tmpC2") - call void @dtor.217(%Token* %"$tmpC2") + %13 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %14 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %13, i32 0, i32 1 + %15 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %16 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %15, i32 0, i32 0 + call void @"post_++.546"(%Token* %"$tmpC2", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %16) + call void @"=.297"(%Token* %14, %Token* %"$tmpC2") + call void @dtor.260(%Token* %"$tmpC2") br label %while_step while_step: ; preds = %while_body br label %while_block while_end: ; preds = %while_block - call void @dtor.217(%Token* %"$tmpC1") - %17 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %18 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %17, i32 0, i32 2 + call void @dtor.260(%Token* %"$tmpC1") + %17 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %18 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %17, i32 0, i32 2 store i1 true, i1* %18 ret void } ; Function Attrs: inlinehint nounwind -define internal void @toString.424(%String* sret %_result, %StringRef %a1, %TokenType %a2, %StringRef %a3, %TokenType %a4) #4 { +define internal void @toString.549(%String* sret %_result, %StringRef %a1, %TokenType %a2, %StringRef %a3, %TokenType %a4) #4 { %_result.addr = alloca %String* store %String* %_result, %String** %_result.addr %a1.addr = alloca %StringRef @@ -18618,24 +22117,24 @@ define internal void @toString.424(%String* sret %_result, %StringRef %a1, %Toke br label %code code: ; preds = %0 - call void @ctor.289(%StringOutputStream* %s) + call void @ctor.452(%StringOutputStream* %s) %1 = call %StringOutputStream* @"<<"(%StringOutputStream* %s, %StringRef* %a1.addr) - %2 = call %StringOutputStream* @"<<.425"(%StringOutputStream* %1, %TokenType* %a2.addr) + %2 = call %StringOutputStream* @"<<.550"(%StringOutputStream* %1, %TokenType* %a2.addr) %3 = call %StringOutputStream* @"<<"(%StringOutputStream* %2, %StringRef* %a3.addr) - %4 = call %StringOutputStream* @"<<.425"(%StringOutputStream* %3, %TokenType* %a4.addr) + %4 = call %StringOutputStream* @"<<.550"(%StringOutputStream* %3, %TokenType* %a4.addr) %5 = load %String*, %String** %_result.addr %6 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %s, i32 0, i32 0 - call void @ctor.184(%String* %5, %String* %6) - call void @dtor.291(%StringOutputStream* %s) + call void @ctor.189(%String* %5, %String* %6) + call void @dtor.454(%StringOutputStream* %s) ret void dumy_block: ; No predecessors! - call void @dtor.291(%StringOutputStream* %s) + call void @dtor.454(%StringOutputStream* %s) ret void } ; Function Attrs: inlinehint nounwind -define internal %StringOutputStream* @"<<.425"(%StringOutputStream* %s, %TokenType* %x) #4 { +define internal %StringOutputStream* @"<<.550"(%StringOutputStream* %s, %TokenType* %x) #4 { %s.addr = alloca %StringOutputStream* store %StringOutputStream* %s, %StringOutputStream** %s.addr %x.addr = alloca %TokenType* @@ -18664,13 +22163,13 @@ code: ; preds = %0 %1 = load %StringOutputStream*, %StringOutputStream** %os.addr %2 = load %TokenType, %TokenType* %t.addr call void @_asString(%String* %"$tmpC", %TokenType %2) - %3 = call %StringOutputStream* @"<<.426"(%StringOutputStream* %1, %String* %"$tmpC") - call void @dtor.218(%String* %"$tmpC") + %3 = call %StringOutputStream* @"<<.551"(%StringOutputStream* %1, %String* %"$tmpC") + call void @dtor.261(%String* %"$tmpC") ret void } ; Function Attrs: inlinehint nounwind -define internal %StringOutputStream* @"<<.426"(%StringOutputStream* %s, %String* %x) #4 { +define internal %StringOutputStream* @"<<.551"(%StringOutputStream* %s, %String* %x) #4 { %s.addr = alloca %StringOutputStream* store %StringOutputStream* %s, %StringOutputStream** %s.addr %x.addr = alloca %String* @@ -18680,13 +22179,13 @@ define internal %StringOutputStream* @"<<.426"(%StringOutputStream* %s, %String* code: ; preds = %0 %1 = load %String*, %String** %x.addr %2 = load %StringOutputStream*, %StringOutputStream** %s.addr - call void @">>.427"(%String* %1, %StringOutputStream* %2) + call void @">>.552"(%String* %1, %StringOutputStream* %2) %3 = load %StringOutputStream*, %StringOutputStream** %s.addr ret %StringOutputStream* %3 } ; Function Attrs: inlinehint nounwind -define internal void @">>.427"(%String* %this, %StringOutputStream* %os) #4 { +define internal void @">>.552"(%String* %this, %StringOutputStream* %os) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr %os.addr = alloca %StringOutputStream* @@ -18844,28 +22343,37 @@ define void @_asString(%String* sret %_result, %TokenType %t) #5 { %tmp.this349 = alloca %TokenType %"$tmpForRef350" = alloca %StringRef %tmp.StringRef351 = alloca %StringRef - %tmp.this356 = alloca %TokenType - %"$tmpForRef357" = alloca %StringRef - %tmp.StringRef358 = alloca %StringRef + %tmp.this357 = alloca %TokenType + %"$tmpForRef358" = alloca %StringRef + %tmp.StringRef359 = alloca %StringRef + %tmp.this365 = alloca %TokenType + %"$tmpForRef366" = alloca %StringRef + %tmp.StringRef367 = alloca %StringRef + %tmp.this373 = alloca %TokenType + %"$tmpForRef374" = alloca %StringRef + %tmp.StringRef375 = alloca %StringRef + %tmp.this380 = alloca %TokenType + %"$tmpForRef381" = alloca %StringRef + %tmp.StringRef382 = alloca %StringRef br label %code code: ; preds = %0 br label %if_block if_block: ; preds = %code - call void @ctor.313(%TokenType* %tmp.this, i32 0) - %1 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this) + call void @ctor.417(%TokenType* %tmp.this, i32 0) + %1 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this) br i1 %1, label %if_then, label %if_else if_then: ; preds = %if_block %2 = load %String*, %String** %_result.addr %3 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 0 %4 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 1 - store i8* getelementptr inbounds ([12 x i8], [12 x i8]* @str.44, i32 0, i32 0), i8** %3 - store i8* getelementptr inbounds ([12 x i8], [12 x i8]* @str.44, i32 0, i32 11), i8** %4 + store i8* getelementptr inbounds ([12 x i8], [12 x i8]* @str.42, i32 0, i32 0), i8** %3 + store i8* getelementptr inbounds ([12 x i8], [12 x i8]* @str.42, i32 0, i32 11), i8** %4 %5 = load %StringRef, %StringRef* %tmp.StringRef store %StringRef %5, %StringRef* %"$tmpForRef" - call void @ctor.364(%String* %2, %StringRef* %"$tmpForRef") + call void @ctor.471(%String* %2, %StringRef* %"$tmpForRef") ret void if_else: ; preds = %if_block @@ -18878,19 +22386,19 @@ dumy_block: ; No predecessors! br label %if_end if_block1: ; preds = %if_else - call void @ctor.313(%TokenType* %tmp.this5, i32 1) - %6 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this5) + call void @ctor.417(%TokenType* %tmp.this5, i32 1) + %6 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this5) br i1 %6, label %if_then2, label %if_else3 if_then2: ; preds = %if_block1 %7 = load %String*, %String** %_result.addr %8 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef7, i32 0, i32 0 %9 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef7, i32 0, i32 1 - store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.45, i32 0, i32 0), i8** %8 - store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.45, i32 0, i32 8), i8** %9 + store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.43, i32 0, i32 0), i8** %8 + store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.43, i32 0, i32 8), i8** %9 %10 = load %StringRef, %StringRef* %tmp.StringRef7 store %StringRef %10, %StringRef* %"$tmpForRef6" - call void @ctor.364(%String* %7, %StringRef* %"$tmpForRef6") + call void @ctor.471(%String* %7, %StringRef* %"$tmpForRef6") ret void if_else3: ; preds = %if_block1 @@ -18903,19 +22411,19 @@ dumy_block8: ; No predecessors! br label %if_end4 if_block9: ; preds = %if_else3 - call void @ctor.313(%TokenType* %tmp.this13, i32 2) - %11 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this13) + call void @ctor.417(%TokenType* %tmp.this13, i32 2) + %11 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this13) br i1 %11, label %if_then10, label %if_else11 if_then10: ; preds = %if_block9 %12 = load %String*, %String** %_result.addr %13 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef15, i32 0, i32 0 %14 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef15, i32 0, i32 1 - store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.46, i32 0, i32 0), i8** %13 - store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.46, i32 0, i32 8), i8** %14 + store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.44, i32 0, i32 0), i8** %13 + store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.44, i32 0, i32 8), i8** %14 %15 = load %StringRef, %StringRef* %tmp.StringRef15 store %StringRef %15, %StringRef* %"$tmpForRef14" - call void @ctor.364(%String* %12, %StringRef* %"$tmpForRef14") + call void @ctor.471(%String* %12, %StringRef* %"$tmpForRef14") ret void if_else11: ; preds = %if_block9 @@ -18928,19 +22436,19 @@ dumy_block16: ; No predecessors! br label %if_end12 if_block17: ; preds = %if_else11 - call void @ctor.313(%TokenType* %tmp.this21, i32 3) - %16 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this21) + call void @ctor.417(%TokenType* %tmp.this21, i32 3) + %16 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this21) br i1 %16, label %if_then18, label %if_else19 if_then18: ; preds = %if_block17 %17 = load %String*, %String** %_result.addr %18 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef23, i32 0, i32 0 %19 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef23, i32 0, i32 1 - store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.47, i32 0, i32 0), i8** %18 - store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.47, i32 0, i32 8), i8** %19 + store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.45, i32 0, i32 0), i8** %18 + store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.45, i32 0, i32 8), i8** %19 %20 = load %StringRef, %StringRef* %tmp.StringRef23 store %StringRef %20, %StringRef* %"$tmpForRef22" - call void @ctor.364(%String* %17, %StringRef* %"$tmpForRef22") + call void @ctor.471(%String* %17, %StringRef* %"$tmpForRef22") ret void if_else19: ; preds = %if_block17 @@ -18953,19 +22461,19 @@ dumy_block24: ; No predecessors! br label %if_end20 if_block25: ; preds = %if_else19 - call void @ctor.313(%TokenType* %tmp.this29, i32 4) - %21 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this29) + call void @ctor.417(%TokenType* %tmp.this29, i32 4) + %21 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this29) br i1 %21, label %if_then26, label %if_else27 if_then26: ; preds = %if_block25 %22 = load %String*, %String** %_result.addr %23 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef31, i32 0, i32 0 %24 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef31, i32 0, i32 1 - store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @str.48, i32 0, i32 0), i8** %23 - store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @str.48, i32 0, i32 9), i8** %24 + store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @str.46, i32 0, i32 0), i8** %23 + store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @str.46, i32 0, i32 9), i8** %24 %25 = load %StringRef, %StringRef* %tmp.StringRef31 store %StringRef %25, %StringRef* %"$tmpForRef30" - call void @ctor.364(%String* %22, %StringRef* %"$tmpForRef30") + call void @ctor.471(%String* %22, %StringRef* %"$tmpForRef30") ret void if_else27: ; preds = %if_block25 @@ -18978,19 +22486,19 @@ dumy_block32: ; No predecessors! br label %if_end28 if_block33: ; preds = %if_else27 - call void @ctor.313(%TokenType* %tmp.this37, i32 5) - %26 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this37) + call void @ctor.417(%TokenType* %tmp.this37, i32 5) + %26 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this37) br i1 %26, label %if_then34, label %if_else35 if_then34: ; preds = %if_block33 %27 = load %String*, %String** %_result.addr %28 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef39, i32 0, i32 0 %29 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef39, i32 0, i32 1 - store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @str.49, i32 0, i32 0), i8** %28 - store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @str.49, i32 0, i32 10), i8** %29 + store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @str.47, i32 0, i32 0), i8** %28 + store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @str.47, i32 0, i32 10), i8** %29 %30 = load %StringRef, %StringRef* %tmp.StringRef39 store %StringRef %30, %StringRef* %"$tmpForRef38" - call void @ctor.364(%String* %27, %StringRef* %"$tmpForRef38") + call void @ctor.471(%String* %27, %StringRef* %"$tmpForRef38") ret void if_else35: ; preds = %if_block33 @@ -19003,19 +22511,19 @@ dumy_block40: ; No predecessors! br label %if_end36 if_block41: ; preds = %if_else35 - call void @ctor.313(%TokenType* %tmp.this45, i32 6) - %31 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this45) + call void @ctor.417(%TokenType* %tmp.this45, i32 6) + %31 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this45) br i1 %31, label %if_then42, label %if_else43 if_then42: ; preds = %if_block41 %32 = load %String*, %String** %_result.addr %33 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef47, i32 0, i32 0 %34 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef47, i32 0, i32 1 - store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.50, i32 0, i32 0), i8** %33 - store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.50, i32 0, i32 5), i8** %34 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.48, i32 0, i32 0), i8** %33 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.48, i32 0, i32 5), i8** %34 %35 = load %StringRef, %StringRef* %tmp.StringRef47 store %StringRef %35, %StringRef* %"$tmpForRef46" - call void @ctor.364(%String* %32, %StringRef* %"$tmpForRef46") + call void @ctor.471(%String* %32, %StringRef* %"$tmpForRef46") ret void if_else43: ; preds = %if_block41 @@ -19028,19 +22536,19 @@ dumy_block48: ; No predecessors! br label %if_end44 if_block49: ; preds = %if_else43 - call void @ctor.313(%TokenType* %tmp.this53, i32 7) - %36 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this53) + call void @ctor.417(%TokenType* %tmp.this53, i32 7) + %36 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this53) br i1 %36, label %if_then50, label %if_else51 if_then50: ; preds = %if_block49 %37 = load %String*, %String** %_result.addr %38 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef55, i32 0, i32 0 %39 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef55, i32 0, i32 1 - store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @str.51, i32 0, i32 0), i8** %38 - store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @str.51, i32 0, i32 9), i8** %39 + store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @str.49, i32 0, i32 0), i8** %38 + store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @str.49, i32 0, i32 9), i8** %39 %40 = load %StringRef, %StringRef* %tmp.StringRef55 store %StringRef %40, %StringRef* %"$tmpForRef54" - call void @ctor.364(%String* %37, %StringRef* %"$tmpForRef54") + call void @ctor.471(%String* %37, %StringRef* %"$tmpForRef54") ret void if_else51: ; preds = %if_block49 @@ -19053,19 +22561,19 @@ dumy_block56: ; No predecessors! br label %if_end52 if_block57: ; preds = %if_else51 - call void @ctor.313(%TokenType* %tmp.this61, i32 8) - %41 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this61) + call void @ctor.417(%TokenType* %tmp.this61, i32 8) + %41 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this61) br i1 %41, label %if_then58, label %if_else59 if_then58: ; preds = %if_block57 %42 = load %String*, %String** %_result.addr %43 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef63, i32 0, i32 0 %44 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef63, i32 0, i32 1 - store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.52, i32 0, i32 0), i8** %43 - store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.52, i32 0, i32 7), i8** %44 + store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.50, i32 0, i32 0), i8** %43 + store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.50, i32 0, i32 7), i8** %44 %45 = load %StringRef, %StringRef* %tmp.StringRef63 store %StringRef %45, %StringRef* %"$tmpForRef62" - call void @ctor.364(%String* %42, %StringRef* %"$tmpForRef62") + call void @ctor.471(%String* %42, %StringRef* %"$tmpForRef62") ret void if_else59: ; preds = %if_block57 @@ -19078,19 +22586,19 @@ dumy_block64: ; No predecessors! br label %if_end60 if_block65: ; preds = %if_else59 - call void @ctor.313(%TokenType* %tmp.this69, i32 9) - %46 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this69) + call void @ctor.417(%TokenType* %tmp.this69, i32 9) + %46 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this69) br i1 %46, label %if_then66, label %if_else67 if_then66: ; preds = %if_block65 %47 = load %String*, %String** %_result.addr %48 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef71, i32 0, i32 0 %49 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef71, i32 0, i32 1 - store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.53, i32 0, i32 0), i8** %48 - store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.53, i32 0, i32 5), i8** %49 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.51, i32 0, i32 0), i8** %48 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.51, i32 0, i32 5), i8** %49 %50 = load %StringRef, %StringRef* %tmp.StringRef71 store %StringRef %50, %StringRef* %"$tmpForRef70" - call void @ctor.364(%String* %47, %StringRef* %"$tmpForRef70") + call void @ctor.471(%String* %47, %StringRef* %"$tmpForRef70") ret void if_else67: ; preds = %if_block65 @@ -19103,19 +22611,19 @@ dumy_block72: ; No predecessors! br label %if_end68 if_block73: ; preds = %if_else67 - call void @ctor.313(%TokenType* %tmp.this77, i32 10) - %51 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this77) + call void @ctor.417(%TokenType* %tmp.this77, i32 10) + %51 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this77) br i1 %51, label %if_then74, label %if_else75 if_then74: ; preds = %if_block73 %52 = load %String*, %String** %_result.addr %53 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef79, i32 0, i32 0 %54 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef79, i32 0, i32 1 - store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.54, i32 0, i32 0), i8** %53 - store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.54, i32 0, i32 7), i8** %54 + store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.52, i32 0, i32 0), i8** %53 + store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.52, i32 0, i32 7), i8** %54 %55 = load %StringRef, %StringRef* %tmp.StringRef79 store %StringRef %55, %StringRef* %"$tmpForRef78" - call void @ctor.364(%String* %52, %StringRef* %"$tmpForRef78") + call void @ctor.471(%String* %52, %StringRef* %"$tmpForRef78") ret void if_else75: ; preds = %if_block73 @@ -19128,19 +22636,19 @@ dumy_block80: ; No predecessors! br label %if_end76 if_block81: ; preds = %if_else75 - call void @ctor.313(%TokenType* %tmp.this85, i32 11) - %56 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this85) + call void @ctor.417(%TokenType* %tmp.this85, i32 11) + %56 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this85) br i1 %56, label %if_then82, label %if_else83 if_then82: ; preds = %if_block81 %57 = load %String*, %String** %_result.addr %58 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef87, i32 0, i32 0 %59 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef87, i32 0, i32 1 - store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.55, i32 0, i32 0), i8** %58 - store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.55, i32 0, i32 7), i8** %59 + store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.53, i32 0, i32 0), i8** %58 + store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.53, i32 0, i32 7), i8** %59 %60 = load %StringRef, %StringRef* %tmp.StringRef87 store %StringRef %60, %StringRef* %"$tmpForRef86" - call void @ctor.364(%String* %57, %StringRef* %"$tmpForRef86") + call void @ctor.471(%String* %57, %StringRef* %"$tmpForRef86") ret void if_else83: ; preds = %if_block81 @@ -19153,19 +22661,19 @@ dumy_block88: ; No predecessors! br label %if_end84 if_block89: ; preds = %if_else83 - call void @ctor.313(%TokenType* %tmp.this93, i32 12) - %61 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this93) + call void @ctor.417(%TokenType* %tmp.this93, i32 12) + %61 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this93) br i1 %61, label %if_then90, label %if_else91 if_then90: ; preds = %if_block89 %62 = load %String*, %String** %_result.addr %63 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef95, i32 0, i32 0 %64 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef95, i32 0, i32 1 - store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @str.56, i32 0, i32 0), i8** %63 - store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @str.56, i32 0, i32 10), i8** %64 + store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @str.54, i32 0, i32 0), i8** %63 + store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @str.54, i32 0, i32 10), i8** %64 %65 = load %StringRef, %StringRef* %tmp.StringRef95 store %StringRef %65, %StringRef* %"$tmpForRef94" - call void @ctor.364(%String* %62, %StringRef* %"$tmpForRef94") + call void @ctor.471(%String* %62, %StringRef* %"$tmpForRef94") ret void if_else91: ; preds = %if_block89 @@ -19178,19 +22686,19 @@ dumy_block96: ; No predecessors! br label %if_end92 if_block97: ; preds = %if_else91 - call void @ctor.313(%TokenType* %tmp.this101, i32 13) - %66 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this101) + call void @ctor.417(%TokenType* %tmp.this101, i32 13) + %66 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this101) br i1 %66, label %if_then98, label %if_else99 if_then98: ; preds = %if_block97 %67 = load %String*, %String** %_result.addr %68 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef103, i32 0, i32 0 %69 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef103, i32 0, i32 1 - store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @str.57, i32 0, i32 0), i8** %68 - store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @str.57, i32 0, i32 9), i8** %69 + store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @str.55, i32 0, i32 0), i8** %68 + store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @str.55, i32 0, i32 9), i8** %69 %70 = load %StringRef, %StringRef* %tmp.StringRef103 store %StringRef %70, %StringRef* %"$tmpForRef102" - call void @ctor.364(%String* %67, %StringRef* %"$tmpForRef102") + call void @ctor.471(%String* %67, %StringRef* %"$tmpForRef102") ret void if_else99: ; preds = %if_block97 @@ -19203,19 +22711,19 @@ dumy_block104: ; No predecessors! br label %if_end100 if_block105: ; preds = %if_else99 - call void @ctor.313(%TokenType* %tmp.this109, i32 14) - %71 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this109) + call void @ctor.417(%TokenType* %tmp.this109, i32 14) + %71 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this109) br i1 %71, label %if_then106, label %if_else107 if_then106: ; preds = %if_block105 %72 = load %String*, %String** %_result.addr %73 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef111, i32 0, i32 0 %74 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef111, i32 0, i32 1 - store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.58, i32 0, i32 0), i8** %73 - store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.58, i32 0, i32 5), i8** %74 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.56, i32 0, i32 0), i8** %73 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.56, i32 0, i32 5), i8** %74 %75 = load %StringRef, %StringRef* %tmp.StringRef111 store %StringRef %75, %StringRef* %"$tmpForRef110" - call void @ctor.364(%String* %72, %StringRef* %"$tmpForRef110") + call void @ctor.471(%String* %72, %StringRef* %"$tmpForRef110") ret void if_else107: ; preds = %if_block105 @@ -19228,19 +22736,19 @@ dumy_block112: ; No predecessors! br label %if_end108 if_block113: ; preds = %if_else107 - call void @ctor.313(%TokenType* %tmp.this117, i32 15) - %76 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this117) + call void @ctor.417(%TokenType* %tmp.this117, i32 15) + %76 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this117) br i1 %76, label %if_then114, label %if_else115 if_then114: ; preds = %if_block113 %77 = load %String*, %String** %_result.addr %78 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef119, i32 0, i32 0 %79 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef119, i32 0, i32 1 - store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str.59, i32 0, i32 0), i8** %78 - store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str.59, i32 0, i32 4), i8** %79 + store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str.57, i32 0, i32 0), i8** %78 + store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @str.57, i32 0, i32 4), i8** %79 %80 = load %StringRef, %StringRef* %tmp.StringRef119 store %StringRef %80, %StringRef* %"$tmpForRef118" - call void @ctor.364(%String* %77, %StringRef* %"$tmpForRef118") + call void @ctor.471(%String* %77, %StringRef* %"$tmpForRef118") ret void if_else115: ; preds = %if_block113 @@ -19253,19 +22761,19 @@ dumy_block120: ; No predecessors! br label %if_end116 if_block121: ; preds = %if_else115 - call void @ctor.313(%TokenType* %tmp.this125, i32 16) - %81 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this125) + call void @ctor.417(%TokenType* %tmp.this125, i32 16) + %81 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this125) br i1 %81, label %if_then122, label %if_else123 if_then122: ; preds = %if_block121 %82 = load %String*, %String** %_result.addr %83 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef127, i32 0, i32 0 %84 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef127, i32 0, i32 1 - store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.60, i32 0, i32 0), i8** %83 - store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.60, i32 0, i32 8), i8** %84 + store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.58, i32 0, i32 0), i8** %83 + store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.58, i32 0, i32 8), i8** %84 %85 = load %StringRef, %StringRef* %tmp.StringRef127 store %StringRef %85, %StringRef* %"$tmpForRef126" - call void @ctor.364(%String* %82, %StringRef* %"$tmpForRef126") + call void @ctor.471(%String* %82, %StringRef* %"$tmpForRef126") ret void if_else123: ; preds = %if_block121 @@ -19278,19 +22786,19 @@ dumy_block128: ; No predecessors! br label %if_end124 if_block129: ; preds = %if_else123 - call void @ctor.313(%TokenType* %tmp.this133, i32 17) - %86 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this133) + call void @ctor.417(%TokenType* %tmp.this133, i32 17) + %86 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this133) br i1 %86, label %if_then130, label %if_else131 if_then130: ; preds = %if_block129 %87 = load %String*, %String** %_result.addr %88 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef135, i32 0, i32 0 %89 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef135, i32 0, i32 1 - store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.61, i32 0, i32 0), i8** %88 - store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.61, i32 0, i32 7), i8** %89 + store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.59, i32 0, i32 0), i8** %88 + store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.59, i32 0, i32 7), i8** %89 %90 = load %StringRef, %StringRef* %tmp.StringRef135 store %StringRef %90, %StringRef* %"$tmpForRef134" - call void @ctor.364(%String* %87, %StringRef* %"$tmpForRef134") + call void @ctor.471(%String* %87, %StringRef* %"$tmpForRef134") ret void if_else131: ; preds = %if_block129 @@ -19303,19 +22811,19 @@ dumy_block136: ; No predecessors! br label %if_end132 if_block137: ; preds = %if_else131 - call void @ctor.313(%TokenType* %tmp.this141, i32 18) - %91 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this141) + call void @ctor.417(%TokenType* %tmp.this141, i32 18) + %91 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this141) br i1 %91, label %if_then138, label %if_else139 if_then138: ; preds = %if_block137 %92 = load %String*, %String** %_result.addr %93 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef143, i32 0, i32 0 %94 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef143, i32 0, i32 1 - store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.62, i32 0, i32 0), i8** %93 - store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.62, i32 0, i32 5), i8** %94 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.60, i32 0, i32 0), i8** %93 + store i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str.60, i32 0, i32 5), i8** %94 %95 = load %StringRef, %StringRef* %tmp.StringRef143 store %StringRef %95, %StringRef* %"$tmpForRef142" - call void @ctor.364(%String* %92, %StringRef* %"$tmpForRef142") + call void @ctor.471(%String* %92, %StringRef* %"$tmpForRef142") ret void if_else139: ; preds = %if_block137 @@ -19328,19 +22836,19 @@ dumy_block144: ; No predecessors! br label %if_end140 if_block145: ; preds = %if_else139 - call void @ctor.313(%TokenType* %tmp.this149, i32 19) - %96 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this149) + call void @ctor.417(%TokenType* %tmp.this149, i32 19) + %96 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this149) br i1 %96, label %if_then146, label %if_else147 if_then146: ; preds = %if_block145 %97 = load %String*, %String** %_result.addr %98 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef151, i32 0, i32 0 %99 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef151, i32 0, i32 1 - store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.63, i32 0, i32 0), i8** %98 - store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.63, i32 0, i32 7), i8** %99 + store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.61, i32 0, i32 0), i8** %98 + store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.61, i32 0, i32 7), i8** %99 %100 = load %StringRef, %StringRef* %tmp.StringRef151 store %StringRef %100, %StringRef* %"$tmpForRef150" - call void @ctor.364(%String* %97, %StringRef* %"$tmpForRef150") + call void @ctor.471(%String* %97, %StringRef* %"$tmpForRef150") ret void if_else147: ; preds = %if_block145 @@ -19353,19 +22861,19 @@ dumy_block152: ; No predecessors! br label %if_end148 if_block153: ; preds = %if_else147 - call void @ctor.313(%TokenType* %tmp.this157, i32 20) - %101 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this157) + call void @ctor.417(%TokenType* %tmp.this157, i32 20) + %101 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this157) br i1 %101, label %if_then154, label %if_else155 if_then154: ; preds = %if_block153 %102 = load %String*, %String** %_result.addr %103 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef159, i32 0, i32 0 %104 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef159, i32 0, i32 1 - store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.64, i32 0, i32 0), i8** %103 - store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.64, i32 0, i32 7), i8** %104 + store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.62, i32 0, i32 0), i8** %103 + store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.62, i32 0, i32 7), i8** %104 %105 = load %StringRef, %StringRef* %tmp.StringRef159 store %StringRef %105, %StringRef* %"$tmpForRef158" - call void @ctor.364(%String* %102, %StringRef* %"$tmpForRef158") + call void @ctor.471(%String* %102, %StringRef* %"$tmpForRef158") ret void if_else155: ; preds = %if_block153 @@ -19378,19 +22886,19 @@ dumy_block160: ; No predecessors! br label %if_end156 if_block161: ; preds = %if_else155 - call void @ctor.313(%TokenType* %tmp.this165, i32 21) - %106 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this165) + call void @ctor.417(%TokenType* %tmp.this165, i32 21) + %106 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this165) br i1 %106, label %if_then162, label %if_else163 if_then162: ; preds = %if_block161 %107 = load %String*, %String** %_result.addr %108 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef167, i32 0, i32 0 %109 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef167, i32 0, i32 1 - store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.65, i32 0, i32 0), i8** %108 - store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.65, i32 0, i32 6), i8** %109 + store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.63, i32 0, i32 0), i8** %108 + store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.63, i32 0, i32 6), i8** %109 %110 = load %StringRef, %StringRef* %tmp.StringRef167 store %StringRef %110, %StringRef* %"$tmpForRef166" - call void @ctor.364(%String* %107, %StringRef* %"$tmpForRef166") + call void @ctor.471(%String* %107, %StringRef* %"$tmpForRef166") ret void if_else163: ; preds = %if_block161 @@ -19403,19 +22911,19 @@ dumy_block168: ; No predecessors! br label %if_end164 if_block169: ; preds = %if_else163 - call void @ctor.313(%TokenType* %tmp.this173, i32 22) - %111 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this173) + call void @ctor.417(%TokenType* %tmp.this173, i32 22) + %111 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this173) br i1 %111, label %if_then170, label %if_else171 if_then170: ; preds = %if_block169 %112 = load %String*, %String** %_result.addr %113 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef175, i32 0, i32 0 %114 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef175, i32 0, i32 1 - store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.66, i32 0, i32 0), i8** %113 - store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.66, i32 0, i32 6), i8** %114 + store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.64, i32 0, i32 0), i8** %113 + store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.64, i32 0, i32 6), i8** %114 %115 = load %StringRef, %StringRef* %tmp.StringRef175 store %StringRef %115, %StringRef* %"$tmpForRef174" - call void @ctor.364(%String* %112, %StringRef* %"$tmpForRef174") + call void @ctor.471(%String* %112, %StringRef* %"$tmpForRef174") ret void if_else171: ; preds = %if_block169 @@ -19428,19 +22936,19 @@ dumy_block176: ; No predecessors! br label %if_end172 if_block177: ; preds = %if_else171 - call void @ctor.313(%TokenType* %tmp.this181, i32 23) - %116 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this181) + call void @ctor.417(%TokenType* %tmp.this181, i32 23) + %116 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this181) br i1 %116, label %if_then178, label %if_else179 if_then178: ; preds = %if_block177 %117 = load %String*, %String** %_result.addr %118 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef183, i32 0, i32 0 %119 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef183, i32 0, i32 1 - store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.67, i32 0, i32 0), i8** %118 - store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.67, i32 0, i32 6), i8** %119 + store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.65, i32 0, i32 0), i8** %118 + store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @str.65, i32 0, i32 6), i8** %119 %120 = load %StringRef, %StringRef* %tmp.StringRef183 store %StringRef %120, %StringRef* %"$tmpForRef182" - call void @ctor.364(%String* %117, %StringRef* %"$tmpForRef182") + call void @ctor.471(%String* %117, %StringRef* %"$tmpForRef182") ret void if_else179: ; preds = %if_block177 @@ -19453,19 +22961,19 @@ dumy_block184: ; No predecessors! br label %if_end180 if_block185: ; preds = %if_else179 - call void @ctor.313(%TokenType* %tmp.this189, i32 24) - %121 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this189) + call void @ctor.417(%TokenType* %tmp.this189, i32 24) + %121 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this189) br i1 %121, label %if_then186, label %if_else187 if_then186: ; preds = %if_block185 %122 = load %String*, %String** %_result.addr %123 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef191, i32 0, i32 0 %124 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef191, i32 0, i32 1 - store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @str.68, i32 0, i32 0), i8** %123 - store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @str.68, i32 0, i32 15), i8** %124 + store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @str.66, i32 0, i32 0), i8** %123 + store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @str.66, i32 0, i32 15), i8** %124 %125 = load %StringRef, %StringRef* %tmp.StringRef191 store %StringRef %125, %StringRef* %"$tmpForRef190" - call void @ctor.364(%String* %122, %StringRef* %"$tmpForRef190") + call void @ctor.471(%String* %122, %StringRef* %"$tmpForRef190") ret void if_else187: ; preds = %if_block185 @@ -19478,19 +22986,19 @@ dumy_block192: ; No predecessors! br label %if_end188 if_block193: ; preds = %if_else187 - call void @ctor.313(%TokenType* %tmp.this197, i32 25) - %126 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this197) + call void @ctor.417(%TokenType* %tmp.this197, i32 25) + %126 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this197) br i1 %126, label %if_then194, label %if_else195 if_then194: ; preds = %if_block193 %127 = load %String*, %String** %_result.addr %128 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef199, i32 0, i32 0 %129 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef199, i32 0, i32 1 - store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @str.69, i32 0, i32 0), i8** %128 - store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @str.69, i32 0, i32 15), i8** %129 + store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @str.67, i32 0, i32 0), i8** %128 + store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @str.67, i32 0, i32 15), i8** %129 %130 = load %StringRef, %StringRef* %tmp.StringRef199 store %StringRef %130, %StringRef* %"$tmpForRef198" - call void @ctor.364(%String* %127, %StringRef* %"$tmpForRef198") + call void @ctor.471(%String* %127, %StringRef* %"$tmpForRef198") ret void if_else195: ; preds = %if_block193 @@ -19503,19 +23011,19 @@ dumy_block200: ; No predecessors! br label %if_end196 if_block201: ; preds = %if_else195 - call void @ctor.313(%TokenType* %tmp.this205, i32 26) - %131 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this205) + call void @ctor.417(%TokenType* %tmp.this205, i32 26) + %131 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this205) br i1 %131, label %if_then202, label %if_else203 if_then202: ; preds = %if_block201 %132 = load %String*, %String** %_result.addr %133 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef207, i32 0, i32 0 %134 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef207, i32 0, i32 1 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.70, i32 0, i32 0), i8** %133 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.70, i32 0, i32 3), i8** %134 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.68, i32 0, i32 0), i8** %133 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.68, i32 0, i32 3), i8** %134 %135 = load %StringRef, %StringRef* %tmp.StringRef207 store %StringRef %135, %StringRef* %"$tmpForRef206" - call void @ctor.364(%String* %132, %StringRef* %"$tmpForRef206") + call void @ctor.471(%String* %132, %StringRef* %"$tmpForRef206") ret void if_else203: ; preds = %if_block201 @@ -19528,19 +23036,19 @@ dumy_block208: ; No predecessors! br label %if_end204 if_block209: ; preds = %if_else203 - call void @ctor.313(%TokenType* %tmp.this213, i32 27) - %136 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this213) + call void @ctor.417(%TokenType* %tmp.this213, i32 27) + %136 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this213) br i1 %136, label %if_then210, label %if_else211 if_then210: ; preds = %if_block209 %137 = load %String*, %String** %_result.addr %138 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef215, i32 0, i32 0 %139 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef215, i32 0, i32 1 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.71, i32 0, i32 0), i8** %138 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.71, i32 0, i32 3), i8** %139 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.69, i32 0, i32 0), i8** %138 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.69, i32 0, i32 3), i8** %139 %140 = load %StringRef, %StringRef* %tmp.StringRef215 store %StringRef %140, %StringRef* %"$tmpForRef214" - call void @ctor.364(%String* %137, %StringRef* %"$tmpForRef214") + call void @ctor.471(%String* %137, %StringRef* %"$tmpForRef214") ret void if_else211: ; preds = %if_block209 @@ -19553,19 +23061,19 @@ dumy_block216: ; No predecessors! br label %if_end212 if_block217: ; preds = %if_else211 - call void @ctor.313(%TokenType* %tmp.this221, i32 28) - %141 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this221) + call void @ctor.417(%TokenType* %tmp.this221, i32 28) + %141 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this221) br i1 %141, label %if_then218, label %if_else219 if_then218: ; preds = %if_block217 %142 = load %String*, %String** %_result.addr %143 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef223, i32 0, i32 0 %144 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef223, i32 0, i32 1 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.72, i32 0, i32 0), i8** %143 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.72, i32 0, i32 3), i8** %144 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.70, i32 0, i32 0), i8** %143 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.70, i32 0, i32 3), i8** %144 %145 = load %StringRef, %StringRef* %tmp.StringRef223 store %StringRef %145, %StringRef* %"$tmpForRef222" - call void @ctor.364(%String* %142, %StringRef* %"$tmpForRef222") + call void @ctor.471(%String* %142, %StringRef* %"$tmpForRef222") ret void if_else219: ; preds = %if_block217 @@ -19578,19 +23086,19 @@ dumy_block224: ; No predecessors! br label %if_end220 if_block225: ; preds = %if_else219 - call void @ctor.313(%TokenType* %tmp.this229, i32 29) - %146 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this229) + call void @ctor.417(%TokenType* %tmp.this229, i32 29) + %146 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this229) br i1 %146, label %if_then226, label %if_else227 if_then226: ; preds = %if_block225 %147 = load %String*, %String** %_result.addr %148 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef231, i32 0, i32 0 %149 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef231, i32 0, i32 1 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.73, i32 0, i32 0), i8** %148 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.73, i32 0, i32 3), i8** %149 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.71, i32 0, i32 0), i8** %148 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.71, i32 0, i32 3), i8** %149 %150 = load %StringRef, %StringRef* %tmp.StringRef231 store %StringRef %150, %StringRef* %"$tmpForRef230" - call void @ctor.364(%String* %147, %StringRef* %"$tmpForRef230") + call void @ctor.471(%String* %147, %StringRef* %"$tmpForRef230") ret void if_else227: ; preds = %if_block225 @@ -19603,19 +23111,19 @@ dumy_block232: ; No predecessors! br label %if_end228 if_block233: ; preds = %if_else227 - call void @ctor.313(%TokenType* %tmp.this237, i32 30) - %151 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this237) + call void @ctor.417(%TokenType* %tmp.this237, i32 30) + %151 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this237) br i1 %151, label %if_then234, label %if_else235 if_then234: ; preds = %if_block233 %152 = load %String*, %String** %_result.addr %153 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef239, i32 0, i32 0 %154 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef239, i32 0, i32 1 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.74, i32 0, i32 0), i8** %153 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.74, i32 0, i32 3), i8** %154 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.72, i32 0, i32 0), i8** %153 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.72, i32 0, i32 3), i8** %154 %155 = load %StringRef, %StringRef* %tmp.StringRef239 store %StringRef %155, %StringRef* %"$tmpForRef238" - call void @ctor.364(%String* %152, %StringRef* %"$tmpForRef238") + call void @ctor.471(%String* %152, %StringRef* %"$tmpForRef238") ret void if_else235: ; preds = %if_block233 @@ -19628,19 +23136,19 @@ dumy_block240: ; No predecessors! br label %if_end236 if_block241: ; preds = %if_else235 - call void @ctor.313(%TokenType* %tmp.this245, i32 31) - %156 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this245) + call void @ctor.417(%TokenType* %tmp.this245, i32 31) + %156 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this245) br i1 %156, label %if_then242, label %if_else243 if_then242: ; preds = %if_block241 %157 = load %String*, %String** %_result.addr %158 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef247, i32 0, i32 0 %159 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef247, i32 0, i32 1 - store i8* getelementptr inbounds ([17 x i8], [17 x i8]* @str.75, i32 0, i32 0), i8** %158 - store i8* getelementptr inbounds ([17 x i8], [17 x i8]* @str.75, i32 0, i32 16), i8** %159 + store i8* getelementptr inbounds ([17 x i8], [17 x i8]* @str.73, i32 0, i32 0), i8** %158 + store i8* getelementptr inbounds ([17 x i8], [17 x i8]* @str.73, i32 0, i32 16), i8** %159 %160 = load %StringRef, %StringRef* %tmp.StringRef247 store %StringRef %160, %StringRef* %"$tmpForRef246" - call void @ctor.364(%String* %157, %StringRef* %"$tmpForRef246") + call void @ctor.471(%String* %157, %StringRef* %"$tmpForRef246") ret void if_else243: ; preds = %if_block241 @@ -19653,19 +23161,19 @@ dumy_block248: ; No predecessors! br label %if_end244 if_block249: ; preds = %if_else243 - call void @ctor.313(%TokenType* %tmp.this253, i32 32) - %161 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this253) + call void @ctor.417(%TokenType* %tmp.this253, i32 32) + %161 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this253) br i1 %161, label %if_then250, label %if_else251 if_then250: ; preds = %if_block249 %162 = load %String*, %String** %_result.addr %163 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef255, i32 0, i32 0 %164 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef255, i32 0, i32 1 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.76, i32 0, i32 0), i8** %163 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.76, i32 0, i32 3), i8** %164 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.74, i32 0, i32 0), i8** %163 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.74, i32 0, i32 3), i8** %164 %165 = load %StringRef, %StringRef* %tmp.StringRef255 store %StringRef %165, %StringRef* %"$tmpForRef254" - call void @ctor.364(%String* %162, %StringRef* %"$tmpForRef254") + call void @ctor.471(%String* %162, %StringRef* %"$tmpForRef254") ret void if_else251: ; preds = %if_block249 @@ -19678,19 +23186,19 @@ dumy_block256: ; No predecessors! br label %if_end252 if_block257: ; preds = %if_else251 - call void @ctor.313(%TokenType* %tmp.this261, i32 33) - %166 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this261) + call void @ctor.417(%TokenType* %tmp.this261, i32 33) + %166 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this261) br i1 %166, label %if_then258, label %if_else259 if_then258: ; preds = %if_block257 %167 = load %String*, %String** %_result.addr %168 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef263, i32 0, i32 0 %169 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef263, i32 0, i32 1 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.77, i32 0, i32 0), i8** %168 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.77, i32 0, i32 3), i8** %169 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.75, i32 0, i32 0), i8** %168 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.75, i32 0, i32 3), i8** %169 %170 = load %StringRef, %StringRef* %tmp.StringRef263 store %StringRef %170, %StringRef* %"$tmpForRef262" - call void @ctor.364(%String* %167, %StringRef* %"$tmpForRef262") + call void @ctor.471(%String* %167, %StringRef* %"$tmpForRef262") ret void if_else259: ; preds = %if_block257 @@ -19703,19 +23211,19 @@ dumy_block264: ; No predecessors! br label %if_end260 if_block265: ; preds = %if_else259 - call void @ctor.313(%TokenType* %tmp.this269, i32 34) - %171 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this269) + call void @ctor.417(%TokenType* %tmp.this269, i32 34) + %171 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this269) br i1 %171, label %if_then266, label %if_else267 if_then266: ; preds = %if_block265 %172 = load %String*, %String** %_result.addr %173 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef271, i32 0, i32 0 %174 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef271, i32 0, i32 1 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.78, i32 0, i32 0), i8** %173 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.78, i32 0, i32 3), i8** %174 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.76, i32 0, i32 0), i8** %173 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.76, i32 0, i32 3), i8** %174 %175 = load %StringRef, %StringRef* %tmp.StringRef271 store %StringRef %175, %StringRef* %"$tmpForRef270" - call void @ctor.364(%String* %172, %StringRef* %"$tmpForRef270") + call void @ctor.471(%String* %172, %StringRef* %"$tmpForRef270") ret void if_else267: ; preds = %if_block265 @@ -19728,19 +23236,19 @@ dumy_block272: ; No predecessors! br label %if_end268 if_block273: ; preds = %if_else267 - call void @ctor.313(%TokenType* %tmp.this277, i32 35) - %176 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this277) + call void @ctor.417(%TokenType* %tmp.this277, i32 35) + %176 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this277) br i1 %176, label %if_then274, label %if_else275 if_then274: ; preds = %if_block273 %177 = load %String*, %String** %_result.addr %178 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef279, i32 0, i32 0 %179 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef279, i32 0, i32 1 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.79, i32 0, i32 0), i8** %178 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.79, i32 0, i32 3), i8** %179 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.77, i32 0, i32 0), i8** %178 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @str.77, i32 0, i32 3), i8** %179 %180 = load %StringRef, %StringRef* %tmp.StringRef279 store %StringRef %180, %StringRef* %"$tmpForRef278" - call void @ctor.364(%String* %177, %StringRef* %"$tmpForRef278") + call void @ctor.471(%String* %177, %StringRef* %"$tmpForRef278") ret void if_else275: ; preds = %if_block273 @@ -19753,19 +23261,19 @@ dumy_block280: ; No predecessors! br label %if_end276 if_block281: ; preds = %if_else275 - call void @ctor.313(%TokenType* %tmp.this285, i32 36) - %181 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this285) + call void @ctor.417(%TokenType* %tmp.this285, i32 36) + %181 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this285) br i1 %181, label %if_then282, label %if_else283 if_then282: ; preds = %if_block281 %182 = load %String*, %String** %_result.addr %183 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef287, i32 0, i32 0 %184 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef287, i32 0, i32 1 - store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @str.80, i32 0, i32 0), i8** %183 - store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @str.80, i32 0, i32 10), i8** %184 + store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @str.78, i32 0, i32 0), i8** %183 + store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @str.78, i32 0, i32 10), i8** %184 %185 = load %StringRef, %StringRef* %tmp.StringRef287 store %StringRef %185, %StringRef* %"$tmpForRef286" - call void @ctor.364(%String* %182, %StringRef* %"$tmpForRef286") + call void @ctor.471(%String* %182, %StringRef* %"$tmpForRef286") ret void if_else283: ; preds = %if_block281 @@ -19778,19 +23286,19 @@ dumy_block288: ; No predecessors! br label %if_end284 if_block289: ; preds = %if_else283 - call void @ctor.313(%TokenType* %tmp.this293, i32 37) - %186 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this293) + call void @ctor.417(%TokenType* %tmp.this293, i32 37) + %186 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this293) br i1 %186, label %if_then290, label %if_else291 if_then290: ; preds = %if_block289 %187 = load %String*, %String** %_result.addr %188 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef295, i32 0, i32 0 %189 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef295, i32 0, i32 1 - store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.81, i32 0, i32 0), i8** %188 - store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.81, i32 0, i32 8), i8** %189 + store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.79, i32 0, i32 0), i8** %188 + store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @str.79, i32 0, i32 8), i8** %189 %190 = load %StringRef, %StringRef* %tmp.StringRef295 store %StringRef %190, %StringRef* %"$tmpForRef294" - call void @ctor.364(%String* %187, %StringRef* %"$tmpForRef294") + call void @ctor.471(%String* %187, %StringRef* %"$tmpForRef294") ret void if_else291: ; preds = %if_block289 @@ -19803,19 +23311,19 @@ dumy_block296: ; No predecessors! br label %if_end292 if_block297: ; preds = %if_else291 - call void @ctor.313(%TokenType* %tmp.this301, i32 38) - %191 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this301) + call void @ctor.417(%TokenType* %tmp.this301, i32 38) + %191 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this301) br i1 %191, label %if_then298, label %if_else299 if_then298: ; preds = %if_block297 %192 = load %String*, %String** %_result.addr %193 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef303, i32 0, i32 0 %194 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef303, i32 0, i32 1 - store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @str.82, i32 0, i32 0), i8** %193 - store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @str.82, i32 0, i32 12), i8** %194 + store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @str.80, i32 0, i32 0), i8** %193 + store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @str.80, i32 0, i32 12), i8** %194 %195 = load %StringRef, %StringRef* %tmp.StringRef303 store %StringRef %195, %StringRef* %"$tmpForRef302" - call void @ctor.364(%String* %192, %StringRef* %"$tmpForRef302") + call void @ctor.471(%String* %192, %StringRef* %"$tmpForRef302") ret void if_else299: ; preds = %if_block297 @@ -19828,19 +23336,19 @@ dumy_block304: ; No predecessors! br label %if_end300 if_block305: ; preds = %if_else299 - call void @ctor.313(%TokenType* %tmp.this309, i32 39) - %196 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this309) + call void @ctor.417(%TokenType* %tmp.this309, i32 39) + %196 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this309) br i1 %196, label %if_then306, label %if_else307 if_then306: ; preds = %if_block305 %197 = load %String*, %String** %_result.addr %198 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef311, i32 0, i32 0 %199 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef311, i32 0, i32 1 - store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @str.83, i32 0, i32 0), i8** %198 - store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @str.83, i32 0, i32 14), i8** %199 + store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @str.81, i32 0, i32 0), i8** %198 + store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @str.81, i32 0, i32 14), i8** %199 %200 = load %StringRef, %StringRef* %tmp.StringRef311 store %StringRef %200, %StringRef* %"$tmpForRef310" - call void @ctor.364(%String* %197, %StringRef* %"$tmpForRef310") + call void @ctor.471(%String* %197, %StringRef* %"$tmpForRef310") ret void if_else307: ; preds = %if_block305 @@ -19853,19 +23361,19 @@ dumy_block312: ; No predecessors! br label %if_end308 if_block313: ; preds = %if_else307 - call void @ctor.313(%TokenType* %tmp.this317, i32 40) - %201 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this317) + call void @ctor.417(%TokenType* %tmp.this317, i32 40) + %201 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this317) br i1 %201, label %if_then314, label %if_else315 if_then314: ; preds = %if_block313 %202 = load %String*, %String** %_result.addr %203 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef319, i32 0, i32 0 %204 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef319, i32 0, i32 1 - store i8* getelementptr inbounds ([12 x i8], [12 x i8]* @str.84, i32 0, i32 0), i8** %203 - store i8* getelementptr inbounds ([12 x i8], [12 x i8]* @str.84, i32 0, i32 11), i8** %204 + store i8* getelementptr inbounds ([12 x i8], [12 x i8]* @str.82, i32 0, i32 0), i8** %203 + store i8* getelementptr inbounds ([12 x i8], [12 x i8]* @str.82, i32 0, i32 11), i8** %204 %205 = load %StringRef, %StringRef* %tmp.StringRef319 store %StringRef %205, %StringRef* %"$tmpForRef318" - call void @ctor.364(%String* %202, %StringRef* %"$tmpForRef318") + call void @ctor.471(%String* %202, %StringRef* %"$tmpForRef318") ret void if_else315: ; preds = %if_block313 @@ -19878,19 +23386,19 @@ dumy_block320: ; No predecessors! br label %if_end316 if_block321: ; preds = %if_else315 - call void @ctor.313(%TokenType* %tmp.this325, i32 41) - %206 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this325) + call void @ctor.417(%TokenType* %tmp.this325, i32 41) + %206 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this325) br i1 %206, label %if_then322, label %if_else323 if_then322: ; preds = %if_block321 %207 = load %String*, %String** %_result.addr %208 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef327, i32 0, i32 0 %209 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef327, i32 0, i32 1 - store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @str.85, i32 0, i32 0), i8** %208 - store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @str.85, i32 0, i32 12), i8** %209 + store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @str.83, i32 0, i32 0), i8** %208 + store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @str.83, i32 0, i32 12), i8** %209 %210 = load %StringRef, %StringRef* %tmp.StringRef327 store %StringRef %210, %StringRef* %"$tmpForRef326" - call void @ctor.364(%String* %207, %StringRef* %"$tmpForRef326") + call void @ctor.471(%String* %207, %StringRef* %"$tmpForRef326") ret void if_else323: ; preds = %if_block321 @@ -19903,19 +23411,19 @@ dumy_block328: ; No predecessors! br label %if_end324 if_block329: ; preds = %if_else323 - call void @ctor.313(%TokenType* %tmp.this333, i32 42) - %211 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this333) + call void @ctor.417(%TokenType* %tmp.this333, i32 42) + %211 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this333) br i1 %211, label %if_then330, label %if_else331 if_then330: ; preds = %if_block329 %212 = load %String*, %String** %_result.addr %213 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef335, i32 0, i32 0 %214 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef335, i32 0, i32 1 - store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @str.86, i32 0, i32 0), i8** %213 - store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @str.86, i32 0, i32 12), i8** %214 + store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @str.84, i32 0, i32 0), i8** %213 + store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @str.84, i32 0, i32 12), i8** %214 %215 = load %StringRef, %StringRef* %tmp.StringRef335 store %StringRef %215, %StringRef* %"$tmpForRef334" - call void @ctor.364(%String* %212, %StringRef* %"$tmpForRef334") + call void @ctor.471(%String* %212, %StringRef* %"$tmpForRef334") ret void if_else331: ; preds = %if_block329 @@ -19928,19 +23436,19 @@ dumy_block336: ; No predecessors! br label %if_end332 if_block337: ; preds = %if_else331 - call void @ctor.313(%TokenType* %tmp.this341, i32 43) - %216 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this341) + call void @ctor.417(%TokenType* %tmp.this341, i32 43) + %216 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this341) br i1 %216, label %if_then338, label %if_else339 if_then338: ; preds = %if_block337 %217 = load %String*, %String** %_result.addr %218 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef343, i32 0, i32 0 %219 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef343, i32 0, i32 1 - store i8* getelementptr inbounds ([14 x i8], [14 x i8]* @str.87, i32 0, i32 0), i8** %218 - store i8* getelementptr inbounds ([14 x i8], [14 x i8]* @str.87, i32 0, i32 13), i8** %219 + store i8* getelementptr inbounds ([14 x i8], [14 x i8]* @str.85, i32 0, i32 0), i8** %218 + store i8* getelementptr inbounds ([14 x i8], [14 x i8]* @str.85, i32 0, i32 13), i8** %219 %220 = load %StringRef, %StringRef* %tmp.StringRef343 store %StringRef %220, %StringRef* %"$tmpForRef342" - call void @ctor.364(%String* %217, %StringRef* %"$tmpForRef342") + call void @ctor.471(%String* %217, %StringRef* %"$tmpForRef342") ret void if_else339: ; preds = %if_block337 @@ -19953,92 +23461,175 @@ dumy_block344: ; No predecessors! br label %if_end340 if_block345: ; preds = %if_else339 - call void @ctor.313(%TokenType* %tmp.this349, i32 44) - %221 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this349) + call void @ctor.417(%TokenType* %tmp.this349, i32 44) + %221 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this349) br i1 %221, label %if_then346, label %if_else347 if_then346: ; preds = %if_block345 %222 = load %String*, %String** %_result.addr %223 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef351, i32 0, i32 0 %224 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef351, i32 0, i32 1 - store i8* getelementptr inbounds ([14 x i8], [14 x i8]* @str.88, i32 0, i32 0), i8** %223 - store i8* getelementptr inbounds ([14 x i8], [14 x i8]* @str.88, i32 0, i32 13), i8** %224 + store i8* getelementptr inbounds ([14 x i8], [14 x i8]* @str.86, i32 0, i32 0), i8** %223 + store i8* getelementptr inbounds ([14 x i8], [14 x i8]* @str.86, i32 0, i32 13), i8** %224 %225 = load %StringRef, %StringRef* %tmp.StringRef351 store %StringRef %225, %StringRef* %"$tmpForRef350" - call void @ctor.364(%String* %222, %StringRef* %"$tmpForRef350") + call void @ctor.471(%String* %222, %StringRef* %"$tmpForRef350") ret void if_else347: ; preds = %if_block345 br label %if_block353 -if_end348: ; preds = %if_end355, %dumy_block352 +if_end348: ; preds = %if_end356, %dumy_block352 br label %if_end340 dumy_block352: ; No predecessors! br label %if_end348 if_block353: ; preds = %if_else347 - call void @ctor.313(%TokenType* %tmp.this356, i32 45) - %226 = call i1 @"==.273"(%TokenType* %t.addr, %TokenType* %tmp.this356) - br i1 %226, label %if_then354, label %if_end355 + call void @ctor.417(%TokenType* %tmp.this357, i32 45) + %226 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this357) + br i1 %226, label %if_then354, label %if_else355 if_then354: ; preds = %if_block353 %227 = load %String*, %String** %_result.addr - %228 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef358, i32 0, i32 0 - %229 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef358, i32 0, i32 1 - store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @str.89, i32 0, i32 0), i8** %228 - store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @str.89, i32 0, i32 14), i8** %229 - %230 = load %StringRef, %StringRef* %tmp.StringRef358 - store %StringRef %230, %StringRef* %"$tmpForRef357" - call void @ctor.364(%String* %227, %StringRef* %"$tmpForRef357") + %228 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef359, i32 0, i32 0 + %229 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef359, i32 0, i32 1 + store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @str.87, i32 0, i32 0), i8** %228 + store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @str.87, i32 0, i32 14), i8** %229 + %230 = load %StringRef, %StringRef* %tmp.StringRef359 + store %StringRef %230, %StringRef* %"$tmpForRef358" + call void @ctor.471(%String* %227, %StringRef* %"$tmpForRef358") ret void -if_end355: ; preds = %dumy_block359, %if_block353 +if_else355: ; preds = %if_block353 + br label %if_block361 + +if_end356: ; preds = %if_end364, %dumy_block360 br label %if_end348 -dumy_block359: ; No predecessors! - br label %if_end355 +dumy_block360: ; No predecessors! + br label %if_end356 + +if_block361: ; preds = %if_else355 + call void @ctor.417(%TokenType* %tmp.this365, i32 253) + %231 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this365) + br i1 %231, label %if_then362, label %if_else363 + +if_then362: ; preds = %if_block361 + %232 = load %String*, %String** %_result.addr + %233 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef367, i32 0, i32 0 + %234 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef367, i32 0, i32 1 + store i8* getelementptr inbounds ([14 x i8], [14 x i8]* @str.88, i32 0, i32 0), i8** %233 + store i8* getelementptr inbounds ([14 x i8], [14 x i8]* @str.88, i32 0, i32 13), i8** %234 + %235 = load %StringRef, %StringRef* %tmp.StringRef367 + store %StringRef %235, %StringRef* %"$tmpForRef366" + call void @ctor.471(%String* %232, %StringRef* %"$tmpForRef366") + ret void + +if_else363: ; preds = %if_block361 + br label %if_block369 + +if_end364: ; preds = %if_end372, %dumy_block368 + br label %if_end356 + +dumy_block368: ; No predecessors! + br label %if_end364 + +if_block369: ; preds = %if_else363 + call void @ctor.417(%TokenType* %tmp.this373, i32 254) + %236 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this373) + br i1 %236, label %if_then370, label %if_else371 + +if_then370: ; preds = %if_block369 + %237 = load %String*, %String** %_result.addr + %238 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef375, i32 0, i32 0 + %239 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef375, i32 0, i32 1 + store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.89, i32 0, i32 0), i8** %238 + store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.89, i32 0, i32 7), i8** %239 + %240 = load %StringRef, %StringRef* %tmp.StringRef375 + store %StringRef %240, %StringRef* %"$tmpForRef374" + call void @ctor.471(%String* %237, %StringRef* %"$tmpForRef374") + ret void + +if_else371: ; preds = %if_block369 + br label %if_block377 + +if_end372: ; preds = %if_end379, %dumy_block376 + br label %if_end364 + +dumy_block376: ; No predecessors! + br label %if_end372 + +if_block377: ; preds = %if_else371 + call void @ctor.417(%TokenType* %tmp.this380, i32 255) + %241 = call i1 @"==.352"(%TokenType* %t.addr, %TokenType* %tmp.this380) + br i1 %241, label %if_then378, label %if_end379 + +if_then378: ; preds = %if_block377 + %242 = load %String*, %String** %_result.addr + %243 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef382, i32 0, i32 0 + %244 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef382, i32 0, i32 1 + store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @str.90, i32 0, i32 0), i8** %243 + store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @str.90, i32 0, i32 10), i8** %244 + %245 = load %StringRef, %StringRef* %tmp.StringRef382 + store %StringRef %245, %StringRef* %"$tmpForRef381" + call void @ctor.471(%String* %242, %StringRef* %"$tmpForRef381") + ret void + +if_end379: ; preds = %dumy_block383, %if_block377 + br label %if_end372 + +dumy_block383: ; No predecessors! + br label %if_end379 } -; Function Attrs: alwaysinline nounwind -define internal void @ctor.428(%Node* %this, %Node* %other) #3 { - %this.addr = alloca %Node* - store %Node* %this, %Node** %this.addr - %other.addr = alloca %Node* - store %Node* %other, %Node** %other.addr +; Function Attrs: inlinehint nounwind +define internal %Node @mkIdentifier(%AstBuilder* %obj, %Location* %loc, %StringRef %id) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %id.addr = alloca %StringRef + store %StringRef %id, %StringRef* %id.addr br label %code code: ; preds = %0 - %1 = load %Node*, %Node** %this.addr - %2 = getelementptr inbounds %Node, %Node* %1, i32 0, i32 0 - %3 = load %Node*, %Node** %other.addr - %4 = getelementptr inbounds %Node, %Node* %3, i32 0, i32 0 - call void @ctor.429(%UntypedPtr* %2, %UntypedPtr* %4) - ret void + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 17 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load %StringRef, %StringRef* %id.addr + %8 = call %Node @"().553"(%"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %2, %UntypedPtr %5, %Location* %6, %StringRef %7) + ret %Node %8 } -; Function Attrs: alwaysinline nounwind -define internal void @ctor.429(%UntypedPtr* %this, %UntypedPtr* %other) #3 { - %this.addr = alloca %UntypedPtr* - store %UntypedPtr* %this, %UntypedPtr** %this.addr - %other.addr = alloca %UntypedPtr* - store %UntypedPtr* %other, %UntypedPtr** %other.addr +; Function Attrs: inlinehint nounwind +define internal %Node @"().553"(%"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %this, %UntypedPtr %p1, %Location* %p2, %StringRef %p3) #4 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"** %this.addr + %p1.addr = alloca %UntypedPtr + store %UntypedPtr %p1, %UntypedPtr* %p1.addr + %p2.addr = alloca %Location* + store %Location* %p2, %Location** %p2.addr + %p3.addr = alloca %StringRef + store %StringRef %p3, %StringRef* %p3.addr br label %code code: ; preds = %0 - %1 = load %UntypedPtr*, %UntypedPtr** %other.addr - %2 = getelementptr inbounds %UntypedPtr, %UntypedPtr* %1, i32 0, i32 0 - %3 = load i8*, i8** %2 - %4 = load %UntypedPtr*, %UntypedPtr** %this.addr - %5 = getelementptr inbounds %UntypedPtr, %UntypedPtr* %4, i32 0, i32 0 - store i8* %3, i8** %5 - ret void + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"** %this.addr + %2 = load %UntypedPtr, %UntypedPtr* %p1.addr + %3 = load %Location*, %Location** %p2.addr + %4 = load %StringRef, %StringRef* %p3.addr + %5 = bitcast %"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %1 to %Node (%UntypedPtr, %Location*, %StringRef)** + %6 = load %Node (%UntypedPtr, %Location*, %StringRef)*, %Node (%UntypedPtr, %Location*, %StringRef)** %5 + %7 = call %Node %6(%UntypedPtr %2, %Location* %3, %StringRef %4) + ret %Node %7 } -declare %Node @comp_parser_mkIdentifier(%Location*, %StringRef) - ; Function Attrs: alwaysinline nounwind -define internal void @"=.430"(%Node* %this, %Node* %other) #3 { +define internal void @"=.554"(%Node* %this, %Node* %other) #3 { %this.addr = alloca %Node* store %Node* %this, %Node** %this.addr %other.addr = alloca %Node* @@ -20050,29 +23641,60 @@ code: ; preds = %0 %2 = getelementptr inbounds %Node, %Node* %1, i32 0, i32 0 %3 = load %Node*, %Node** %other.addr %4 = getelementptr inbounds %Node, %Node* %3, i32 0, i32 0 - call void @"=.431"(%UntypedPtr* %2, %UntypedPtr* %4) + call void @"=.288"(%UntypedPtr* %2, %UntypedPtr* %4) ret void } -; Function Attrs: alwaysinline nounwind -define internal void @"=.431"(%UntypedPtr* %this, %UntypedPtr* %other) #3 { - %this.addr = alloca %UntypedPtr* - store %UntypedPtr* %this, %UntypedPtr** %this.addr - %other.addr = alloca %UntypedPtr* - store %UntypedPtr* %other, %UntypedPtr** %other.addr +; Function Attrs: inlinehint nounwind +define internal %Node @mkStarExpr(%AstBuilder* %obj, %Location* %loc, %Node %base, %StringRef %id) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %base.addr = alloca %Node + store %Node %base, %Node* %base.addr + %id.addr = alloca %StringRef + store %StringRef %id, %StringRef* %id.addr br label %code code: ; preds = %0 - %1 = load %UntypedPtr*, %UntypedPtr** %other.addr - %2 = getelementptr inbounds %UntypedPtr, %UntypedPtr* %1, i32 0, i32 0 - %3 = load i8*, i8** %2 - %4 = load %UntypedPtr*, %UntypedPtr** %this.addr - %5 = getelementptr inbounds %UntypedPtr, %UntypedPtr* %4, i32 0, i32 0 - store i8* %3, i8** %5 - ret void + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 19 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load %Node, %Node* %base.addr + %8 = load %StringRef, %StringRef* %id.addr + %9 = call %Node @"().555"(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %2, %UntypedPtr %5, %Location* %6, %Node %7, %StringRef %8) + ret %Node %9 } -declare %Node @comp_parser_mkStarExpr(%Location*, %Node, %StringRef) +; Function Attrs: inlinehint nounwind +define internal %Node @"().555"(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %this, %UntypedPtr %p1, %Location* %p2, %Node %p3, %StringRef %p4) #4 { + %this.addr = alloca %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* + store %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %this, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"** %this.addr + %p1.addr = alloca %UntypedPtr + store %UntypedPtr %p1, %UntypedPtr* %p1.addr + %p2.addr = alloca %Location* + store %Location* %p2, %Location** %p2.addr + %p3.addr = alloca %Node + store %Node %p3, %Node* %p3.addr + %p4.addr = alloca %StringRef + store %StringRef %p4, %StringRef* %p4.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"*, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"** %this.addr + %2 = load %UntypedPtr, %UntypedPtr* %p1.addr + %3 = load %Location*, %Location** %p2.addr + %4 = load %Node, %Node* %p3.addr + %5 = load %StringRef, %StringRef* %p4.addr + %6 = bitcast %"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %1 to %Node (%UntypedPtr, %Location*, %Node, %StringRef)** + %7 = load %Node (%UntypedPtr, %Location*, %Node, %StringRef)*, %Node (%UntypedPtr, %Location*, %Node, %StringRef)** %6 + %8 = call %Node %7(%UntypedPtr %2, %Location* %3, %Node %4, %StringRef %5) + ret %Node %8 +} ; Function Attrs: inlinehint nounwind define internal void @span(%Location* sret %_result, %Location* %start, %Location* %end) #4 { @@ -20087,11 +23709,11 @@ define internal void @span(%Location* sret %_result, %Location* %start, %Locatio code: ; preds = %0 %1 = load %Location*, %Location** %start.addr - call void @ctor.171(%Location* %res, %Location* %1) + call void @ctor.182(%Location* %res, %Location* %1) %2 = load %Location*, %Location** %end.addr call void @copyEnd(%Location* %res, %Location* %2) %3 = load %Location*, %Location** %_result.addr - call void @ctor.171(%Location* %3, %Location* %res) + call void @ctor.182(%Location* %3, %Location* %res) ret void } @@ -20108,65 +23730,76 @@ code: ; preds = %0 %2 = getelementptr inbounds %Location, %Location* %1, i32 0, i32 2 %3 = load %Location*, %Location** %other.addr %4 = getelementptr inbounds %Location, %Location* %3, i32 0, i32 2 - call void @"=.244"(%LineCol* %2, %LineCol* %4) + call void @"=.285"(%LineCol* %2, %LineCol* %4) ret void } ; Function Attrs: inlinehint nounwind -define internal void @lastLoc(%Location* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this) #4 { +define internal void @lastLoc(%Location* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this) #4 { %_result.addr = alloca %Location* store %Location* %_result, %Location** %_result.addr - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr br label %code code: ; preds = %0 %1 = load %Location*, %Location** %_result.addr - %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %3 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, i32 0, i32 1 + %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %3 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %2, i32 0, i32 1 %4 = getelementptr inbounds %Token, %Token* %3, i32 0, i32 0 - call void @ctor.171(%Location* %1, %Location* %4) + call void @ctor.182(%Location* %1, %Location* %4) ret void } -declare %Node @comp_parser_mkCompoundExpr(%Location*, %Node, %StringRef) - -; Function Attrs: alwaysinline nounwind -define internal void @ctor.432(%Node* %this) #3 { - %this.addr = alloca %Node* - store %Node* %this, %Node** %this.addr +; Function Attrs: inlinehint nounwind +define internal %Node @mkCompoundExpr(%AstBuilder* %obj, %Location* %loc, %Node %base, %StringRef %id) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %base.addr = alloca %Node + store %Node %base, %Node* %base.addr + %id.addr = alloca %StringRef + store %StringRef %id, %StringRef* %id.addr br label %code code: ; preds = %0 - %1 = load %Node*, %Node** %this.addr - %2 = getelementptr inbounds %Node, %Node* %1, i32 0, i32 0 - call void @ctor.433(%UntypedPtr* %2) - ret void + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 18 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load %Node, %Node* %base.addr + %8 = load %StringRef, %StringRef* %id.addr + %9 = call %Node @"().555"(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %2, %UntypedPtr %5, %Location* %6, %Node %7, %StringRef %8) + ret %Node %9 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.433(%UntypedPtr* %this) #3 { - %this.addr = alloca %UntypedPtr* - store %UntypedPtr* %this, %UntypedPtr** %this.addr +define internal void @ctor.556(%Node* %this) #3 { + %this.addr = alloca %Node* + store %Node* %this, %Node** %this.addr br label %code code: ; preds = %0 - %1 = load %UntypedPtr*, %UntypedPtr** %this.addr - %2 = getelementptr inbounds %UntypedPtr, %UntypedPtr* %1, i32 0, i32 0 - store i8* null, i8** %2 + %1 = load %Node*, %Node** %this.addr + %2 = getelementptr inbounds %Node, %Node* %1, i32 0, i32 0 + call void @ctor.135(%UntypedPtr* %2) ret void } ; Function Attrs: inlinehint nounwind -define internal void @parseStmts(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, i1 %topLevel, %Node* %res) #4 { - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal void @parseStmts(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, i1 %topLevel, %Node* %res) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %topLevel.addr = alloca i1 store i1 %topLevel, i1* %topLevel.addr %res.addr = alloca %Node* store %Node* %res, %Node** %res.addr %child = alloca %Node %"$tmpForRef" = alloca %Node + %"$tmpForRef1" = alloca %Node br label %code code: ; preds = %0 @@ -20176,30 +23809,34 @@ while_block: ; preds = %while_step, %code br i1 true, label %while_body, label %while_end while_body: ; preds = %while_block - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %2 = load i1, i1* %topLevel.addr - call void @parseStmt(%Node* %child, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, i1 %2) + %3 = call %Node @parseStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, i1 %2) + store %Node %3, %Node* %"$tmpForRef" + call void @ctor.545(%Node* %child, %Node* %"$tmpForRef") br label %if_block -while_step: ; preds = %dumy_block1, %if_then +while_step: ; preds = %dumy_block2, %if_then br label %while_block while_end: ; preds = %if_end, %while_block ret void if_block: ; preds = %while_body - %3 = load %Node, %Node* %child - %4 = call i1 @isSet.470(%Node %3) - br i1 %4, label %if_then, label %if_end + %4 = load %Node, %Node* %child + %5 = call i1 @isSet.595(%Node %4) + br i1 %5, label %if_then, label %if_end if_then: ; preds = %if_block - %5 = load %Node*, %Node** %res.addr %6 = load %Node*, %Node** %res.addr - %7 = load %Node, %Node* %6 - %8 = load %Node, %Node* %child - %9 = call %Node @comp_parser_addToNodeList(%Node %7, %Node %8) - store %Node %9, %Node* %"$tmpForRef" - call void @"=.430"(%Node* %5, %Node* %"$tmpForRef") + %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %8 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %7, i32 0, i32 3 + %9 = load %Node*, %Node** %res.addr + %10 = load %Node, %Node* %9 + %11 = load %Node, %Node* %child + %12 = call %Node @addToNodeList(%AstBuilder* %8, %Node %10, %Node %11) + store %Node %12, %Node* %"$tmpForRef1" + call void @"=.554"(%Node* %6, %Node* %"$tmpForRef1") br label %while_step if_end: ; preds = %dumy_block, %if_block @@ -20208,53 +23845,54 @@ if_end: ; preds = %dumy_block, %if_blo dumy_block: ; No predecessors! br label %if_end -dumy_block1: ; No predecessors! +dumy_block2: ; No predecessors! br label %while_step } ; Function Attrs: noinline nounwind -define void @parseStmt(%Node* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, i1 %topLevel) #5 { - %_result.addr = alloca %Node* - store %Node* %_result, %Node** %_result.addr - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define %Node @parseStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, i1 %topLevel) #5 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %topLevel.addr = alloca i1 store i1 %topLevel, i1* %topLevel.addr %res = alloca %Node %loc = alloca %Location %mods = alloca %Node - %found = alloca i1 %"$tmpForRef" = alloca %Node + %found = alloca i1 + %"$tmpForRef56" = alloca %Node %"$tmpC" = alloca %Location - %"$tmpC56" = alloca %Location - %"$tmpC57" = alloca %String + %"$tmpC57" = alloca %Location + %"$tmpC58" = alloca %String %tmp.StringRef = alloca %StringRef - %"$tmpC58" = alloca %Token - %tmp.StringRef59 = alloca %StringRef + %"$tmpC59" = alloca %Token + %tmp.StringRef60 = alloca %StringRef br label %code code: ; preds = %0 - call void @ctor.432(%Node* %res) - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @consumeSemis(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1) - %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @curLoc(%Location* %loc, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2) - %3 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseModifiers(%Node* %mods, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %3) - %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %5 = call i1 @parseImportLineOpt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %4, %Node* %res) - br i1 %5, label %cond.true37, label %cond.false38 + call void @ctor.556(%Node* %res) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @consumeSemis(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1) + %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @curLoc(%Location* %loc, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %2) + %3 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %4 = call %Node @parseModifiers(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %3) + store %Node %4, %Node* %"$tmpForRef" + call void @ctor.545(%Node* %mods, %Node* %"$tmpForRef") + %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %6 = call i1 @parseImportLineOpt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %5, %Node* %res) + br i1 %6, label %cond.true37, label %cond.false38 cond.true: ; preds = %cond.end3 br label %cond.end cond.false: ; preds = %cond.end3 - %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %7 = call i1 @parseReturnStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %6, %Node* %res) + %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %8 = call i1 @parseReturnStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %7, %Node* %res) br label %cond.end cond.end: ; preds = %cond.false, %cond.true - %cond.res52 = phi i1 [ true, %cond.true ], [ %7, %cond.false ] + %cond.res52 = phi i1 [ true, %cond.true ], [ %8, %cond.false ] store i1 %cond.res52, i1* %found br label %if_block @@ -20262,211 +23900,212 @@ cond.true1: ; preds = %cond.end6 br label %cond.end3 cond.false2: ; preds = %cond.end6 - %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %9 = call i1 @parseContinueStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8, %Node* %res) + %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %10 = call i1 @parseContinueStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %9, %Node* %res) br label %cond.end3 cond.end3: ; preds = %cond.false2, %cond.true1 - %cond.res51 = phi i1 [ true, %cond.true1 ], [ %9, %cond.false2 ] + %cond.res51 = phi i1 [ true, %cond.true1 ], [ %10, %cond.false2 ] br i1 %cond.res51, label %cond.true, label %cond.false cond.true4: ; preds = %cond.end9 br label %cond.end6 cond.false5: ; preds = %cond.end9 - %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %11 = call i1 @parseBreakStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %10, %Node* %res) + %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %12 = call i1 @parseBreakStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %11, %Node* %res) br label %cond.end6 cond.end6: ; preds = %cond.false5, %cond.true4 - %cond.res50 = phi i1 [ true, %cond.true4 ], [ %11, %cond.false5 ] + %cond.res50 = phi i1 [ true, %cond.true4 ], [ %12, %cond.false5 ] br i1 %cond.res50, label %cond.true1, label %cond.false2 cond.true7: ; preds = %cond.end12 br label %cond.end9 cond.false8: ; preds = %cond.end12 - %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %13 = load i1, i1* %topLevel.addr - %14 = call i1 @parseWhileStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %12, %Node* %res, i1 %13) + %13 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %14 = load i1, i1* %topLevel.addr + %15 = call i1 @parseWhileStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %13, %Node* %res, i1 %14) br label %cond.end9 cond.end9: ; preds = %cond.false8, %cond.true7 - %cond.res49 = phi i1 [ true, %cond.true7 ], [ %14, %cond.false8 ] + %cond.res49 = phi i1 [ true, %cond.true7 ], [ %15, %cond.false8 ] br i1 %cond.res49, label %cond.true4, label %cond.false5 cond.true10: ; preds = %cond.end15 br label %cond.end12 cond.false11: ; preds = %cond.end15 - %15 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %16 = load i1, i1* %topLevel.addr - %17 = call i1 @parseForStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %15, %Node* %res, i1 %16) + %16 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %17 = load i1, i1* %topLevel.addr + %18 = call i1 @parseForStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %16, %Node* %res, i1 %17) br label %cond.end12 cond.end12: ; preds = %cond.false11, %cond.true10 - %cond.res48 = phi i1 [ true, %cond.true10 ], [ %17, %cond.false11 ] + %cond.res48 = phi i1 [ true, %cond.true10 ], [ %18, %cond.false11 ] br i1 %cond.res48, label %cond.true7, label %cond.false8 cond.true13: ; preds = %cond.end18 br label %cond.end15 cond.false14: ; preds = %cond.end18 - %18 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %19 = load i1, i1* %topLevel.addr - %20 = call i1 @parseIfStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %18, %Node* %res, i1 %19) + %19 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %20 = load i1, i1* %topLevel.addr + %21 = call i1 @parseIfStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %19, %Node* %res, i1 %20) br label %cond.end15 cond.end15: ; preds = %cond.false14, %cond.true13 - %cond.res47 = phi i1 [ true, %cond.true13 ], [ %20, %cond.false14 ] + %cond.res47 = phi i1 [ true, %cond.true13 ], [ %21, %cond.false14 ] br i1 %cond.res47, label %cond.true10, label %cond.false11 cond.true16: ; preds = %cond.end21 br label %cond.end18 cond.false17: ; preds = %cond.end21 - %21 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %22 = load i1, i1* %topLevel.addr - %23 = call i1 @parseBlockStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %21, %Node* %res, i1 %22) + %22 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %23 = load i1, i1* %topLevel.addr + %24 = call i1 @parseBlockStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %22, %Node* %res, i1 %23) br label %cond.end18 cond.end18: ; preds = %cond.false17, %cond.true16 - %cond.res46 = phi i1 [ true, %cond.true16 ], [ %23, %cond.false17 ] + %cond.res46 = phi i1 [ true, %cond.true16 ], [ %24, %cond.false17 ] br i1 %cond.res46, label %cond.true13, label %cond.false14 cond.true19: ; preds = %cond.end24 br label %cond.end21 cond.false20: ; preds = %cond.end24 - %24 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %25 = call i1 @parseExprStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %24, %Node* %res) + %25 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %26 = call i1 @parseExprStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %25, %Node* %res) br label %cond.end21 cond.end21: ; preds = %cond.false20, %cond.true19 - %cond.res45 = phi i1 [ true, %cond.true19 ], [ %25, %cond.false20 ] + %cond.res45 = phi i1 [ true, %cond.true19 ], [ %26, %cond.false20 ] br i1 %cond.res45, label %cond.true16, label %cond.false17 cond.true22: ; preds = %cond.end27 br label %cond.end24 cond.false23: ; preds = %cond.end27 - %26 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %27 = call i1 @parseFunDecl(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %26, %Node* %res) + %27 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %28 = call i1 @parseFunDecl(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %27, %Node* %res) br label %cond.end24 cond.end24: ; preds = %cond.false23, %cond.true22 - %cond.res44 = phi i1 [ true, %cond.true22 ], [ %27, %cond.false23 ] + %cond.res44 = phi i1 [ true, %cond.true22 ], [ %28, %cond.false23 ] br i1 %cond.res44, label %cond.true19, label %cond.false20 cond.true25: ; preds = %cond.end30 br label %cond.end27 cond.false26: ; preds = %cond.end30 - %28 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %29 = call i1 @parseVarDecl(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %28, %Node* %res) + %29 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %30 = call i1 @parseVarDecl(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %29, %Node* %res) br label %cond.end27 cond.end27: ; preds = %cond.false26, %cond.true25 - %cond.res43 = phi i1 [ true, %cond.true25 ], [ %29, %cond.false26 ] + %cond.res43 = phi i1 [ true, %cond.true25 ], [ %30, %cond.false26 ] br i1 %cond.res43, label %cond.true22, label %cond.false23 cond.true28: ; preds = %cond.end33 br label %cond.end30 cond.false29: ; preds = %cond.end33 - %30 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %31 = call i1 @parseConceptDecl(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %30, %Node* %res) + %31 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %32 = call i1 @parseConceptDecl(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %31, %Node* %res) br label %cond.end30 cond.end30: ; preds = %cond.false29, %cond.true28 - %cond.res42 = phi i1 [ true, %cond.true28 ], [ %31, %cond.false29 ] + %cond.res42 = phi i1 [ true, %cond.true28 ], [ %32, %cond.false29 ] br i1 %cond.res42, label %cond.true25, label %cond.false26 cond.true31: ; preds = %cond.end36 br label %cond.end33 cond.false32: ; preds = %cond.end36 - %32 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %33 = call i1 @parseDatatypeDecl(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %32, %Node* %res) + %33 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %34 = call i1 @parseDatatypeDecl(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %33, %Node* %res) br label %cond.end33 cond.end33: ; preds = %cond.false32, %cond.true31 - %cond.res41 = phi i1 [ true, %cond.true31 ], [ %33, %cond.false32 ] + %cond.res41 = phi i1 [ true, %cond.true31 ], [ %34, %cond.false32 ] br i1 %cond.res41, label %cond.true28, label %cond.false29 cond.true34: ; preds = %cond.end39 br label %cond.end36 cond.false35: ; preds = %cond.end39 - %34 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %35 = call i1 @parsePackageDecl(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %34, %Node* %res) + %35 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %36 = call i1 @parsePackageDecl(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %35, %Node* %res) br label %cond.end36 cond.end36: ; preds = %cond.false35, %cond.true34 - %cond.res40 = phi i1 [ true, %cond.true34 ], [ %35, %cond.false35 ] + %cond.res40 = phi i1 [ true, %cond.true34 ], [ %36, %cond.false35 ] br i1 %cond.res40, label %cond.true31, label %cond.false32 cond.true37: ; preds = %code br label %cond.end39 cond.false38: ; preds = %code - %36 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %37 = call i1 @parseUsingDecl(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %36, %Node* %res) + %37 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %38 = call i1 @parseUsingDecl(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %37, %Node* %res) br label %cond.end39 cond.end39: ; preds = %cond.false38, %cond.true37 - %cond.res = phi i1 [ true, %cond.true37 ], [ %37, %cond.false38 ] + %cond.res = phi i1 [ true, %cond.true37 ], [ %38, %cond.false38 ] br i1 %cond.res, label %cond.true34, label %cond.false35 if_block: ; preds = %cond.end - %38 = load %Node, %Node* %mods - %39 = call i1 @isSet.470(%Node %38) - br i1 %39, label %if_then, label %if_end + %39 = load %Node, %Node* %mods + %40 = call i1 @isSet.595(%Node %39) + br i1 %40, label %if_then, label %if_end if_then: ; preds = %if_block br label %if_block53 if_end: ; preds = %if_end55, %if_block - %40 = load %Node*, %Node** %_result.addr - call void @ctor.428(%Node* %40, %Node* %res) - ret void + %41 = load %Node, %Node* %res + ret %Node %41 if_block53: ; preds = %if_then - %41 = load i1, i1* %found - br i1 %41, label %if_then54, label %if_else + %42 = load i1, i1* %found + br i1 %42, label %if_then54, label %if_else if_then54: ; preds = %if_block53 - %42 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @lastLoc(%Location* %"$tmpC56", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %42) - call void @span(%Location* %"$tmpC", %Location* %loc, %Location* %"$tmpC56") - %43 = load %Node, %Node* %res - %44 = load %Node, %Node* %mods - %45 = call %Node @comp_parser_mkModifiers(%Location* %"$tmpC", %Node %43, %Node %44) - store %Node %45, %Node* %"$tmpForRef" - call void @"=.430"(%Node* %res, %Node* %"$tmpForRef") + %43 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %44 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %43, i32 0, i32 3 + %45 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @lastLoc(%Location* %"$tmpC57", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %45) + call void @span(%Location* %"$tmpC", %Location* %loc, %Location* %"$tmpC57") + %46 = load %Node, %Node* %res + %47 = load %Node, %Node* %mods + %48 = call %Node @mkModifiers(%AstBuilder* %44, %Location* %"$tmpC", %Node %46, %Node %47) + store %Node %48, %Node* %"$tmpForRef56" + call void @"=.554"(%Node* %res, %Node* %"$tmpForRef56") br label %if_end55 if_else: ; preds = %if_block53 - %46 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %47 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 0 - %48 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 1 - store i8* getelementptr inbounds ([26 x i8], [26 x i8]* @str.106, i32 0, i32 0), i8** %47 - store i8* getelementptr inbounds ([26 x i8], [26 x i8]* @str.106, i32 0, i32 25), i8** %48 - %49 = load %StringRef, %StringRef* %tmp.StringRef - %50 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %51 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %50, i32 0, i32 0 - call void @"pre_*.419"(%Token* %"$tmpC58", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %51) - %52 = getelementptr inbounds %Token, %Token* %"$tmpC58", i32 0, i32 1 - %53 = load %TokenType, %TokenType* %52 - %54 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef59, i32 0, i32 0 - %55 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef59, i32 0, i32 1 - store i8* getelementptr inbounds ([22 x i8], [22 x i8]* @str.107, i32 0, i32 0), i8** %54 - store i8* getelementptr inbounds ([22 x i8], [22 x i8]* @str.107, i32 0, i32 21), i8** %55 - %56 = load %StringRef, %StringRef* %tmp.StringRef59 - call void @toString.471(%String* %"$tmpC57", %StringRef %49, %TokenType %53, %StringRef %56) - call void @reportError.423(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %46, %String* %"$tmpC57") - call void @dtor.218(%String* %"$tmpC57") - call void @dtor.217(%Token* %"$tmpC58") + %49 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %50 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 0 + %51 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 1 + store i8* getelementptr inbounds ([26 x i8], [26 x i8]* @str.107, i32 0, i32 0), i8** %50 + store i8* getelementptr inbounds ([26 x i8], [26 x i8]* @str.107, i32 0, i32 25), i8** %51 + %52 = load %StringRef, %StringRef* %tmp.StringRef + %53 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %54 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %53, i32 0, i32 0 + call void @"pre_*.543"(%Token* %"$tmpC59", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %54) + %55 = getelementptr inbounds %Token, %Token* %"$tmpC59", i32 0, i32 1 + %56 = load %TokenType, %TokenType* %55 + %57 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef60, i32 0, i32 0 + %58 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef60, i32 0, i32 1 + store i8* getelementptr inbounds ([22 x i8], [22 x i8]* @str.108, i32 0, i32 0), i8** %57 + store i8* getelementptr inbounds ([22 x i8], [22 x i8]* @str.108, i32 0, i32 21), i8** %58 + %59 = load %StringRef, %StringRef* %tmp.StringRef60 + call void @toString.597(%String* %"$tmpC58", %StringRef %52, %TokenType %56, %StringRef %59) + call void @reportError.548(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %49, %String* %"$tmpC58") + call void @dtor.261(%String* %"$tmpC58") + call void @dtor.260(%Token* %"$tmpC59") br label %if_end55 if_end55: ; preds = %if_else, %if_then54 @@ -20474,9 +24113,9 @@ if_end55: ; preds = %if_else, %if_then54 } ; Function Attrs: inlinehint nounwind -define internal void @consumeSemis(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this) #4 { - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal void @consumeSemis(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %tmp.this = alloca %TokenType br label %code @@ -20484,10 +24123,10 @@ code: ; preds = %0 br label %while_block while_block: ; preds = %while_step, %code - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 31) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 31) %2 = load %TokenType, %TokenType* %tmp.this - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, %TokenType %2) br i1 %3, label %while_body, label %while_end while_body: ; preds = %while_block @@ -20501,134 +24140,138 @@ while_end: ; preds = %while_block } ; Function Attrs: inlinehint nounwind -define internal void @parseModifiers(%Node* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this) #4 { - %_result.addr = alloca %Node* - store %Node* %_result, %Node** %_result.addr - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal %Node @parseModifiers(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %res = alloca %Node %tmp.this = alloca %TokenType %e = alloca %Node - %"$tmpC" = alloca %Node %"$tmpForRef" = alloca %Node - %tmp.this1 = alloca %TokenType - %"$tmpC2" = alloca %Node + %"$tmpForRef1" = alloca %Node + %tmp.this2 = alloca %TokenType %"$tmpForRef3" = alloca %Node - %tmp.this4 = alloca %TokenType + %"$tmpForRef4" = alloca %Node + %tmp.this5 = alloca %TokenType br label %code code: ; preds = %0 - call void @ctor.432(%Node* %res) + call void @ctor.556(%Node* %res) br label %if_block if_block: ; preds = %code - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 26) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 26) %2 = load %TokenType, %TokenType* %tmp.this - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_end if_then: ; preds = %if_block - call void @ctor.432(%Node* %e) - %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseExpr(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %4, i1 true) - call void @"=.430"(%Node* %e, %Node* %"$tmpC") - %5 = load %Node, %Node* %res - %6 = load %Node, %Node* %e - %7 = call %Node @comp_parser_addToNodeList(%Node %5, %Node %6) - store %Node %7, %Node* %"$tmpForRef" - call void @"=.430"(%Node* %res, %Node* %"$tmpForRef") + call void @ctor.556(%Node* %e) + %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %5 = call %Node @parseExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %4, i1 true) + store %Node %5, %Node* %"$tmpForRef" + call void @"=.554"(%Node* %e, %Node* %"$tmpForRef") + %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %7 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %6, i32 0, i32 3 + %8 = load %Node, %Node* %res + %9 = load %Node, %Node* %e + %10 = call %Node @addToNodeList(%AstBuilder* %7, %Node %8, %Node %9) + store %Node %10, %Node* %"$tmpForRef1" + call void @"=.554"(%Node* %res, %Node* %"$tmpForRef1") br label %while_block if_end: ; preds = %while_end, %if_block - %8 = load %Node*, %Node** %_result.addr - call void @ctor.428(%Node* %8, %Node* %res) - ret void + %11 = load %Node, %Node* %res + ret %Node %11 while_block: ; preds = %while_step, %if_then - %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this1, i32 32) - %10 = load %TokenType, %TokenType* %tmp.this1 - %11 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9, %TokenType %10) - br i1 %11, label %while_body, label %while_end + %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this2, i32 32) + %13 = load %TokenType, %TokenType* %tmp.this2 + %14 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %12, %TokenType %13) + br i1 %14, label %while_body, label %while_end while_body: ; preds = %while_block - %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseExpr(%Node* %"$tmpC2", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %12, i1 true) - call void @"=.430"(%Node* %e, %Node* %"$tmpC2") - %13 = load %Node, %Node* %res - %14 = load %Node, %Node* %e - %15 = call %Node @comp_parser_addToNodeList(%Node %13, %Node %14) - store %Node %15, %Node* %"$tmpForRef3" - call void @"=.430"(%Node* %res, %Node* %"$tmpForRef3") + %15 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %16 = call %Node @parseExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %15, i1 true) + store %Node %16, %Node* %"$tmpForRef3" + call void @"=.554"(%Node* %e, %Node* %"$tmpForRef3") + %17 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %18 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %17, i32 0, i32 3 + %19 = load %Node, %Node* %res + %20 = load %Node, %Node* %e + %21 = call %Node @addToNodeList(%AstBuilder* %18, %Node %19, %Node %20) + store %Node %21, %Node* %"$tmpForRef4" + call void @"=.554"(%Node* %res, %Node* %"$tmpForRef4") br label %while_step while_step: ; preds = %while_body br label %while_block while_end: ; preds = %while_block - %16 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this4, i32 27) - %17 = load %TokenType, %TokenType* %tmp.this4 - %18 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %16, %TokenType %17) - %19 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @consumeSemis(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %19) + %22 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this5, i32 27) + %23 = load %TokenType, %TokenType* %tmp.this5 + %24 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %22, %TokenType %23) + %25 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @consumeSemis(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %25) br label %if_end } ; Function Attrs: inlinehint nounwind -define internal void @parseExpr(%Node* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, i1 %withEqual) #4 { - %_result.addr = alloca %Node* - store %Node* %_result, %Node** %_result.addr - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal %Node @parseExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, i1 %withEqual) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %withEqual.addr = alloca i1 store i1 %withEqual, i1* %withEqual.addr %loc = alloca %Location %baseExpr = alloca %Node + %"$tmpForRef" = alloca %Node %op = alloca %String %"$tmpC" = alloca %String %rhs = alloca %Node - %"$tmpForRef" = alloca %Node - %"$tmpC4" = alloca %Location - %"$tmpC5" = alloca %Location - %"$tmpForRef6" = alloca %Node + %"$tmpForRef4" = alloca %Node + %"$tmpForRef5" = alloca %Node + %"$tmpC6" = alloca %Location %"$tmpC7" = alloca %Location - %"$tmpC8" = alloca %Location + %"$tmpForRef8" = alloca %Node + %"$tmpC9" = alloca %Location + %"$tmpC10" = alloca %Location br label %code code: ; preds = %0 - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @curLoc(%Location* %loc, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1) - %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @curLoc(%Location* %loc, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1) + %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %3 = load i1, i1* %withEqual.addr - call void @parsePrefixExpr(%Node* %baseExpr, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, i1 %3) - call void @ctor.158(%String* %op) + %4 = call %Node @parsePrefixExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %2, i1 %3) + store %Node %4, %Node* %"$tmpForRef" + call void @ctor.545(%Node* %baseExpr, %Node* %"$tmpForRef") + call void @ctor.137(%String* %op) br label %while_block while_block: ; preds = %while_step, %code br i1 true, label %while_body, label %while_end while_body: ; preds = %while_block - %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %5 = load i1, i1* %withEqual.addr - call void @parseIdOrOperOpt(%String* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %4, i1 %5) - %6 = call %String* @"=.250"(%String* %op, %String* %"$tmpC") - call void @dtor.218(%String* %"$tmpC") + %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %6 = load i1, i1* %withEqual.addr + call void @parseIdOrOperOpt(%String* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %5, i1 %6) + %7 = call %String* @"=.290"(%String* %op, %String* %"$tmpC") + call void @dtor.261(%String* %"$tmpC") br label %if_block while_step: ; preds = %if_end3 br label %while_block while_end: ; preds = %if_else, %if_then, %while_block - %7 = load %Node*, %Node** %_result.addr - call void @ctor.428(%Node* %7, %Node* %baseExpr) - call void @dtor.218(%String* %op) - ret void + %8 = load %Node, %Node* %baseExpr + call void @dtor.261(%String* %op) + ret %Node %8 if_block: ; preds = %while_body - %8 = call i1 @isEmpty.370(%String* %op) - br i1 %8, label %if_then, label %if_end + %9 = call i1 @isEmpty.397(%String* %op) + br i1 %9, label %if_then, label %if_end if_then: ; preds = %if_block br label %while_end @@ -20640,54 +24283,58 @@ dumy_block: ; No predecessors! br label %if_end if_block1: ; preds = %if_end - %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %10 = load i1, i1* %withEqual.addr - %11 = call i1 @nextIsExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9, i1 %10) - br i1 %11, label %if_then2, label %if_else + %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %11 = load i1, i1* %withEqual.addr + %12 = call i1 @nextIsExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %10, i1 %11) + br i1 %12, label %if_then2, label %if_else if_then2: ; preds = %if_block1 - %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %13 = load i1, i1* %withEqual.addr - call void @parsePrefixExpr(%Node* %rhs, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %12, i1 %13) - %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @lastLoc(%Location* %"$tmpC5", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %14) - call void @span(%Location* %"$tmpC4", %Location* %loc, %Location* %"$tmpC5") - %15 = load %Node, %Node* %baseExpr - %16 = call %StringRef @asStringRef(%String* %op) - %17 = load %Node, %Node* %rhs - %18 = call %Node @comp_parser_mkInfixOp(%Location* %"$tmpC4", %Node %15, %StringRef %16, %Node %17) - store %Node %18, %Node* %"$tmpForRef" - call void @"=.430"(%Node* %baseExpr, %Node* %"$tmpForRef") + %13 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %14 = load i1, i1* %withEqual.addr + %15 = call %Node @parsePrefixExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %13, i1 %14) + store %Node %15, %Node* %"$tmpForRef4" + call void @ctor.545(%Node* %rhs, %Node* %"$tmpForRef4") + %16 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %17 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %16, i32 0, i32 3 + %18 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @lastLoc(%Location* %"$tmpC7", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %18) + call void @span(%Location* %"$tmpC6", %Location* %loc, %Location* %"$tmpC7") + %19 = load %Node, %Node* %baseExpr + %20 = call %StringRef @asStringRef(%String* %op) + %21 = load %Node, %Node* %rhs + %22 = call %Node @mkInfixOp(%AstBuilder* %17, %Location* %"$tmpC6", %Node %19, %StringRef %20, %Node %21) + store %Node %22, %Node* %"$tmpForRef5" + call void @"=.554"(%Node* %baseExpr, %Node* %"$tmpForRef5") br label %if_end3 if_else: ; preds = %if_block1 - %19 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @lastLoc(%Location* %"$tmpC8", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %19) - call void @span(%Location* %"$tmpC7", %Location* %loc, %Location* %"$tmpC8") - %20 = load %Node, %Node* %baseExpr - %21 = call %StringRef @asStringRef(%String* %op) - %22 = call %Node @comp_parser_mkPostfixOp(%Location* %"$tmpC7", %Node %20, %StringRef %21) - store %Node %22, %Node* %"$tmpForRef6" - call void @"=.430"(%Node* %baseExpr, %Node* %"$tmpForRef6") + %23 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %24 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %23, i32 0, i32 3 + %25 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @lastLoc(%Location* %"$tmpC10", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %25) + call void @span(%Location* %"$tmpC9", %Location* %loc, %Location* %"$tmpC10") + %26 = load %Node, %Node* %baseExpr + %27 = call %StringRef @asStringRef(%String* %op) + %28 = call %Node @mkPostfixOp(%AstBuilder* %24, %Location* %"$tmpC9", %Node %26, %StringRef %27) + store %Node %28, %Node* %"$tmpForRef8" + call void @"=.554"(%Node* %baseExpr, %Node* %"$tmpForRef8") br label %while_end -if_end3: ; preds = %dumy_block9, %if_then2 +if_end3: ; preds = %dumy_block11, %if_then2 br label %while_step -dumy_block9: ; No predecessors! +dumy_block11: ; No predecessors! br label %if_end3 -dumy_block10: ; No predecessors! - call void @dtor.218(%String* %op) - ret void +dumy_block12: ; No predecessors! + call void @dtor.261(%String* %op) + unreachable } ; Function Attrs: inlinehint nounwind -define internal void @parsePrefixExpr(%Node* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, i1 %withEqual) #4 { - %_result.addr = alloca %Node* - store %Node* %_result, %Node** %_result.addr - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal %Node @parsePrefixExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, i1 %withEqual) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %withEqual.addr = alloca i1 store i1 %withEqual, i1* %withEqual.addr %loc = alloca %Location @@ -20703,68 +24350,68 @@ define internal void @parsePrefixExpr(%Node* sret %_result, %"SparrowParser[Spar br label %code code: ; preds = %0 - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @curLoc(%Location* %loc, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1) - call void @ctor.158(%String* %op) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @curLoc(%Location* %loc, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1) + call void @ctor.137(%String* %op) br label %if_block if_block: ; preds = %code - %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 34) + %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 34) %3 = load %TokenType, %TokenType* %tmp.this - %4 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, %TokenType %3) + %4 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %2, %TokenType %3) br i1 %4, label %if_then, label %if_else if_then: ; preds = %if_block - %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseId(%String* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5) - %6 = call %String* @"=.250"(%String* %op, %String* %"$tmpC") - call void @dtor.218(%String* %"$tmpC") - %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this1, i32 34) + %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @parseId(%String* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %5) + %6 = call %String* @"=.290"(%String* %op, %String* %"$tmpC") + call void @dtor.261(%String* %"$tmpC") + %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this1, i32 34) %8 = load %TokenType, %TokenType* %tmp.this1 - %9 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %7, %TokenType %8) + %9 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %7, %TokenType %8) br label %if_end if_else: ; preds = %if_block - %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseOperOpt(%String* %"$tmpC2", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %10, i1 true) - %11 = call %String* @"=.250"(%String* %op, %String* %"$tmpC2") - call void @dtor.218(%String* %"$tmpC2") + %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @parseOperOpt(%String* %"$tmpC2", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %10, i1 true) + %11 = call %String* @"=.290"(%String* %op, %String* %"$tmpC2") + call void @dtor.261(%String* %"$tmpC2") br label %if_end if_end: ; preds = %if_else, %if_then br label %if_block3 if_block3: ; preds = %if_end - %12 = call i1 @isEmpty.370(%String* %op) + %12 = call i1 @isEmpty.397(%String* %op) br i1 %12, label %if_then4, label %if_else5 if_then4: ; preds = %if_block3 - %13 = load %Node*, %Node** %_result.addr - %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseSimpleExpr(%Node* %13, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %14, i1 true) - call void @dtor.218(%String* %op) - ret void + %13 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %14 = call %Node @parseSimpleExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %13, i1 true) + call void @dtor.261(%String* %op) + ret %Node %14 if_else5: ; preds = %if_block3 - %15 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parsePrefixExpr(%Node* %baseExpr, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %15, i1 true) - %16 = load %Node*, %Node** %_result.addr - %17 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @lastLoc(%Location* %"$tmpC8", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %17) + %15 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %16 = call %Node @parsePrefixExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %15, i1 true) + store %Node %16, %Node* %"$tmpForRef" + call void @ctor.545(%Node* %baseExpr, %Node* %"$tmpForRef") + %17 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %18 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %17, i32 0, i32 3 + %19 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @lastLoc(%Location* %"$tmpC8", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %19) call void @span(%Location* %"$tmpC7", %Location* %loc, %Location* %"$tmpC8") - %18 = call %StringRef @asStringRef(%String* %op) - %19 = load %Node, %Node* %baseExpr - %20 = call %Node @comp_parser_mkPrefixOp(%Location* %"$tmpC7", %StringRef %18, %Node %19) - store %Node %20, %Node* %"$tmpForRef" - call void @ctor.428(%Node* %16, %Node* %"$tmpForRef") - call void @dtor.218(%String* %op) - ret void + %20 = call %StringRef @asStringRef(%String* %op) + %21 = load %Node, %Node* %baseExpr + %22 = call %Node @mkPrefixOp(%AstBuilder* %18, %Location* %"$tmpC7", %StringRef %20, %Node %21) + call void @dtor.261(%String* %op) + ret %Node %22 if_end6: ; preds = %dumy_block9, %dumy_block - call void @dtor.218(%String* %op) - ret void + call void @dtor.261(%String* %op) + unreachable dumy_block: ; No predecessors! br label %if_end6 @@ -20774,33 +24421,33 @@ dumy_block9: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal void @parseId(%String* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this) #4 { +define internal void @parseId(%String* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this) #4 { %_result.addr = alloca %String* store %String* %_result, %String** %_result.addr - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %tmp.this = alloca %TokenType br label %code code: ; preds = %0 - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 36) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 36) %2 = load %TokenType, %TokenType* %tmp.this - %3 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %3 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, %TokenType %2) %4 = load %String*, %String** %_result.addr - %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 1 + %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %5, i32 0, i32 1 %7 = getelementptr inbounds %Token, %Token* %6, i32 0, i32 2 - call void @ctor.184(%String* %4, %String* %7) + call void @ctor.189(%String* %4, %String* %7) ret void } ; Function Attrs: inlinehint nounwind -define internal void @parseOperOpt(%String* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, i1 %withEqual) #4 { +define internal void @parseOperOpt(%String* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, i1 %withEqual) #4 { %_result.addr = alloca %String* store %String* %_result, %String** %_result.addr - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %withEqual.addr = alloca i1 store i1 %withEqual, i1* %withEqual.addr %tmp.this = alloca %TokenType @@ -20811,18 +24458,18 @@ code: ; preds = %0 br label %if_block if_block: ; preds = %code - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 37) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 37) %2 = load %TokenType, %TokenType* %tmp.this - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_else if_then: ; preds = %if_block %4 = load %String*, %String** %_result.addr - %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 1 + %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %5, i32 0, i32 1 %7 = getelementptr inbounds %Token, %Token* %6, i32 0, i32 2 - call void @ctor.184(%String* %4, %String* %7) + call void @ctor.189(%String* %4, %String* %7) ret void if_else: ; preds = %if_block @@ -20840,25 +24487,25 @@ if_block1: ; preds = %if_else if_then2: ; preds = %cond.end %9 = load %String*, %String** %_result.addr - %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %11 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %10, i32 0, i32 1 + %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %11 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %10, i32 0, i32 1 %12 = getelementptr inbounds %Token, %Token* %11, i32 0, i32 2 - call void @ctor.184(%String* %9, %String* %12) + call void @ctor.189(%String* %9, %String* %12) br i1 %8, label %cond_destruct_alt1, label %cond_destruct_alt2 if_else3: ; preds = %cond.end %13 = load %String*, %String** %_result.addr - call void @ctor.158(%String* %13) + call void @ctor.137(%String* %13) br i1 %8, label %cond_destruct_alt17, label %cond_destruct_alt28 if_end4: ; preds = %dumy_block10, %dumy_block6 br i1 %8, label %cond_destruct_alt111, label %cond_destruct_alt212 cond.true: ; preds = %if_block1 - %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this5, i32 35) + %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this5, i32 35) %15 = load %TokenType, %TokenType* %tmp.this5 - %16 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %14, %TokenType %15) + %16 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %14, %TokenType %15) br label %cond.end cond.false: ; preds = %if_block1 @@ -20903,21 +24550,18 @@ cond_destruct_end13: ; preds = %cond_destruct_alt21 } ; Function Attrs: noinline nounwind -define void @parseSimpleExpr(%Node* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, i1 %withEqual) #5 { - %_result.addr = alloca %Node* - store %Node* %_result, %Node** %_result.addr - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define %Node @parseSimpleExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, i1 %withEqual) #5 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %withEqual.addr = alloca i1 store i1 %withEqual, i1* %withEqual.addr %res = alloca %Node %loc = alloca %Location %tmp.this = alloca %TokenType %tmp.this1 = alloca %TokenType - %"$tmpC" = alloca %Node - %tmp.this6 = alloca %TokenType %"$tmpForRef" = alloca %Node - %"$tmpC7" = alloca %Node + %tmp.this6 = alloca %TokenType + %"$tmpForRef7" = alloca %Node %tmp.this8 = alloca %TokenType %tmp.this13 = alloca %TokenType %"$tmpForRef14" = alloca %Node @@ -20950,46 +24594,49 @@ define void @parseSimpleExpr(%Node* sret %_result, %"SparrowParser[SparrowLayout %tmp.this81 = alloca i64 %tmp.this85 = alloca %TokenType %"$tmpForRef86" = alloca %Node - %"$tmpC90" = alloca %String + %"$tmpC" = alloca %String %tmp.StringRef = alloca %StringRef - %"$tmpC91" = alloca %Token - %tmp.StringRef92 = alloca %StringRef + %"$tmpC90" = alloca %Token + %tmp.StringRef91 = alloca %StringRef + %tmp.this92 = alloca %Node %tmp.this97 = alloca %TokenType %args = alloca %Node - %tmp.this98 = alloca %TokenType - %"$tmpForRef99" = alloca %Node - %"$tmpC100" = alloca %Location + %"$tmpForRef98" = alloca %Node + %tmp.this99 = alloca %TokenType + %"$tmpForRef100" = alloca %Node %"$tmpC101" = alloca %Location - %tmp.this106 = alloca %TokenType - %tmp.this111 = alloca %TokenType + %"$tmpC102" = alloca %Location + %tmp.this107 = alloca %TokenType %tmp.this112 = alloca %TokenType - %"$tmpForRef113" = alloca %Node - %"$tmpC114" = alloca %Location + %tmp.this113 = alloca %TokenType + %"$tmpForRef114" = alloca %Node %"$tmpC115" = alloca %Location - %tmp.StringRef116 = alloca %StringRef + %"$tmpC116" = alloca %Location + %tmp.StringRef117 = alloca %StringRef %id = alloca %String - %"$tmpForRef117" = alloca %Node - %"$tmpC118" = alloca %Location + %"$tmpForRef118" = alloca %Node %"$tmpC119" = alloca %Location + %"$tmpC120" = alloca %Location br label %code code: ; preds = %0 - call void @ctor.432(%Node* %res) - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @curLoc(%Location* %loc, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1) + call void @ctor.556(%Node* %res) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @curLoc(%Location* %loc, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1) br label %if_block if_block: ; preds = %code - %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 28) + %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 28) %3 = load %TokenType, %TokenType* %tmp.this - %4 = call i1 @nextIs(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, %TokenType %3) + %4 = call i1 @nextIs(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %2, %TokenType %3) br i1 %4, label %cond.true, label %cond.false if_then: ; preds = %cond.end - %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseLambdaExpr(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5) - call void @"=.430"(%Node* %res, %Node* %"$tmpC") + %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %6 = call %Node @parseLambdaExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %5) + store %Node %6, %Node* %"$tmpForRef" + call void @"=.554"(%Node* %res, %Node* %"$tmpForRef") br label %if_end if_else: ; preds = %cond.end @@ -20999,37 +24646,38 @@ if_end: ; preds = %if_end5, %if_then br i1 %4, label %cond_destruct_alt1, label %cond_destruct_alt2 cond.true: ; preds = %if_block - %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this1, i32 6) - %7 = load %TokenType, %TokenType* %tmp.this1 - %8 = call i1 @next2Is(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %6, %TokenType %7) + %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this1, i32 6) + %8 = load %TokenType, %TokenType* %tmp.this1 + %9 = call i1 @next2Is(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %7, %TokenType %8) br label %cond.end cond.false: ; preds = %if_block br label %cond.end cond.end: ; preds = %cond.false, %cond.true - %cond.res = phi i1 [ %8, %cond.true ], [ false, %cond.false ] + %cond.res = phi i1 [ %9, %cond.true ], [ false, %cond.false ] br i1 %cond.res, label %if_then, label %if_else if_block2: ; preds = %if_else - %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this6, i32 28) - %10 = load %TokenType, %TokenType* %tmp.this6 - %11 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9, %TokenType %10) - br i1 %11, label %if_then3, label %if_else4 + %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this6, i32 28) + %11 = load %TokenType, %TokenType* %tmp.this6 + %12 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %10, %TokenType %11) + br i1 %12, label %if_then3, label %if_else4 if_then3: ; preds = %if_block2 - %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseExpr(%Node* %"$tmpC7", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %12, i1 true) - %13 = load %Node, %Node* %"$tmpC7" - %14 = call %Node @comp_parser_mkParenthesisExpr(%Node %13) - store %Node %14, %Node* %"$tmpForRef" - call void @"=.430"(%Node* %res, %Node* %"$tmpForRef") - %15 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this8, i32 29) - %16 = load %TokenType, %TokenType* %tmp.this8 - %17 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %15, %TokenType %16) + %13 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %14 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %13, i32 0, i32 3 + %15 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %16 = call %Node @parseExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %15, i1 true) + %17 = call %Node @mkParenthesisExpr(%AstBuilder* %14, %Node %16) + store %Node %17, %Node* %"$tmpForRef7" + call void @"=.554"(%Node* %res, %Node* %"$tmpForRef7") + %18 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this8, i32 29) + %19 = load %TokenType, %TokenType* %tmp.this8 + %20 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %18, %TokenType %19) br label %if_end5 if_else4: ; preds = %if_block2 @@ -21039,23 +24687,25 @@ if_end5: ; preds = %if_end12, %if_then3 br label %if_end if_block9: ; preds = %if_else4 - %18 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this13, i32 36) - %19 = load %TokenType, %TokenType* %tmp.this13 - %20 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %18, %TokenType %19) - br i1 %20, label %if_then10, label %if_else11 + %21 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this13, i32 36) + %22 = load %TokenType, %TokenType* %tmp.this13 + %23 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %21, %TokenType %22) + br i1 %23, label %if_then10, label %if_else11 if_then10: ; preds = %if_block9 - %21 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %22 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %21, i32 0, i32 1 - %23 = getelementptr inbounds %Token, %Token* %22, i32 0, i32 0 - %24 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %25 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %24, i32 0, i32 1 - %26 = getelementptr inbounds %Token, %Token* %25, i32 0, i32 2 - %27 = call %StringRef @asStringRef(%String* %26) - %28 = call %Node @comp_parser_mkIdentifier(%Location* %23, %StringRef %27) - store %Node %28, %Node* %"$tmpForRef14" - call void @"=.430"(%Node* %res, %Node* %"$tmpForRef14") + %24 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %25 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %24, i32 0, i32 3 + %26 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %27 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %26, i32 0, i32 1 + %28 = getelementptr inbounds %Token, %Token* %27, i32 0, i32 0 + %29 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %30 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %29, i32 0, i32 1 + %31 = getelementptr inbounds %Token, %Token* %30, i32 0, i32 2 + %32 = call %StringRef @asStringRef(%String* %31) + %33 = call %Node @mkIdentifier(%AstBuilder* %25, %Location* %28, %StringRef %32) + store %Node %33, %Node* %"$tmpForRef14" + call void @"=.554"(%Node* %res, %Node* %"$tmpForRef14") br label %if_end12 if_else11: ; preds = %if_block9 @@ -21065,19 +24715,21 @@ if_end12: ; preds = %if_end18, %if_then1 br label %if_end5 if_block15: ; preds = %if_else11 - %29 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this19, i32 21) - %30 = load %TokenType, %TokenType* %tmp.this19 - %31 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %29, %TokenType %30) - br i1 %31, label %if_then16, label %if_else17 + %34 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this19, i32 21) + %35 = load %TokenType, %TokenType* %tmp.this19 + %36 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %34, %TokenType %35) + br i1 %36, label %if_then16, label %if_else17 if_then16: ; preds = %if_block15 - %32 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %33 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %32, i32 0, i32 1 - %34 = getelementptr inbounds %Token, %Token* %33, i32 0, i32 0 - %35 = call %Node @comp_parser_mkNullLiteral(%Location* %34) - store %Node %35, %Node* %"$tmpForRef20" - call void @"=.430"(%Node* %res, %Node* %"$tmpForRef20") + %37 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %38 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %37, i32 0, i32 3 + %39 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %40 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %39, i32 0, i32 1 + %41 = getelementptr inbounds %Token, %Token* %40, i32 0, i32 0 + %42 = call %Node @mkNullLiteral(%AstBuilder* %38, %Location* %41) + store %Node %42, %Node* %"$tmpForRef20" + call void @"=.554"(%Node* %res, %Node* %"$tmpForRef20") br label %if_end18 if_else17: ; preds = %if_block15 @@ -21087,19 +24739,21 @@ if_end18: ; preds = %if_end24, %if_then1 br label %if_end12 if_block21: ; preds = %if_else17 - %36 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this25, i32 22) - %37 = load %TokenType, %TokenType* %tmp.this25 - %38 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %36, %TokenType %37) - br i1 %38, label %if_then22, label %if_else23 + %43 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this25, i32 22) + %44 = load %TokenType, %TokenType* %tmp.this25 + %45 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %43, %TokenType %44) + br i1 %45, label %if_then22, label %if_else23 if_then22: ; preds = %if_block21 - %39 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %40 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %39, i32 0, i32 1 - %41 = getelementptr inbounds %Token, %Token* %40, i32 0, i32 0 - %42 = call %Node @comp_parser_mkBoolLiteral(%Location* %41, i1 true) - store %Node %42, %Node* %"$tmpForRef26" - call void @"=.430"(%Node* %res, %Node* %"$tmpForRef26") + %46 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %47 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %46, i32 0, i32 3 + %48 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %49 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %48, i32 0, i32 1 + %50 = getelementptr inbounds %Token, %Token* %49, i32 0, i32 0 + %51 = call %Node @mkBoolLiteral(%AstBuilder* %47, %Location* %50, i1 true) + store %Node %51, %Node* %"$tmpForRef26" + call void @"=.554"(%Node* %res, %Node* %"$tmpForRef26") br label %if_end24 if_else23: ; preds = %if_block21 @@ -21109,19 +24763,21 @@ if_end24: ; preds = %if_end30, %if_then2 br label %if_end18 if_block27: ; preds = %if_else23 - %43 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this31, i32 20) - %44 = load %TokenType, %TokenType* %tmp.this31 - %45 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %43, %TokenType %44) - br i1 %45, label %if_then28, label %if_else29 + %52 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this31, i32 20) + %53 = load %TokenType, %TokenType* %tmp.this31 + %54 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %52, %TokenType %53) + br i1 %54, label %if_then28, label %if_else29 if_then28: ; preds = %if_block27 - %46 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %47 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %46, i32 0, i32 1 - %48 = getelementptr inbounds %Token, %Token* %47, i32 0, i32 0 - %49 = call %Node @comp_parser_mkBoolLiteral(%Location* %48, i1 false) - store %Node %49, %Node* %"$tmpForRef32" - call void @"=.430"(%Node* %res, %Node* %"$tmpForRef32") + %55 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %56 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %55, i32 0, i32 3 + %57 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %58 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %57, i32 0, i32 1 + %59 = getelementptr inbounds %Token, %Token* %58, i32 0, i32 0 + %60 = call %Node @mkBoolLiteral(%AstBuilder* %56, %Location* %59, i1 false) + store %Node %60, %Node* %"$tmpForRef32" + call void @"=.554"(%Node* %res, %Node* %"$tmpForRef32") br label %if_end30 if_else29: ; preds = %if_block27 @@ -21131,26 +24787,28 @@ if_end30: ; preds = %if_end36, %if_then2 br label %if_end24 if_block33: ; preds = %if_else29 - %50 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this37, i32 40) - %51 = load %TokenType, %TokenType* %tmp.this37 - %52 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %50, %TokenType %51) - br i1 %52, label %if_then34, label %if_else35 + %61 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this37, i32 40) + %62 = load %TokenType, %TokenType* %tmp.this37 + %63 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %61, %TokenType %62) + br i1 %63, label %if_then34, label %if_else35 if_then34: ; preds = %if_block33 - %53 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %54 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %53, i32 0, i32 1 - %55 = getelementptr inbounds %Token, %Token* %54, i32 0, i32 0 - %56 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %57 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %56, i32 0, i32 1 - %58 = getelementptr inbounds %Token, %Token* %57, i32 0, i32 3 - %59 = load i64, i64* %58 - %60 = trunc i64 %59 to i32 - store i32 %60, i32* %tmp.this39 - %61 = load i32, i32* %tmp.this39 - %62 = call %Node @comp_parser_mkIntLiteral(%Location* %55, i32 %61) - store %Node %62, %Node* %"$tmpForRef38" - call void @"=.430"(%Node* %res, %Node* %"$tmpForRef38") + %64 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %65 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %64, i32 0, i32 3 + %66 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %67 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %66, i32 0, i32 1 + %68 = getelementptr inbounds %Token, %Token* %67, i32 0, i32 0 + %69 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %70 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %69, i32 0, i32 1 + %71 = getelementptr inbounds %Token, %Token* %70, i32 0, i32 3 + %72 = load i64, i64* %71 + %73 = trunc i64 %72 to i32 + store i32 %73, i32* %tmp.this39 + %74 = load i32, i32* %tmp.this39 + %75 = call %Node @mkIntLiteral(%AstBuilder* %65, %Location* %68, i32 %74) + store %Node %75, %Node* %"$tmpForRef38" + call void @"=.554"(%Node* %res, %Node* %"$tmpForRef38") br label %if_end36 if_else35: ; preds = %if_block33 @@ -21160,26 +24818,28 @@ if_end36: ; preds = %if_end43, %if_then3 br label %if_end30 if_block40: ; preds = %if_else35 - %63 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this44, i32 42) - %64 = load %TokenType, %TokenType* %tmp.this44 - %65 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %63, %TokenType %64) - br i1 %65, label %if_then41, label %if_else42 + %76 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this44, i32 42) + %77 = load %TokenType, %TokenType* %tmp.this44 + %78 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %76, %TokenType %77) + br i1 %78, label %if_then41, label %if_else42 if_then41: ; preds = %if_block40 - %66 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %67 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %66, i32 0, i32 1 - %68 = getelementptr inbounds %Token, %Token* %67, i32 0, i32 0 - %69 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %70 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %69, i32 0, i32 1 - %71 = getelementptr inbounds %Token, %Token* %70, i32 0, i32 3 - %72 = load i64, i64* %71 - %73 = trunc i64 %72 to i32 - store i32 %73, i32* %tmp.this46 - %74 = load i32, i32* %tmp.this46 - %75 = call %Node @comp_parser_mkUIntLiteral(%Location* %68, i32 %74) - store %Node %75, %Node* %"$tmpForRef45" - call void @"=.430"(%Node* %res, %Node* %"$tmpForRef45") + %79 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %80 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %79, i32 0, i32 3 + %81 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %82 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %81, i32 0, i32 1 + %83 = getelementptr inbounds %Token, %Token* %82, i32 0, i32 0 + %84 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %85 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %84, i32 0, i32 1 + %86 = getelementptr inbounds %Token, %Token* %85, i32 0, i32 3 + %87 = load i64, i64* %86 + %88 = trunc i64 %87 to i32 + store i32 %88, i32* %tmp.this46 + %89 = load i32, i32* %tmp.this46 + %90 = call %Node @mkUIntLiteral(%AstBuilder* %80, %Location* %83, i32 %89) + store %Node %90, %Node* %"$tmpForRef45" + call void @"=.554"(%Node* %res, %Node* %"$tmpForRef45") br label %if_end43 if_else42: ; preds = %if_block40 @@ -21189,25 +24849,27 @@ if_end43: ; preds = %if_end50, %if_then4 br label %if_end36 if_block47: ; preds = %if_else42 - %76 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this51, i32 41) - %77 = load %TokenType, %TokenType* %tmp.this51 - %78 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %76, %TokenType %77) - br i1 %78, label %if_then48, label %if_else49 + %91 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this51, i32 41) + %92 = load %TokenType, %TokenType* %tmp.this51 + %93 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %91, %TokenType %92) + br i1 %93, label %if_then48, label %if_else49 if_then48: ; preds = %if_block47 - %79 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %80 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %79, i32 0, i32 1 - %81 = getelementptr inbounds %Token, %Token* %80, i32 0, i32 0 - %82 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %83 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %82, i32 0, i32 1 - %84 = getelementptr inbounds %Token, %Token* %83, i32 0, i32 3 - %85 = load i64, i64* %84 - store i64 %85, i64* %tmp.this53 - %86 = load i64, i64* %tmp.this53 - %87 = call %Node @comp_parser_mkLongLiteral(%Location* %81, i64 %86) - store %Node %87, %Node* %"$tmpForRef52" - call void @"=.430"(%Node* %res, %Node* %"$tmpForRef52") + %94 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %95 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %94, i32 0, i32 3 + %96 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %97 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %96, i32 0, i32 1 + %98 = getelementptr inbounds %Token, %Token* %97, i32 0, i32 0 + %99 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %100 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %99, i32 0, i32 1 + %101 = getelementptr inbounds %Token, %Token* %100, i32 0, i32 3 + %102 = load i64, i64* %101 + store i64 %102, i64* %tmp.this53 + %103 = load i64, i64* %tmp.this53 + %104 = call %Node @mkLongLiteral(%AstBuilder* %95, %Location* %98, i64 %103) + store %Node %104, %Node* %"$tmpForRef52" + call void @"=.554"(%Node* %res, %Node* %"$tmpForRef52") br label %if_end50 if_else49: ; preds = %if_block47 @@ -21217,25 +24879,27 @@ if_end50: ; preds = %if_end57, %if_then4 br label %if_end43 if_block54: ; preds = %if_else49 - %88 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this58, i32 43) - %89 = load %TokenType, %TokenType* %tmp.this58 - %90 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %88, %TokenType %89) - br i1 %90, label %if_then55, label %if_else56 + %105 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this58, i32 43) + %106 = load %TokenType, %TokenType* %tmp.this58 + %107 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %105, %TokenType %106) + br i1 %107, label %if_then55, label %if_else56 if_then55: ; preds = %if_block54 - %91 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %92 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %91, i32 0, i32 1 - %93 = getelementptr inbounds %Token, %Token* %92, i32 0, i32 0 - %94 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %95 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %94, i32 0, i32 1 - %96 = getelementptr inbounds %Token, %Token* %95, i32 0, i32 3 - %97 = load i64, i64* %96 - store i64 %97, i64* %tmp.this60 - %98 = load i64, i64* %tmp.this60 - %99 = call %Node @comp_parser_mkULongLiteral(%Location* %93, i64 %98) - store %Node %99, %Node* %"$tmpForRef59" - call void @"=.430"(%Node* %res, %Node* %"$tmpForRef59") + %108 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %109 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %108, i32 0, i32 3 + %110 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %111 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %110, i32 0, i32 1 + %112 = getelementptr inbounds %Token, %Token* %111, i32 0, i32 0 + %113 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %114 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %113, i32 0, i32 1 + %115 = getelementptr inbounds %Token, %Token* %114, i32 0, i32 3 + %116 = load i64, i64* %115 + store i64 %116, i64* %tmp.this60 + %117 = load i64, i64* %tmp.this60 + %118 = call %Node @mkULongLiteral(%AstBuilder* %109, %Location* %112, i64 %117) + store %Node %118, %Node* %"$tmpForRef59" + call void @"=.554"(%Node* %res, %Node* %"$tmpForRef59") br label %if_end57 if_else56: ; preds = %if_block54 @@ -21245,26 +24909,28 @@ if_end57: ; preds = %if_end64, %if_then5 br label %if_end50 if_block61: ; preds = %if_else56 - %100 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this65, i32 44) - %101 = load %TokenType, %TokenType* %tmp.this65 - %102 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %100, %TokenType %101) - br i1 %102, label %if_then62, label %if_else63 + %119 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this65, i32 44) + %120 = load %TokenType, %TokenType* %tmp.this65 + %121 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %119, %TokenType %120) + br i1 %121, label %if_then62, label %if_else63 if_then62: ; preds = %if_block61 - %103 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %104 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %103, i32 0, i32 1 - %105 = getelementptr inbounds %Token, %Token* %104, i32 0, i32 0 - %106 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %107 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %106, i32 0, i32 1 - %108 = getelementptr inbounds %Token, %Token* %107, i32 0, i32 4 - %109 = load double, double* %108 - %110 = fptrunc double %109 to float - store float %110, float* %tmp.this67 - %111 = load float, float* %tmp.this67 - %112 = call %Node @comp_parser_mkFloatLiteral(%Location* %105, float %111) - store %Node %112, %Node* %"$tmpForRef66" - call void @"=.430"(%Node* %res, %Node* %"$tmpForRef66") + %122 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %123 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %122, i32 0, i32 3 + %124 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %125 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %124, i32 0, i32 1 + %126 = getelementptr inbounds %Token, %Token* %125, i32 0, i32 0 + %127 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %128 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %127, i32 0, i32 1 + %129 = getelementptr inbounds %Token, %Token* %128, i32 0, i32 4 + %130 = load double, double* %129 + %131 = fptrunc double %130 to float + store float %131, float* %tmp.this67 + %132 = load float, float* %tmp.this67 + %133 = call %Node @mkFloatLiteral(%AstBuilder* %123, %Location* %126, float %132) + store %Node %133, %Node* %"$tmpForRef66" + call void @"=.554"(%Node* %res, %Node* %"$tmpForRef66") br label %if_end64 if_else63: ; preds = %if_block61 @@ -21274,25 +24940,27 @@ if_end64: ; preds = %if_end71, %if_then6 br label %if_end57 if_block68: ; preds = %if_else63 - %113 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this72, i32 45) - %114 = load %TokenType, %TokenType* %tmp.this72 - %115 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %113, %TokenType %114) - br i1 %115, label %if_then69, label %if_else70 + %134 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this72, i32 45) + %135 = load %TokenType, %TokenType* %tmp.this72 + %136 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %134, %TokenType %135) + br i1 %136, label %if_then69, label %if_else70 if_then69: ; preds = %if_block68 - %116 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %117 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %116, i32 0, i32 1 - %118 = getelementptr inbounds %Token, %Token* %117, i32 0, i32 0 - %119 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %120 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %119, i32 0, i32 1 - %121 = getelementptr inbounds %Token, %Token* %120, i32 0, i32 4 - %122 = load double, double* %121 - store double %122, double* %tmp.this74 - %123 = load double, double* %tmp.this74 - %124 = call %Node @comp_parser_mkDoubleLiteral(%Location* %118, double %123) - store %Node %124, %Node* %"$tmpForRef73" - call void @"=.430"(%Node* %res, %Node* %"$tmpForRef73") + %137 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %138 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %137, i32 0, i32 3 + %139 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %140 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %139, i32 0, i32 1 + %141 = getelementptr inbounds %Token, %Token* %140, i32 0, i32 0 + %142 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %143 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %142, i32 0, i32 1 + %144 = getelementptr inbounds %Token, %Token* %143, i32 0, i32 4 + %145 = load double, double* %144 + store double %145, double* %tmp.this74 + %146 = load double, double* %tmp.this74 + %147 = call %Node @mkDoubleLiteral(%AstBuilder* %138, %Location* %141, double %146) + store %Node %147, %Node* %"$tmpForRef73" + call void @"=.554"(%Node* %res, %Node* %"$tmpForRef73") br label %if_end71 if_else70: ; preds = %if_block68 @@ -21302,26 +24970,28 @@ if_end71: ; preds = %if_end78, %if_then6 br label %if_end64 if_block75: ; preds = %if_else70 - %125 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this79, i32 38) - %126 = load %TokenType, %TokenType* %tmp.this79 - %127 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %125, %TokenType %126) - br i1 %127, label %if_then76, label %if_else77 + %148 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this79, i32 38) + %149 = load %TokenType, %TokenType* %tmp.this79 + %150 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %148, %TokenType %149) + br i1 %150, label %if_then76, label %if_else77 if_then76: ; preds = %if_block75 - %128 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %129 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %128, i32 0, i32 1 - %130 = getelementptr inbounds %Token, %Token* %129, i32 0, i32 0 - %131 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %132 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %131, i32 0, i32 1 - %133 = getelementptr inbounds %Token, %Token* %132, i32 0, i32 2 + %151 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %152 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %151, i32 0, i32 3 + %153 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %154 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %153, i32 0, i32 1 + %155 = getelementptr inbounds %Token, %Token* %154, i32 0, i32 0 + %156 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %157 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %156, i32 0, i32 1 + %158 = getelementptr inbounds %Token, %Token* %157, i32 0, i32 2 store i64 0, i64* %tmp.this81 - %134 = load i64, i64* %tmp.this81 - %135 = call i8* @"().275"(%String* %133, i64 %134) - %136 = load i8, i8* %135 - %137 = call %Node @comp_parser_mkCharLiteral(%Location* %130, i8 %136) - store %Node %137, %Node* %"$tmpForRef80" - call void @"=.430"(%Node* %res, %Node* %"$tmpForRef80") + %159 = load i64, i64* %tmp.this81 + %160 = call i8* @"().344"(%String* %158, i64 %159) + %161 = load i8, i8* %160 + %162 = call %Node @mkCharLiteral(%AstBuilder* %152, %Location* %155, i8 %161) + store %Node %162, %Node* %"$tmpForRef80" + call void @"=.554"(%Node* %res, %Node* %"$tmpForRef80") br label %if_end78 if_else77: ; preds = %if_block75 @@ -21331,23 +25001,25 @@ if_end78: ; preds = %if_end84, %if_then7 br label %if_end71 if_block82: ; preds = %if_else77 - %138 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this85, i32 39) - %139 = load %TokenType, %TokenType* %tmp.this85 - %140 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %138, %TokenType %139) - br i1 %140, label %if_then83, label %if_end84 + %163 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this85, i32 39) + %164 = load %TokenType, %TokenType* %tmp.this85 + %165 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %163, %TokenType %164) + br i1 %165, label %if_then83, label %if_end84 if_then83: ; preds = %if_block82 - %141 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %142 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %141, i32 0, i32 1 - %143 = getelementptr inbounds %Token, %Token* %142, i32 0, i32 0 - %144 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %145 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %144, i32 0, i32 1 - %146 = getelementptr inbounds %Token, %Token* %145, i32 0, i32 2 - %147 = call %StringRef @asStringRef(%String* %146) - %148 = call %Node @comp_parser_mkStringLiteral(%Location* %143, %StringRef %147) - store %Node %148, %Node* %"$tmpForRef86" - call void @"=.430"(%Node* %res, %Node* %"$tmpForRef86") + %166 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %167 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %166, i32 0, i32 3 + %168 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %169 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %168, i32 0, i32 1 + %170 = getelementptr inbounds %Token, %Token* %169, i32 0, i32 0 + %171 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %172 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %171, i32 0, i32 1 + %173 = getelementptr inbounds %Token, %Token* %172, i32 0, i32 2 + %174 = call %StringRef @asStringRef(%String* %173) + %175 = call %Node @mkStringLiteral(%AstBuilder* %167, %Location* %170, %StringRef %174) + store %Node %175, %Node* %"$tmpForRef86" + call void @"=.554"(%Node* %res, %Node* %"$tmpForRef86") br label %if_end84 if_end84: ; preds = %if_then83, %if_block82 @@ -21363,34 +25035,34 @@ cond_destruct_end: ; preds = %cond_destruct_alt2, br label %if_block87 if_block87: ; preds = %cond_destruct_end - %149 = load %Node, %Node* %res - %150 = call i1 @isNull(%Node %149) - br i1 %150, label %if_then88, label %if_end89 + %176 = load %Node, %Node* %res + %177 = call i1 @isNull(%Node %176) + br i1 %177, label %if_then88, label %if_end89 if_then88: ; preds = %if_block87 - %151 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %152 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 0 - %153 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 1 - store i8* getelementptr inbounds ([26 x i8], [26 x i8]* @str.95, i32 0, i32 0), i8** %152 - store i8* getelementptr inbounds ([26 x i8], [26 x i8]* @str.95, i32 0, i32 25), i8** %153 - %154 = load %StringRef, %StringRef* %tmp.StringRef - %155 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %156 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %155, i32 0, i32 0 - call void @"pre_*.419"(%Token* %"$tmpC91", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %156) - %157 = getelementptr inbounds %Token, %Token* %"$tmpC91", i32 0, i32 1 - %158 = load %TokenType, %TokenType* %157 - %159 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef92, i32 0, i32 0 - %160 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef92, i32 0, i32 1 - store i8* getelementptr inbounds ([23 x i8], [23 x i8]* @str.96, i32 0, i32 0), i8** %159 - store i8* getelementptr inbounds ([23 x i8], [23 x i8]* @str.96, i32 0, i32 22), i8** %160 - %161 = load %StringRef, %StringRef* %tmp.StringRef92 - call void @toString.471(%String* %"$tmpC90", %StringRef %154, %TokenType %158, %StringRef %161) - call void @reportError.423(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %151, %String* %"$tmpC90") - call void @dtor.218(%String* %"$tmpC90") - call void @dtor.217(%Token* %"$tmpC91") - %162 = load %Node*, %Node** %_result.addr - call void @ctor.432(%Node* %162) - ret void + %178 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %179 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 0 + %180 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 1 + store i8* getelementptr inbounds ([26 x i8], [26 x i8]* @str.96, i32 0, i32 0), i8** %179 + store i8* getelementptr inbounds ([26 x i8], [26 x i8]* @str.96, i32 0, i32 25), i8** %180 + %181 = load %StringRef, %StringRef* %tmp.StringRef + %182 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %183 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %182, i32 0, i32 0 + call void @"pre_*.543"(%Token* %"$tmpC90", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %183) + %184 = getelementptr inbounds %Token, %Token* %"$tmpC90", i32 0, i32 1 + %185 = load %TokenType, %TokenType* %184 + %186 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef91, i32 0, i32 0 + %187 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef91, i32 0, i32 1 + store i8* getelementptr inbounds ([23 x i8], [23 x i8]* @str.97, i32 0, i32 0), i8** %186 + store i8* getelementptr inbounds ([23 x i8], [23 x i8]* @str.97, i32 0, i32 22), i8** %187 + %188 = load %StringRef, %StringRef* %tmp.StringRef91 + call void @toString.597(%String* %"$tmpC", %StringRef %181, %TokenType %185, %StringRef %188) + call void @reportError.548(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %178, %String* %"$tmpC") + call void @dtor.261(%String* %"$tmpC") + call void @dtor.260(%Token* %"$tmpC90") + call void @ctor.556(%Node* %tmp.this92) + %189 = load %Node, %Node* %tmp.this92 + ret %Node %189 if_end89: ; preds = %dumy_block, %if_block87 br label %while_block @@ -21407,132 +25079,139 @@ while_body: ; preds = %while_block while_step: ; preds = %if_end96 br label %while_block -while_end: ; preds = %if_else104, %while_block - %163 = load %Node*, %Node** %_result.addr - call void @ctor.428(%Node* %163, %Node* %res) - ret void +while_end: ; preds = %if_else105, %while_block + %190 = load %Node, %Node* %res + ret %Node %190 if_block93: ; preds = %while_body - %164 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this97, i32 28) - %165 = load %TokenType, %TokenType* %tmp.this97 - %166 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %164, %TokenType %165) - br i1 %166, label %if_then94, label %if_else95 + %191 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this97, i32 28) + %192 = load %TokenType, %TokenType* %tmp.this97 + %193 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %191, %TokenType %192) + br i1 %193, label %if_then94, label %if_else95 if_then94: ; preds = %if_block93 - %167 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseExprListOpt(%Node* %args, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %167) - %168 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this98, i32 29) - %169 = load %TokenType, %TokenType* %tmp.this98 - %170 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %168, %TokenType %169) - %171 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @lastLoc(%Location* %"$tmpC101", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %171) - call void @span(%Location* %"$tmpC100", %Location* %loc, %Location* %"$tmpC101") - %172 = load %Node, %Node* %res - %173 = load %Node, %Node* %args - %174 = call %Node @comp_parser_mkFunAppExpr(%Location* %"$tmpC100", %Node %172, %Node %173) - store %Node %174, %Node* %"$tmpForRef99" - call void @"=.430"(%Node* %res, %Node* %"$tmpForRef99") + %194 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %195 = call %Node @parseExprListOpt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %194) + store %Node %195, %Node* %"$tmpForRef98" + call void @ctor.545(%Node* %args, %Node* %"$tmpForRef98") + %196 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this99, i32 29) + %197 = load %TokenType, %TokenType* %tmp.this99 + %198 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %196, %TokenType %197) + %199 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %200 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %199, i32 0, i32 3 + %201 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @lastLoc(%Location* %"$tmpC102", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %201) + call void @span(%Location* %"$tmpC101", %Location* %loc, %Location* %"$tmpC102") + %202 = load %Node, %Node* %res + %203 = load %Node, %Node* %args + %204 = call %Node @mkFunAppExpr(%AstBuilder* %200, %Location* %"$tmpC101", %Node %202, %Node %203) + store %Node %204, %Node* %"$tmpForRef100" + call void @"=.554"(%Node* %res, %Node* %"$tmpForRef100") br label %if_end96 if_else95: ; preds = %if_block93 - br label %if_block102 + br label %if_block103 -if_end96: ; preds = %if_end105, %if_then94 +if_end96: ; preds = %if_end106, %if_then94 br label %while_step -if_block102: ; preds = %if_else95 - %175 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this106, i32 33) - %176 = load %TokenType, %TokenType* %tmp.this106 - %177 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %175, %TokenType %176) - br i1 %177, label %if_then103, label %if_else104 +if_block103: ; preds = %if_else95 + %205 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this107, i32 33) + %206 = load %TokenType, %TokenType* %tmp.this107 + %207 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %205, %TokenType %206) + br i1 %207, label %if_then104, label %if_else105 -if_then103: ; preds = %if_block102 - br label %if_block107 +if_then104: ; preds = %if_block103 + br label %if_block108 -if_else104: ; preds = %if_block102 +if_else105: ; preds = %if_block103 br label %while_end -if_end105: ; preds = %dumy_block120, %if_end110 +if_end106: ; preds = %dumy_block121, %if_end111 br label %if_end96 -if_block107: ; preds = %if_then103 - %178 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this111, i32 28) - %179 = load %TokenType, %TokenType* %tmp.this111 - %180 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %178, %TokenType %179) - br i1 %180, label %if_then108, label %if_else109 - -if_then108: ; preds = %if_block107 - %181 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this112, i32 29) - %182 = load %TokenType, %TokenType* %tmp.this112 - %183 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %181, %TokenType %182) - %184 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @lastLoc(%Location* %"$tmpC115", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %184) - call void @span(%Location* %"$tmpC114", %Location* %loc, %Location* %"$tmpC115") - %185 = load %Node, %Node* %res - %186 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef116, i32 0, i32 0 - %187 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef116, i32 0, i32 1 - store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @str.97, i32 0, i32 0), i8** %186 - store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @str.97, i32 0, i32 2), i8** %187 - %188 = load %StringRef, %StringRef* %tmp.StringRef116 - %189 = call %Node @comp_parser_mkDotExpr(%Location* %"$tmpC114", %Node %185, %StringRef %188) - store %Node %189, %Node* %"$tmpForRef113" - call void @"=.430"(%Node* %res, %Node* %"$tmpForRef113") - br label %if_end110 - -if_else109: ; preds = %if_block107 - %190 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %191 = load i1, i1* %withEqual.addr - call void @parseIdOrOper(%String* %id, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %190, i1 %191) - %192 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @lastLoc(%Location* %"$tmpC119", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %192) - call void @span(%Location* %"$tmpC118", %Location* %loc, %Location* %"$tmpC119") - %193 = load %Node, %Node* %res - %194 = call %StringRef @asStringRef(%String* %id) - %195 = call %Node @comp_parser_mkDotExpr(%Location* %"$tmpC118", %Node %193, %StringRef %194) - store %Node %195, %Node* %"$tmpForRef117" - call void @"=.430"(%Node* %res, %Node* %"$tmpForRef117") - call void @dtor.218(%String* %id) - br label %if_end110 - -if_end110: ; preds = %if_else109, %if_then108 - br label %if_end105 +if_block108: ; preds = %if_then104 + %208 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this112, i32 28) + %209 = load %TokenType, %TokenType* %tmp.this112 + %210 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %208, %TokenType %209) + br i1 %210, label %if_then109, label %if_else110 + +if_then109: ; preds = %if_block108 + %211 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this113, i32 29) + %212 = load %TokenType, %TokenType* %tmp.this113 + %213 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %211, %TokenType %212) + %214 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %215 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %214, i32 0, i32 3 + %216 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @lastLoc(%Location* %"$tmpC116", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %216) + call void @span(%Location* %"$tmpC115", %Location* %loc, %Location* %"$tmpC116") + %217 = load %Node, %Node* %res + %218 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef117, i32 0, i32 0 + %219 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef117, i32 0, i32 1 + store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @str.98, i32 0, i32 0), i8** %218 + store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @str.98, i32 0, i32 2), i8** %219 + %220 = load %StringRef, %StringRef* %tmp.StringRef117 + %221 = call %Node @mkDotExpr(%AstBuilder* %215, %Location* %"$tmpC115", %Node %217, %StringRef %220) + store %Node %221, %Node* %"$tmpForRef114" + call void @"=.554"(%Node* %res, %Node* %"$tmpForRef114") + br label %if_end111 + +if_else110: ; preds = %if_block108 + %222 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %223 = load i1, i1* %withEqual.addr + call void @parseIdOrOper(%String* %id, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %222, i1 %223) + %224 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %225 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %224, i32 0, i32 3 + %226 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @lastLoc(%Location* %"$tmpC120", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %226) + call void @span(%Location* %"$tmpC119", %Location* %loc, %Location* %"$tmpC120") + %227 = load %Node, %Node* %res + %228 = call %StringRef @asStringRef(%String* %id) + %229 = call %Node @mkDotExpr(%AstBuilder* %225, %Location* %"$tmpC119", %Node %227, %StringRef %228) + store %Node %229, %Node* %"$tmpForRef118" + call void @"=.554"(%Node* %res, %Node* %"$tmpForRef118") + call void @dtor.261(%String* %id) + br label %if_end111 + +if_end111: ; preds = %if_else110, %if_then109 + br label %if_end106 -dumy_block120: ; No predecessors! - br label %if_end105 +dumy_block121: ; No predecessors! + br label %if_end106 } ; Function Attrs: inlinehint nounwind -define internal i1 @nextIs(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %TokenType %t) #4 { - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal i1 @nextIs(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %TokenType %t) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %t.addr = alloca %TokenType store %TokenType %t, %TokenType* %t.addr %"$tmpC" = alloca %Token br label %code code: ; preds = %0 - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 0 - call void @"pre_*.419"(%Token* %"$tmpC", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %2) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, i32 0, i32 0 + call void @"pre_*.543"(%Token* %"$tmpC", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %2) %3 = getelementptr inbounds %Token, %Token* %"$tmpC", i32 0, i32 1 - %4 = call i1 @"==.273"(%TokenType* %3, %TokenType* %t.addr) - call void @dtor.217(%Token* %"$tmpC") + %4 = call i1 @"==.352"(%TokenType* %3, %TokenType* %t.addr) + call void @dtor.260(%Token* %"$tmpC") ret i1 %4 dumy_block: ; No predecessors! - call void @dtor.217(%Token* %"$tmpC") + call void @dtor.260(%Token* %"$tmpC") unreachable } ; Function Attrs: inlinehint nounwind -define internal i1 @next2Is(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %TokenType %t) #4 { - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal i1 @next2Is(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %TokenType %t) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %t.addr = alloca %TokenType store %TokenType %t, %TokenType* %t.addr %"$tmpC" = alloca %Token @@ -21540,27 +25219,27 @@ define internal i1 @next2Is(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[ br label %code code: ; preds = %0 - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 0 + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, i32 0, i32 0 store i32 1, i32* %tmp.this %3 = load i32, i32* %tmp.this - call void @peek.434(%Token* %"$tmpC", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %2, i32 %3) + call void @peek.557(%Token* %"$tmpC", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %2, i32 %3) %4 = getelementptr inbounds %Token, %Token* %"$tmpC", i32 0, i32 1 - %5 = call i1 @"==.273"(%TokenType* %4, %TokenType* %t.addr) - call void @dtor.217(%Token* %"$tmpC") + %5 = call i1 @"==.352"(%TokenType* %4, %TokenType* %t.addr) + call void @dtor.260(%Token* %"$tmpC") ret i1 %5 dumy_block: ; No predecessors! - call void @dtor.217(%Token* %"$tmpC") + call void @dtor.260(%Token* %"$tmpC") unreachable } ; Function Attrs: inlinehint nounwind -define internal void @peek.434(%Token* sret %_result, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this, i32 %n) #4 { +define internal void @peek.557(%Token* sret %_result, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %this, i32 %n) #4 { %_result.addr = alloca %Token* store %Token* %_result, %Token** %_result.addr - %this.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* - store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr + %this.addr = alloca %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* + store %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %n.addr = alloca i32 store i32 %n, i32* %n.addr %tmp.this = alloca i64 @@ -21577,20 +25256,20 @@ while_block: ; preds = %while_step, %code %2 = zext i32 %1 to i64 store i64 %2, i64* %tmp.this %3 = load i64, i64* %tmp.this - %4 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %5 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %4, i32 0, i32 1 - %6 = call i64 @size.191(%"Vector[Token]"* %5) + %4 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %5 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %4, i32 0, i32 1 + %6 = call i64 @size.209(%"Vector[Token]"* %5) %7 = icmp sge i64 %3, %6 br i1 %7, label %cond.true, label %cond.false while_body: ; preds = %cond.end - %8 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %9 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %8, i32 0, i32 1 - %10 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %11 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %10, i32 0, i32 0 - call void @"post_++.417"(%Token* %"$tmpC", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %11) - call void @"+=.305"(%"Vector[Token]"* %9, %Token* %"$tmpC") - call void @dtor.217(%Token* %"$tmpC") + %8 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %9 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %8, i32 0, i32 1 + %10 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %11 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %10, i32 0, i32 0 + call void @"post_++.523"(%Token* %"$tmpC", %"SparrowLayoutDecoder[SparrowScanner]"* %11) + call void @"+=.409"(%"Vector[Token]"* %9, %Token* %"$tmpC") + call void @dtor.260(%Token* %"$tmpC") br label %while_step while_step: ; preds = %while_body @@ -21600,9 +25279,9 @@ while_end: ; preds = %cond.end br label %if_block cond.true: ; preds = %while_block - %12 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %13 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %12, i32 0, i32 0 - %14 = call i1 @"pre_!!.415"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %13) + %12 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %13 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %12, i32 0, i32 0 + %14 = call i1 @"pre_!!.521"(%"SparrowLayoutDecoder[SparrowScanner]"* %13) br label %cond.end cond.false: ; preds = %while_block @@ -21617,27 +25296,27 @@ if_block: ; preds = %while_end %16 = zext i32 %15 to i64 store i64 %16, i64* %tmp.this1 %17 = load i64, i64* %tmp.this1 - %18 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %19 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %18, i32 0, i32 1 - %20 = call i64 @size.191(%"Vector[Token]"* %19) + %18 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %19 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %18, i32 0, i32 1 + %20 = call i64 @size.209(%"Vector[Token]"* %19) %21 = icmp slt i64 %17, %20 br i1 %21, label %if_then, label %if_else if_then: ; preds = %if_block %22 = load %Token*, %Token** %_result.addr - %23 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"** %this.addr - %24 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %23, i32 0, i32 1 + %23 = load %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"*, %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %24 = getelementptr inbounds %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %23, i32 0, i32 1 %25 = load i32, i32* %n.addr %26 = zext i32 %25 to i64 store i64 %26, i64* %tmp.this2 %27 = load i64, i64* %tmp.this2 - %28 = call %Token* @"().435"(%"Vector[Token]"* %24, i64 %27) - call void @ctor.182(%Token* %22, %Token* %28) + %28 = call %Token* @"().558"(%"Vector[Token]"* %24, i64 %27) + call void @ctor.202(%Token* %22, %Token* %28) ret void if_else: ; preds = %if_block %29 = load %Token*, %Token** %_result.addr - call void @ctor.156(%Token* %29) + call void @ctor.143(%Token* %29) ret void if_end: ; preds = %dumy_block3, %dumy_block @@ -21651,7 +25330,7 @@ dumy_block3: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal %Token* @"().435"(%"Vector[Token]"* %this, i64 %index) #4 { +define internal %Token* @"().558"(%"Vector[Token]"* %this, i64 %index) #4 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr %index.addr = alloca i64 @@ -21664,159 +25343,162 @@ code: ; preds = %0 %2 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %1, i32 0, i32 0 %3 = load %"RawPtr[Token]", %"RawPtr[Token]"* %2 %4 = load i64, i64* %index.addr - call void @advance.197(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %3, i64 %4) + call void @advance.215(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %3, i64 %4) %5 = load %"RawPtr[Token]", %"RawPtr[Token]"* %"$tmpC" - %6 = call %Token* @value.201(%"RawPtr[Token]" %5) + %6 = call %Token* @value.219(%"RawPtr[Token]" %5) ret %Token* %6 } ; Function Attrs: inlinehint nounwind -define internal void @parseLambdaExpr(%Node* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this) #4 { - %_result.addr = alloca %Node* - store %Node* %_result, %Node** %_result.addr - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal %Node @parseLambdaExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %loc = alloca %Location %tmp.this = alloca %TokenType %tmp.this1 = alloca %TokenType %closureParams = alloca %Node + %"$tmpForRef" = alloca %Node %formals = alloca %Node + %"$tmpForRef2" = alloca %Node %retType = alloca %Node + %"$tmpForRef3" = alloca %Node %body = alloca %Node %bodyExp = alloca %Node - %tmp.this2 = alloca %TokenType - %"$tmpC" = alloca %Node - %"$tmpC3" = alloca %Node %tmp.this4 = alloca %TokenType - %"$tmpForRef" = alloca %Node - %"$tmpC5" = alloca %Location - %"$tmpC6" = alloca %Location + %"$tmpForRef5" = alloca %Node + %"$tmpForRef6" = alloca %Node + %tmp.this7 = alloca %TokenType + %"$tmpC" = alloca %Location + %"$tmpC8" = alloca %Location br label %code code: ; preds = %0 - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @curLoc(%Location* %loc, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1) - %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 28) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @curLoc(%Location* %loc, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1) + %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 28) %3 = load %TokenType, %TokenType* %tmp.this - %4 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, %TokenType %3) - %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this1, i32 6) + %4 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %2, %TokenType %3) + %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this1, i32 6) %6 = load %TokenType, %TokenType* %tmp.this1 - %7 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, %TokenType %6) - %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseClosureParams(%Node* %closureParams, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8) - %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseFormalsOpt(%Node* %formals, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9, i1 false) - %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseTypeNode(%Node* %retType, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %10) - call void @ctor.432(%Node* %body) - call void @ctor.432(%Node* %bodyExp) + %7 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %5, %TokenType %6) + %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %9 = call %Node @parseClosureParams(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %8) + store %Node %9, %Node* %"$tmpForRef" + call void @ctor.545(%Node* %closureParams, %Node* %"$tmpForRef") + %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %11 = call %Node @parseFormalsOpt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %10, i1 false) + store %Node %11, %Node* %"$tmpForRef2" + call void @ctor.545(%Node* %formals, %Node* %"$tmpForRef2") + %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %13 = call %Node @parseTypeNode(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %12) + store %Node %13, %Node* %"$tmpForRef3" + call void @ctor.545(%Node* %retType, %Node* %"$tmpForRef3") + call void @ctor.556(%Node* %body) + call void @ctor.556(%Node* %bodyExp) br label %if_block if_block: ; preds = %code - %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this2, i32 35) - %12 = load %TokenType, %TokenType* %tmp.this2 - %13 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11, %TokenType %12) - br i1 %13, label %if_then, label %if_else + %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this4, i32 35) + %15 = load %TokenType, %TokenType* %tmp.this4 + %16 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %14, %TokenType %15) + br i1 %16, label %if_then, label %if_else if_then: ; preds = %if_block - %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseExpr(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %14, i1 true) - call void @"=.430"(%Node* %bodyExp, %Node* %"$tmpC") + %17 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %18 = call %Node @parseExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %17, i1 true) + store %Node %18, %Node* %"$tmpForRef5" + call void @"=.554"(%Node* %bodyExp, %Node* %"$tmpForRef5") br label %if_end if_else: ; preds = %if_block - %15 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseFunBody(%Node* %"$tmpC3", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %15) - call void @"=.430"(%Node* %body, %Node* %"$tmpC3") + %19 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %20 = call %Node @parseFunBody(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %19) + store %Node %20, %Node* %"$tmpForRef6" + call void @"=.554"(%Node* %body, %Node* %"$tmpForRef6") br label %if_end if_end: ; preds = %if_else, %if_then - %16 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this4, i32 29) - %17 = load %TokenType, %TokenType* %tmp.this4 - %18 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %16, %TokenType %17) - %19 = load %Node*, %Node** %_result.addr - %20 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @lastLoc(%Location* %"$tmpC6", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %20) - call void @span(%Location* %"$tmpC5", %Location* %loc, %Location* %"$tmpC6") - %21 = load %Node, %Node* %closureParams - %22 = load %Node, %Node* %formals - %23 = load %Node, %Node* %retType - %24 = load %Node, %Node* %body - %25 = load %Node, %Node* %bodyExp - %26 = call %Node @comp_parser_mkLambdaExpr(%Location* %"$tmpC5", %Node %21, %Node %22, %Node %23, %Node %24, %Node %25) - store %Node %26, %Node* %"$tmpForRef" - call void @ctor.428(%Node* %19, %Node* %"$tmpForRef") - ret void -} - -; Function Attrs: inlinehint nounwind -define internal void @parseClosureParams(%Node* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this) #4 { - %_result.addr = alloca %Node* - store %Node* %_result, %Node** %_result.addr - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr + %21 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this7, i32 29) + %22 = load %TokenType, %TokenType* %tmp.this7 + %23 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %21, %TokenType %22) + %24 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %25 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %24, i32 0, i32 3 + %26 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @lastLoc(%Location* %"$tmpC8", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %26) + call void @span(%Location* %"$tmpC", %Location* %loc, %Location* %"$tmpC8") + %27 = load %Node, %Node* %closureParams + %28 = load %Node, %Node* %formals + %29 = load %Node, %Node* %retType + %30 = load %Node, %Node* %body + %31 = load %Node, %Node* %bodyExp + %32 = call %Node @mkLambdaExpr(%AstBuilder* %25, %Location* %"$tmpC", %Node %27, %Node %28, %Node %29, %Node %30, %Node %31) + ret %Node %32 +} + +; Function Attrs: inlinehint nounwind +define internal %Node @parseClosureParams(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %res = alloca %Node %tmp.this = alloca %TokenType %tmp.this1 = alloca %TokenType %tmp.this5 = alloca %TokenType - %"$tmpC" = alloca %Node + %"$tmpForRef" = alloca %Node %tmp.this6 = alloca %TokenType br label %code code: ; preds = %0 - call void @ctor.432(%Node* %res) + call void @ctor.556(%Node* %res) br label %if_block if_block: ; preds = %code - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 33) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 33) %2 = load %TokenType, %TokenType* %tmp.this - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_end if_then: ; preds = %if_block - %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this1, i32 24) + %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this1, i32 24) %5 = load %TokenType, %TokenType* %tmp.this1 - %6 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %4, %TokenType %5) + %6 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %4, %TokenType %5) br label %if_block2 if_end: ; preds = %if_end4, %if_block - %7 = load %Node*, %Node** %_result.addr - call void @ctor.428(%Node* %7, %Node* %res) - ret void + %7 = load %Node, %Node* %res + ret %Node %7 if_block2: ; preds = %if_then - %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this5, i32 36) + %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this5, i32 36) %9 = load %TokenType, %TokenType* %tmp.this5 - %10 = call i1 @nextIs(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8, %TokenType %9) + %10 = call i1 @nextIs(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %8, %TokenType %9) br i1 %10, label %if_then3, label %if_end4 if_then3: ; preds = %if_block2 - %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseIdListNode(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11) - call void @"=.430"(%Node* %res, %Node* %"$tmpC") + %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %12 = call %Node @parseIdListNode(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %11) + store %Node %12, %Node* %"$tmpForRef" + call void @"=.554"(%Node* %res, %Node* %"$tmpForRef") br label %if_end4 if_end4: ; preds = %if_then3, %if_block2 - %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this6, i32 25) - %13 = load %TokenType, %TokenType* %tmp.this6 - %14 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %12, %TokenType %13) + %13 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this6, i32 25) + %14 = load %TokenType, %TokenType* %tmp.this6 + %15 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %13, %TokenType %14) br label %if_end } ; Function Attrs: inlinehint nounwind -define internal void @parseIdListNode(%Node* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this) #4 { - %_result.addr = alloca %Node* - store %Node* %_result, %Node** %_result.addr - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal %Node @parseIdListNode(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %res = alloca %Node %id = alloca %String %"$tmpForRef" = alloca %Node @@ -21826,65 +25508,113 @@ define internal void @parseIdListNode(%Node* sret %_result, %"SparrowParser[Spar br label %code code: ; preds = %0 - call void @ctor.432(%Node* %res) - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseId(%String* %id, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1) - %2 = load %Node, %Node* %res - %3 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %4 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %3, i32 0, i32 1 - %5 = getelementptr inbounds %Token, %Token* %4, i32 0, i32 0 - %6 = call %StringRef @asStringRef(%String* %id) - %7 = call %Node @comp_parser_mkIdentifier(%Location* %5, %StringRef %6) - %8 = call %Node @comp_parser_addToNodeList(%Node %2, %Node %7) - store %Node %8, %Node* %"$tmpForRef" - call void @"=.430"(%Node* %res, %Node* %"$tmpForRef") + call void @ctor.556(%Node* %res) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @parseId(%String* %id, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1) + %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %3 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %2, i32 0, i32 3 + %4 = load %Node, %Node* %res + %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %5, i32 0, i32 3 + %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %8 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %7, i32 0, i32 1 + %9 = getelementptr inbounds %Token, %Token* %8, i32 0, i32 0 + %10 = call %StringRef @asStringRef(%String* %id) + %11 = call %Node @mkIdentifier(%AstBuilder* %6, %Location* %9, %StringRef %10) + %12 = call %Node @addToNodeList(%AstBuilder* %3, %Node %4, %Node %11) + store %Node %12, %Node* %"$tmpForRef" + call void @"=.554"(%Node* %res, %Node* %"$tmpForRef") br label %while_block while_block: ; preds = %while_step, %code - %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 32) - %10 = load %TokenType, %TokenType* %tmp.this - %11 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9, %TokenType %10) - br i1 %11, label %while_body, label %while_end + %13 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 32) + %14 = load %TokenType, %TokenType* %tmp.this + %15 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %13, %TokenType %14) + br i1 %15, label %while_body, label %while_end while_body: ; preds = %while_block - %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseId(%String* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %12) - %13 = call %String* @"=.250"(%String* %id, %String* %"$tmpC") - call void @dtor.218(%String* %"$tmpC") - %14 = load %Node, %Node* %res - %15 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %16 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %15, i32 0, i32 1 - %17 = getelementptr inbounds %Token, %Token* %16, i32 0, i32 0 - %18 = call %StringRef @asStringRef(%String* %id) - %19 = call %Node @comp_parser_mkIdentifier(%Location* %17, %StringRef %18) - %20 = call %Node @comp_parser_addToNodeList(%Node %14, %Node %19) - store %Node %20, %Node* %"$tmpForRef1" - call void @"=.430"(%Node* %res, %Node* %"$tmpForRef1") + %16 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @parseId(%String* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %16) + %17 = call %String* @"=.290"(%String* %id, %String* %"$tmpC") + call void @dtor.261(%String* %"$tmpC") + %18 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %19 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %18, i32 0, i32 3 + %20 = load %Node, %Node* %res + %21 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %22 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %21, i32 0, i32 3 + %23 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %24 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %23, i32 0, i32 1 + %25 = getelementptr inbounds %Token, %Token* %24, i32 0, i32 0 + %26 = call %StringRef @asStringRef(%String* %id) + %27 = call %Node @mkIdentifier(%AstBuilder* %22, %Location* %25, %StringRef %26) + %28 = call %Node @addToNodeList(%AstBuilder* %19, %Node %20, %Node %27) + store %Node %28, %Node* %"$tmpForRef1" + call void @"=.554"(%Node* %res, %Node* %"$tmpForRef1") br label %while_step while_step: ; preds = %while_body br label %while_block while_end: ; preds = %while_block - %21 = load %Node*, %Node** %_result.addr - call void @ctor.428(%Node* %21, %Node* %res) - call void @dtor.218(%String* %id) - ret void + %29 = load %Node, %Node* %res + call void @dtor.261(%String* %id) + ret %Node %29 dumy_block: ; No predecessors! - call void @dtor.218(%String* %id) - ret void + call void @dtor.261(%String* %id) + unreachable +} + +; Function Attrs: inlinehint nounwind +define internal %Node @addToNodeList(%AstBuilder* %obj, %Node %nl, %Node %newNode) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %nl.addr = alloca %Node + store %Node %nl, %Node* %nl.addr + %newNode.addr = alloca %Node + store %Node %newNode, %Node* %newNode.addr + br label %code + +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 1 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Node, %Node* %nl.addr + %7 = load %Node, %Node* %newNode.addr + %8 = call %Node @"().559"(%"FunctionPtr3[Node, UntypedPtr, Node, Node]"* %2, %UntypedPtr %5, %Node %6, %Node %7) + ret %Node %8 } -declare %Node @comp_parser_addToNodeList(%Node, %Node) +; Function Attrs: inlinehint nounwind +define internal %Node @"().559"(%"FunctionPtr3[Node, UntypedPtr, Node, Node]"* %this, %UntypedPtr %p1, %Node %p2, %Node %p3) #4 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, Node, Node]"* + store %"FunctionPtr3[Node, UntypedPtr, Node, Node]"* %this, %"FunctionPtr3[Node, UntypedPtr, Node, Node]"** %this.addr + %p1.addr = alloca %UntypedPtr + store %UntypedPtr %p1, %UntypedPtr* %p1.addr + %p2.addr = alloca %Node + store %Node %p2, %Node* %p2.addr + %p3.addr = alloca %Node + store %Node %p3, %Node* %p3.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, Node, Node]"*, %"FunctionPtr3[Node, UntypedPtr, Node, Node]"** %this.addr + %2 = load %UntypedPtr, %UntypedPtr* %p1.addr + %3 = load %Node, %Node* %p2.addr + %4 = load %Node, %Node* %p3.addr + %5 = bitcast %"FunctionPtr3[Node, UntypedPtr, Node, Node]"* %1 to %Node (%UntypedPtr, %Node, %Node)** + %6 = load %Node (%UntypedPtr, %Node, %Node)*, %Node (%UntypedPtr, %Node, %Node)** %5 + %7 = call %Node %6(%UntypedPtr %2, %Node %3, %Node %4) + ret %Node %7 +} ; Function Attrs: inlinehint nounwind -define internal void @parseFormalsOpt(%Node* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, i1 %varFormals) #4 { - %_result.addr = alloca %Node* - store %Node* %_result, %Node** %_result.addr - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal %Node @parseFormalsOpt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, i1 %varFormals) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %varFormals.addr = alloca i1 store i1 %varFormals, i1* %varFormals.addr %res = alloca %Node @@ -21902,14 +25632,14 @@ define internal void @parseFormalsOpt(%Node* sret %_result, %"SparrowParser[Spar br label %code code: ; preds = %0 - call void @ctor.432(%Node* %res) + call void @ctor.556(%Node* %res) br label %if_block if_block: ; preds = %code - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 28) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 28) %2 = load %TokenType, %TokenType* %tmp.this - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_else if_then: ; preds = %if_block @@ -21919,80 +25649,82 @@ if_else: ; preds = %if_block br label %if_block7 if_end: ; preds = %if_end9, %while_end - %4 = load %Node*, %Node** %_result.addr - call void @ctor.428(%Node* %4, %Node* %res) - ret void + %4 = load %Node, %Node* %res + ret %Node %4 if_block1: ; preds = %if_then - %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this4, i32 29) + %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this4, i32 29) %6 = load %TokenType, %TokenType* %tmp.this4 - %7 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, %TokenType %6) + %7 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %5, %TokenType %6) br i1 %7, label %if_then2, label %if_end3 if_then2: ; preds = %if_block1 - %8 = load %Node*, %Node** %_result.addr - call void @ctor.428(%Node* %8, %Node* %res) - ret void + %8 = load %Node, %Node* %res + ret %Node %8 if_end3: ; preds = %dumy_block, %if_block1 - %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr + %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %10 = load i1, i1* %varFormals.addr - call void @parseFormal(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9, i1 %10, %Node* %res) + call void @parseFormal(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %9, i1 %10, %Node* %res) br label %while_block dumy_block: ; No predecessors! br label %if_end3 while_block: ; preds = %while_step, %if_end3 - %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this5, i32 32) + %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this5, i32 32) %12 = load %TokenType, %TokenType* %tmp.this5 - %13 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11, %TokenType %12) + %13 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %11, %TokenType %12) br i1 %13, label %while_body, label %while_end while_body: ; preds = %while_block - %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr + %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %15 = load i1, i1* %varFormals.addr - call void @parseFormal(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %14, i1 %15, %Node* %res) + call void @parseFormal(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %14, i1 %15, %Node* %res) br label %while_step while_step: ; preds = %while_body br label %while_block while_end: ; preds = %while_block - %16 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this6, i32 29) + %16 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this6, i32 29) %17 = load %TokenType, %TokenType* %tmp.this6 - %18 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %16, %TokenType %17) + %18 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %16, %TokenType %17) br label %if_end if_block7: ; preds = %if_else - %19 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this10, i32 36) + %19 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this10, i32 36) %20 = load %TokenType, %TokenType* %tmp.this10 - %21 = call i1 @nextIs(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %19, %TokenType %20) + %21 = call i1 @nextIs(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %19, %TokenType %20) br i1 %21, label %if_then8, label %if_end9 if_then8: ; preds = %if_block7 - %22 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @curLoc(%Location* %loc, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %22) - %23 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseIdList(%"Vector[LocString]"* %ids, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %23) - %24 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @lastLoc(%Location* %"$tmpC11", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %24) + %22 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @curLoc(%Location* %loc, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %22) + %23 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @parseIdList(%"Vector[LocString]"* %ids, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %23) + %24 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %25 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %24, i32 0, i32 3 + %26 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %27 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %26, i32 0, i32 3 + %28 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @lastLoc(%Location* %"$tmpC11", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %28) call void @span(%Location* %"$tmpC", %Location* %loc, %Location* %"$tmpC11") - %25 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 0 - %26 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 1 - store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.92, i32 0, i32 0), i8** %25 - store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.92, i32 0, i32 7), i8** %26 - %27 = load %StringRef, %StringRef* %tmp.StringRef - %28 = call %Node @comp_parser_mkIdentifier(%Location* %"$tmpC", %StringRef %27) - call void @ctor.432(%Node* %tmp.this12) - %29 = load %Node, %Node* %tmp.this12 - %30 = load i1, i1* %varFormals.addr - call void @createFormals(%"Vector[LocString]"* %ids, %Node %28, %Node %29, i1 %30, %Node* %res) - call void @dtor.462(%"Vector[LocString]"* %ids) + %29 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 0 + %30 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 1 + store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.93, i32 0, i32 0), i8** %29 + store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str.93, i32 0, i32 7), i8** %30 + %31 = load %StringRef, %StringRef* %tmp.StringRef + %32 = call %Node @mkIdentifier(%AstBuilder* %27, %Location* %"$tmpC", %StringRef %31) + call void @ctor.556(%Node* %tmp.this12) + %33 = load %Node, %Node* %tmp.this12 + %34 = load i1, i1* %varFormals.addr + call void @createFormals(%AstBuilder* %25, %"Vector[LocString]"* %ids, %Node %32, %Node %33, i1 %34, %Node* %res) + call void @dtor.586(%"Vector[LocString]"* %ids) br label %if_end9 if_end9: ; preds = %if_then8, %if_block7 @@ -22000,9 +25732,9 @@ if_end9: ; preds = %if_then8, %if_block } ; Function Attrs: inlinehint nounwind -define internal void @parseFormal(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, i1 %varFormals, %Node* %res) #4 { - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal void @parseFormal(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, i1 %varFormals, %Node* %res) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %varFormals.addr = alloca i1 store i1 %varFormals, i1* %varFormals.addr %res.addr = alloca %Node* @@ -22010,52 +25742,58 @@ define internal void @parseFormal(%"SparrowParser[SparrowLayoutDecoder[SparrowSc %ids = alloca %"Vector[LocString]" %tmp.this = alloca %TokenType %typeNode = alloca %Node + %"$tmpForRef" = alloca %Node %init = alloca %Node %tmp.this1 = alloca %TokenType - %"$tmpC" = alloca %Node + %"$tmpForRef2" = alloca %Node br label %code code: ; preds = %0 - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseIdList(%"Vector[LocString]"* %ids, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1) - %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 30) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @parseIdList(%"Vector[LocString]"* %ids, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1) + %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 30) %3 = load %TokenType, %TokenType* %tmp.this - %4 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, %TokenType %3) - %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseExpr(%Node* %typeNode, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i1 false) - call void @ctor.432(%Node* %init) + %4 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %2, %TokenType %3) + %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %6 = call %Node @parseExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %5, i1 false) + store %Node %6, %Node* %"$tmpForRef" + call void @ctor.545(%Node* %typeNode, %Node* %"$tmpForRef") + call void @ctor.556(%Node* %init) br label %if_block if_block: ; preds = %code - %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this1, i32 35) - %7 = load %TokenType, %TokenType* %tmp.this1 - %8 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %6, %TokenType %7) - br i1 %8, label %if_then, label %if_end + %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this1, i32 35) + %8 = load %TokenType, %TokenType* %tmp.this1 + %9 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %7, %TokenType %8) + br i1 %9, label %if_then, label %if_end if_then: ; preds = %if_block - %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseExpr(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9, i1 true) - call void @"=.430"(%Node* %init, %Node* %"$tmpC") + %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %11 = call %Node @parseExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %10, i1 true) + store %Node %11, %Node* %"$tmpForRef2" + call void @"=.554"(%Node* %init, %Node* %"$tmpForRef2") br label %if_end if_end: ; preds = %if_then, %if_block - %10 = load %Node, %Node* %typeNode - %11 = load %Node, %Node* %init - %12 = load i1, i1* %varFormals.addr - %13 = load %Node*, %Node** %res.addr - call void @createFormals(%"Vector[LocString]"* %ids, %Node %10, %Node %11, i1 %12, %Node* %13) - call void @dtor.462(%"Vector[LocString]"* %ids) + %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %13 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %12, i32 0, i32 3 + %14 = load %Node, %Node* %typeNode + %15 = load %Node, %Node* %init + %16 = load i1, i1* %varFormals.addr + %17 = load %Node*, %Node** %res.addr + call void @createFormals(%AstBuilder* %13, %"Vector[LocString]"* %ids, %Node %14, %Node %15, i1 %16, %Node* %17) + call void @dtor.586(%"Vector[LocString]"* %ids) ret void } ; Function Attrs: inlinehint nounwind -define internal void @parseIdList(%"Vector[LocString]"* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this) #4 { +define internal void @parseIdList(%"Vector[LocString]"* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this) #4 { %_result.addr = alloca %"Vector[LocString]"* store %"Vector[LocString]"* %_result, %"Vector[LocString]"** %_result.addr - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %res = alloca %"Vector[LocString]" %id = alloca %String %tmp.this = alloca %LocString @@ -22067,45 +25805,45 @@ define internal void @parseIdList(%"Vector[LocString]"* sret %_result, %"Sparrow br label %code code: ; preds = %0 - call void @ctor.436(%"Vector[LocString]"* %res) - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseId(%String* %id, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1) - %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %3 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, i32 0, i32 1 + call void @ctor.560(%"Vector[LocString]"* %res) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @parseId(%String* %id, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1) + %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %3 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %2, i32 0, i32 1 %4 = getelementptr inbounds %Token, %Token* %3, i32 0, i32 0 %5 = load %Location, %Location* %4 %6 = load %String, %String* %id call void @"~"(%"Tuple[Location, String]"* %"$tmpC", %Location %5, %String %6) %7 = load %"Tuple[Location, String]", %"Tuple[Location, String]"* %"$tmpC" - call void @ctor.454(%LocString* %tmp.this, %"Tuple[Location, String]" %7) - call void @"+=.438"(%"Vector[LocString]"* %res, %LocString* %tmp.this) - call void @dtor.456(%LocString* %tmp.this) - call void @dtor.457(%"Tuple[Location, String]"* %"$tmpC") + call void @ctor.578(%LocString* %tmp.this, %"Tuple[Location, String]" %7) + call void @"+=.562"(%"Vector[LocString]"* %res, %LocString* %tmp.this) + call void @dtor.580(%LocString* %tmp.this) + call void @dtor.581(%"Tuple[Location, String]"* %"$tmpC") br label %while_block while_block: ; preds = %while_step, %code - %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this1, i32 32) + %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this1, i32 32) %9 = load %TokenType, %TokenType* %tmp.this1 - %10 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8, %TokenType %9) + %10 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %8, %TokenType %9) br i1 %10, label %while_body, label %while_end while_body: ; preds = %while_block - %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseId(%String* %"$tmpC2", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11) - %12 = call %String* @"=.250"(%String* %id, %String* %"$tmpC2") - call void @dtor.218(%String* %"$tmpC2") - %13 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %14 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %13, i32 0, i32 1 + %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @parseId(%String* %"$tmpC2", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %11) + %12 = call %String* @"=.290"(%String* %id, %String* %"$tmpC2") + call void @dtor.261(%String* %"$tmpC2") + %13 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %14 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %13, i32 0, i32 1 %15 = getelementptr inbounds %Token, %Token* %14, i32 0, i32 0 %16 = load %Location, %Location* %15 %17 = load %String, %String* %id call void @"~"(%"Tuple[Location, String]"* %"$tmpC4", %Location %16, %String %17) %18 = load %"Tuple[Location, String]", %"Tuple[Location, String]"* %"$tmpC4" - call void @ctor.454(%LocString* %tmp.this3, %"Tuple[Location, String]" %18) - call void @"+=.438"(%"Vector[LocString]"* %res, %LocString* %tmp.this3) - call void @dtor.456(%LocString* %tmp.this3) - call void @dtor.457(%"Tuple[Location, String]"* %"$tmpC4") + call void @ctor.578(%LocString* %tmp.this3, %"Tuple[Location, String]" %18) + call void @"+=.562"(%"Vector[LocString]"* %res, %LocString* %tmp.this3) + call void @dtor.580(%LocString* %tmp.this3) + call void @dtor.581(%"Tuple[Location, String]"* %"$tmpC4") br label %while_step while_step: ; preds = %while_body @@ -22113,19 +25851,19 @@ while_step: ; preds = %while_body while_end: ; preds = %while_block %19 = load %"Vector[LocString]"*, %"Vector[LocString]"** %_result.addr - call void @ctor.458(%"Vector[LocString]"* %19, %"Vector[LocString]"* %res) - call void @dtor.218(%String* %id) - call void @dtor.462(%"Vector[LocString]"* %res) + call void @ctor.582(%"Vector[LocString]"* %19, %"Vector[LocString]"* %res) + call void @dtor.261(%String* %id) + call void @dtor.586(%"Vector[LocString]"* %res) ret void dumy_block: ; No predecessors! - call void @dtor.218(%String* %id) - call void @dtor.462(%"Vector[LocString]"* %res) + call void @dtor.261(%String* %id) + call void @dtor.586(%"Vector[LocString]"* %res) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.436(%"Vector[LocString]"* %this) #3 { +define internal void @ctor.560(%"Vector[LocString]"* %this) #3 { %this.addr = alloca %"Vector[LocString]"* store %"Vector[LocString]"* %this, %"Vector[LocString]"** %this.addr br label %code @@ -22133,18 +25871,18 @@ define internal void @ctor.436(%"Vector[LocString]"* %this) #3 { code: ; preds = %0 %1 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %2 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %1, i32 0, i32 0 - call void @ctor.437(%"RawPtr[LocString]"* %2) + call void @ctor.561(%"RawPtr[LocString]"* %2) %3 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %4 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %3, i32 0, i32 1 - call void @ctor.437(%"RawPtr[LocString]"* %4) + call void @ctor.561(%"RawPtr[LocString]"* %4) %5 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %6 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %5, i32 0, i32 2 - call void @ctor.437(%"RawPtr[LocString]"* %6) + call void @ctor.561(%"RawPtr[LocString]"* %6) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.437(%"RawPtr[LocString]"* %this) #3 { +define internal void @ctor.561(%"RawPtr[LocString]"* %this) #3 { %this.addr = alloca %"RawPtr[LocString]"* store %"RawPtr[LocString]"* %this, %"RawPtr[LocString]"** %this.addr br label %code @@ -22157,7 +25895,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @"+=.438"(%"Vector[LocString]"* %this, %LocString* %value) #4 { +define internal void @"+=.562"(%"Vector[LocString]"* %this, %LocString* %value) #4 { %this.addr = alloca %"Vector[LocString]"* store %"Vector[LocString]"* %this, %"Vector[LocString]"** %this.addr %value.addr = alloca %LocString* @@ -22167,12 +25905,12 @@ define internal void @"+=.438"(%"Vector[LocString]"* %this, %LocString* %value) code: ; preds = %0 %1 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %2 = load %LocString*, %LocString** %value.addr - call void @pushBack.439(%"Vector[LocString]"* %1, %LocString* %2) + call void @pushBack.563(%"Vector[LocString]"* %1, %LocString* %2) ret void } ; Function Attrs: inlinehint nounwind -define internal void @pushBack.439(%"Vector[LocString]"* %this, %LocString* %value) #4 { +define internal void @pushBack.563(%"Vector[LocString]"* %this, %LocString* %value) #4 { %this.addr = alloca %"Vector[LocString]"* store %"Vector[LocString]"* %this, %"Vector[LocString]"** %this.addr %value.addr = alloca %LocString* @@ -22192,14 +25930,14 @@ if_block: ; preds = %code %2 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %1, i32 0, i32 1 %3 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %4 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %3, i32 0, i32 2 - %5 = call i1 @"==.440"(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %4) + %5 = call i1 @"==.564"(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %4) br i1 %5, label %if_then, label %if_end if_then: ; preds = %if_block store i64 2, i64* %tmp.this %6 = load i64, i64* %tmp.this %7 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr - %8 = call i64 @capacity.441(%"Vector[LocString]"* %7) + %8 = call i64 @capacity.565(%"Vector[LocString]"* %7) %9 = mul i64 %6, %8 store i64 %9, i64* %t br label %if_block1 @@ -22208,16 +25946,16 @@ if_end: ; preds = %if_end3, %if_block %10 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %11 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %10, i32 0, i32 1 %12 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %11 - %13 = call %LocString* @value.452(%"RawPtr[LocString]" %12) + %13 = call %LocString* @value.576(%"RawPtr[LocString]" %12) %14 = load %LocString*, %LocString** %value.addr - call void @ctor.450(%LocString* %13, %LocString* %14) + call void @ctor.574(%LocString* %13, %LocString* %14) %15 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %16 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %15, i32 0, i32 1 %17 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %18 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %17, i32 0, i32 1 %19 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %18 - call void @advance.453(%"RawPtr[LocString]"* %"$tmpC", %"RawPtr[LocString]" %19) - call void @"=.447"(%"RawPtr[LocString]"* %16, %"RawPtr[LocString]"* %"$tmpC") + call void @advance.577(%"RawPtr[LocString]"* %"$tmpC", %"RawPtr[LocString]" %19) + call void @"=.571"(%"RawPtr[LocString]"* %16, %"RawPtr[LocString]"* %"$tmpC") ret void if_block1: ; preds = %if_then @@ -22236,12 +25974,12 @@ if_then2: ; preds = %if_block1 if_end3: ; preds = %if_then2, %if_block1 %24 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %25 = load i64, i64* %t - call void @reserve.444(%"Vector[LocString]"* %24, i64 %25) + call void @reserve.568(%"Vector[LocString]"* %24, i64 %25) br label %if_end } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.440"(%"RawPtr[LocString]"* %this, %"RawPtr[LocString]"* %other) #3 { +define internal i1 @"==.564"(%"RawPtr[LocString]"* %this, %"RawPtr[LocString]"* %other) #3 { %this.addr = alloca %"RawPtr[LocString]"* store %"RawPtr[LocString]"* %this, %"RawPtr[LocString]"** %this.addr %other.addr = alloca %"RawPtr[LocString]"* @@ -22262,7 +26000,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i64 @capacity.441(%"Vector[LocString]"* %this) #4 { +define internal i64 @capacity.565(%"Vector[LocString]"* %this) #4 { %this.addr = alloca %"Vector[LocString]"* store %"Vector[LocString]"* %this, %"Vector[LocString]"** %this.addr %tmp.this = alloca i64 @@ -22275,14 +26013,14 @@ code: ; preds = %0 %4 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %5 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %4, i32 0, i32 0 %6 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %5 - %7 = call i64 @diff.442(%"RawPtr[LocString]" %3, %"RawPtr[LocString]" %6) + %7 = call i64 @diff.566(%"RawPtr[LocString]" %3, %"RawPtr[LocString]" %6) store i64 %7, i64* %tmp.this %8 = load i64, i64* %tmp.this ret i64 %8 } ; Function Attrs: inlinehint nounwind -define internal i64 @diff.442(%"RawPtr[LocString]" %this, %"RawPtr[LocString]" %other) #4 { +define internal i64 @diff.566(%"RawPtr[LocString]" %this, %"RawPtr[LocString]" %other) #4 { %this.addr = alloca %"RawPtr[LocString]" store %"RawPtr[LocString]" %this, %"RawPtr[LocString]"* %this.addr %other.addr = alloca %"RawPtr[LocString]" @@ -22293,9 +26031,9 @@ define internal i64 @diff.442(%"RawPtr[LocString]" %this, %"RawPtr[LocString]" % code: ; preds = %0 %1 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %this.addr - %2 = call i8* @bytePtr.443(%"RawPtr[LocString]" %1) + %2 = call i8* @bytePtr.567(%"RawPtr[LocString]" %1) %3 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %other.addr - %4 = call i8* @bytePtr.443(%"RawPtr[LocString]" %3) + %4 = call i8* @bytePtr.567(%"RawPtr[LocString]" %3) %5 = call i64 @ptrDiff(i8* %2, i8* %4) store i64 48, i64* %tmp.this1 %6 = load i64, i64* %tmp.this1 @@ -22306,7 +26044,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i8* @bytePtr.443(%"RawPtr[LocString]" %this) #4 { +define internal i8* @bytePtr.567(%"RawPtr[LocString]" %this) #4 { %this.addr = alloca %"RawPtr[LocString]" store %"RawPtr[LocString]" %this, %"RawPtr[LocString]"* %this.addr br label %code @@ -22319,7 +26057,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @reserve.444(%"Vector[LocString]"* %this, i64 %n) #4 { +define internal void @reserve.568(%"Vector[LocString]"* %this, i64 %n) #4 { %this.addr = alloca %"Vector[LocString]"* store %"Vector[LocString]"* %this, %"Vector[LocString]"** %this.addr %n.addr = alloca i64 @@ -22338,7 +26076,7 @@ define internal void @reserve.444(%"Vector[LocString]"* %this, i64 %n) #4 { code: ; preds = %0 %1 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr - %2 = call i64 @capacity.441(%"Vector[LocString]"* %1) + %2 = call i64 @capacity.565(%"Vector[LocString]"* %1) store i64 %2, i64* %curCapacity br label %if_block @@ -22400,33 +26138,33 @@ if_then6: ; preds = %if_block5 if_end7: ; preds = %if_then6, %if_block5 %24 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr - %25 = call i64 @size.445(%"Vector[LocString]"* %24) + %25 = call i64 @size.569(%"Vector[LocString]"* %24) store i64 %25, i64* %curSize %26 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %27 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %26, i32 0, i32 0 %28 = load i64, i64* %n.addr - call void @reallocPtr.446(%"RawPtr[LocString]"* %27, i64 %28) + call void @reallocPtr.570(%"RawPtr[LocString]"* %27, i64 %28) %29 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %30 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %29, i32 0, i32 1 %31 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %32 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %31, i32 0, i32 0 %33 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %32 %34 = load i64, i64* %curSize - call void @advance.448(%"RawPtr[LocString]"* %"$tmpC", %"RawPtr[LocString]" %33, i64 %34) - call void @"=.447"(%"RawPtr[LocString]"* %30, %"RawPtr[LocString]"* %"$tmpC") + call void @advance.572(%"RawPtr[LocString]"* %"$tmpC", %"RawPtr[LocString]" %33, i64 %34) + call void @"=.571"(%"RawPtr[LocString]"* %30, %"RawPtr[LocString]"* %"$tmpC") %35 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %36 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %35, i32 0, i32 2 %37 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %38 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %37, i32 0, i32 0 %39 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %38 %40 = load i64, i64* %n.addr - call void @advance.448(%"RawPtr[LocString]"* %"$tmpC12", %"RawPtr[LocString]" %39, i64 %40) - call void @"=.447"(%"RawPtr[LocString]"* %36, %"RawPtr[LocString]"* %"$tmpC12") + call void @advance.572(%"RawPtr[LocString]"* %"$tmpC12", %"RawPtr[LocString]" %39, i64 %40) + call void @"=.571"(%"RawPtr[LocString]"* %36, %"RawPtr[LocString]"* %"$tmpC12") ret void } ; Function Attrs: inlinehint nounwind -define internal i64 @size.445(%"Vector[LocString]"* %this) #4 { +define internal i64 @size.569(%"Vector[LocString]"* %this) #4 { %this.addr = alloca %"Vector[LocString]"* store %"Vector[LocString]"* %this, %"Vector[LocString]"** %this.addr %tmp.this = alloca i64 @@ -22439,14 +26177,14 @@ code: ; preds = %0 %4 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %5 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %4, i32 0, i32 0 %6 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %5 - %7 = call i64 @diff.442(%"RawPtr[LocString]" %3, %"RawPtr[LocString]" %6) + %7 = call i64 @diff.566(%"RawPtr[LocString]" %3, %"RawPtr[LocString]" %6) store i64 %7, i64* %tmp.this %8 = load i64, i64* %tmp.this ret i64 %8 } ; Function Attrs: inlinehint nounwind -define internal void @reallocPtr.446(%"RawPtr[LocString]"* %this, i64 %n) #4 { +define internal void @reallocPtr.570(%"RawPtr[LocString]"* %this, i64 %n) #4 { %this.addr = alloca %"RawPtr[LocString]"* store %"RawPtr[LocString]"* %this, %"RawPtr[LocString]"** %this.addr %n.addr = alloca i64 @@ -22456,7 +26194,7 @@ define internal void @reallocPtr.446(%"RawPtr[LocString]"* %this, i64 %n) #4 { code: ; preds = %0 %1 = load %"RawPtr[LocString]"*, %"RawPtr[LocString]"** %this.addr %2 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %1 - %3 = call i8* @bytePtr.443(%"RawPtr[LocString]" %2) + %3 = call i8* @bytePtr.567(%"RawPtr[LocString]" %2) %4 = load i64, i64* %n.addr %5 = mul i64 %4, 48 %6 = call i8* @realloc(i8* %3, i64 %5) @@ -22468,7 +26206,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.447"(%"RawPtr[LocString]"* %this, %"RawPtr[LocString]"* %other) #3 { +define internal void @"=.571"(%"RawPtr[LocString]"* %this, %"RawPtr[LocString]"* %other) #3 { %this.addr = alloca %"RawPtr[LocString]"* store %"RawPtr[LocString]"* %this, %"RawPtr[LocString]"** %this.addr %other.addr = alloca %"RawPtr[LocString]"* @@ -22486,7 +26224,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @advance.448(%"RawPtr[LocString]"* sret %_result, %"RawPtr[LocString]" %this, i64 %n) #4 { +define internal void @advance.572(%"RawPtr[LocString]"* sret %_result, %"RawPtr[LocString]" %this, i64 %n) #4 { %_result.addr = alloca %"RawPtr[LocString]"* store %"RawPtr[LocString]"* %_result, %"RawPtr[LocString]"** %_result.addr %this.addr = alloca %"RawPtr[LocString]" @@ -22498,16 +26236,16 @@ define internal void @advance.448(%"RawPtr[LocString]"* sret %_result, %"RawPtr[ code: ; preds = %0 %1 = load %"RawPtr[LocString]"*, %"RawPtr[LocString]"** %_result.addr %2 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %this.addr - %3 = call i8* @bytePtr.443(%"RawPtr[LocString]" %2) + %3 = call i8* @bytePtr.567(%"RawPtr[LocString]" %2) %4 = load i64, i64* %n.addr %5 = mul i64 %4, 48 %6 = call i8* @ptrAdd(i8* %3, i64 %5) - call void @ctor.449(%"RawPtr[LocString]"* %1, i8* %6) + call void @ctor.573(%"RawPtr[LocString]"* %1, i8* %6) ret void } ; Function Attrs: inlinehint nounwind -define internal void @ctor.449(%"RawPtr[LocString]"* %this, i8* %byteRef) #4 { +define internal void @ctor.573(%"RawPtr[LocString]"* %this, i8* %byteRef) #4 { %this.addr = alloca %"RawPtr[LocString]"* store %"RawPtr[LocString]"* %this, %"RawPtr[LocString]"** %this.addr %byteRef.addr = alloca i8* @@ -22527,7 +26265,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.450(%LocString* %this, %LocString* %other) #3 { +define internal void @ctor.574(%LocString* %this, %LocString* %other) #3 { %this.addr = alloca %LocString* store %LocString* %this, %LocString** %this.addr %other.addr = alloca %LocString* @@ -22539,12 +26277,12 @@ code: ; preds = %0 %2 = getelementptr inbounds %LocString, %LocString* %1, i32 0, i32 0 %3 = load %LocString*, %LocString** %other.addr %4 = getelementptr inbounds %LocString, %LocString* %3, i32 0, i32 0 - call void @ctor.451(%"Tuple[Location, String]"* %2, %"Tuple[Location, String]"* %4) + call void @ctor.575(%"Tuple[Location, String]"* %2, %"Tuple[Location, String]"* %4) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.451(%"Tuple[Location, String]"* %this, %"Tuple[Location, String]"* %other) #3 { +define internal void @ctor.575(%"Tuple[Location, String]"* %this, %"Tuple[Location, String]"* %other) #3 { %this.addr = alloca %"Tuple[Location, String]"* store %"Tuple[Location, String]"* %this, %"Tuple[Location, String]"** %this.addr %other.addr = alloca %"Tuple[Location, String]"* @@ -22556,17 +26294,17 @@ code: ; preds = %0 %2 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %1, i32 0, i32 0 %3 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %other.addr %4 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %3, i32 0, i32 0 - call void @ctor.171(%Location* %2, %Location* %4) + call void @ctor.182(%Location* %2, %Location* %4) %5 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %this.addr %6 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %5, i32 0, i32 1 %7 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %other.addr %8 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %7, i32 0, i32 1 - call void @ctor.184(%String* %6, %String* %8) + call void @ctor.189(%String* %6, %String* %8) ret void } ; Function Attrs: inlinehint nounwind -define internal %LocString* @value.452(%"RawPtr[LocString]" %this) #4 { +define internal %LocString* @value.576(%"RawPtr[LocString]" %this) #4 { %this.addr = alloca %"RawPtr[LocString]" store %"RawPtr[LocString]" %this, %"RawPtr[LocString]"* %this.addr br label %code @@ -22578,7 +26316,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @advance.453(%"RawPtr[LocString]"* sret %_result, %"RawPtr[LocString]" %this) #4 { +define internal void @advance.577(%"RawPtr[LocString]"* sret %_result, %"RawPtr[LocString]" %this) #4 { %_result.addr = alloca %"RawPtr[LocString]"* store %"RawPtr[LocString]"* %_result, %"RawPtr[LocString]"** %_result.addr %this.addr = alloca %"RawPtr[LocString]" @@ -22588,14 +26326,14 @@ define internal void @advance.453(%"RawPtr[LocString]"* sret %_result, %"RawPtr[ code: ; preds = %0 %1 = load %"RawPtr[LocString]"*, %"RawPtr[LocString]"** %_result.addr %2 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %this.addr - %3 = call i8* @bytePtr.443(%"RawPtr[LocString]" %2) + %3 = call i8* @bytePtr.567(%"RawPtr[LocString]" %2) %4 = call i8* @ptrAdd(i8* %3, i64 48) - call void @ctor.449(%"RawPtr[LocString]"* %1, i8* %4) + call void @ctor.573(%"RawPtr[LocString]"* %1, i8* %4) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.454(%LocString* %this, %"Tuple[Location, String]" %fdata) #3 { +define internal void @ctor.578(%LocString* %this, %"Tuple[Location, String]" %fdata) #3 { %this.addr = alloca %LocString* store %LocString* %this, %LocString** %this.addr %fdata.addr = alloca %"Tuple[Location, String]" @@ -22605,7 +26343,7 @@ define internal void @ctor.454(%LocString* %this, %"Tuple[Location, String]" %fd code: ; preds = %0 %1 = load %LocString*, %LocString** %this.addr %2 = getelementptr inbounds %LocString, %LocString* %1, i32 0, i32 0 - call void @ctor.451(%"Tuple[Location, String]"* %2, %"Tuple[Location, String]"* %fdata.addr) + call void @ctor.575(%"Tuple[Location, String]"* %2, %"Tuple[Location, String]"* %fdata.addr) ret void } @@ -22641,12 +26379,12 @@ code: ; preds = %0 %1 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %_result.addr %2 = load %Location, %Location* %v1.addr %3 = load %String, %String* %v2.addr - call void @ctor.455(%"Tuple[Location, String]"* %1, %Location %2, %String %3) + call void @ctor.579(%"Tuple[Location, String]"* %1, %Location %2, %String %3) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.455(%"Tuple[Location, String]"* %this, %Location %fv1, %String %fv2) #3 { +define internal void @ctor.579(%"Tuple[Location, String]"* %this, %Location %fv1, %String %fv2) #3 { %this.addr = alloca %"Tuple[Location, String]"* store %"Tuple[Location, String]"* %this, %"Tuple[Location, String]"** %this.addr %fv1.addr = alloca %Location @@ -22658,15 +26396,15 @@ define internal void @ctor.455(%"Tuple[Location, String]"* %this, %Location %fv1 code: ; preds = %0 %1 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %this.addr %2 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %1, i32 0, i32 0 - call void @ctor.171(%Location* %2, %Location* %fv1.addr) + call void @ctor.182(%Location* %2, %Location* %fv1.addr) %3 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %this.addr %4 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %3, i32 0, i32 1 - call void @ctor.184(%String* %4, %String* %fv2.addr) + call void @ctor.189(%String* %4, %String* %fv2.addr) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.456(%LocString* %this) #3 { +define internal void @dtor.580(%LocString* %this) #3 { %this.addr = alloca %LocString* store %LocString* %this, %LocString** %this.addr br label %code @@ -22674,12 +26412,12 @@ define internal void @dtor.456(%LocString* %this) #3 { code: ; preds = %0 %1 = load %LocString*, %LocString** %this.addr %2 = getelementptr inbounds %LocString, %LocString* %1, i32 0, i32 0 - call void @dtor.457(%"Tuple[Location, String]"* %2) + call void @dtor.581(%"Tuple[Location, String]"* %2) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.457(%"Tuple[Location, String]"* %this) #3 { +define internal void @dtor.581(%"Tuple[Location, String]"* %this) #3 { %this.addr = alloca %"Tuple[Location, String]"* store %"Tuple[Location, String]"* %this, %"Tuple[Location, String]"** %this.addr br label %code @@ -22687,12 +26425,12 @@ define internal void @dtor.457(%"Tuple[Location, String]"* %this) #3 { code: ; preds = %0 %1 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %this.addr %2 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %1, i32 0, i32 1 - call void @dtor.218(%String* %2) + call void @dtor.261(%String* %2) ret void } ; Function Attrs: inlinehint nounwind -define internal void @ctor.458(%"Vector[LocString]"* %this, %"Vector[LocString]"* %other) #4 { +define internal void @ctor.582(%"Vector[LocString]"* %this, %"Vector[LocString]"* %other) #4 { %this.addr = alloca %"Vector[LocString]"* store %"Vector[LocString]"* %this, %"Vector[LocString]"** %this.addr %other.addr = alloca %"Vector[LocString]"* @@ -22709,61 +26447,61 @@ define internal void @ctor.458(%"Vector[LocString]"* %this, %"Vector[LocString]" code: ; preds = %0 %1 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %2 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %1, i32 0, i32 0 - call void @ctor.437(%"RawPtr[LocString]"* %2) + call void @ctor.561(%"RawPtr[LocString]"* %2) %3 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %4 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %3, i32 0, i32 1 - call void @ctor.437(%"RawPtr[LocString]"* %4) + call void @ctor.561(%"RawPtr[LocString]"* %4) %5 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %6 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %5, i32 0, i32 2 - call void @ctor.437(%"RawPtr[LocString]"* %6) + call void @ctor.561(%"RawPtr[LocString]"* %6) %7 = load %"Vector[LocString]"*, %"Vector[LocString]"** %other.addr - %8 = call i64 @size.445(%"Vector[LocString]"* %7) + %8 = call i64 @size.569(%"Vector[LocString]"* %7) store i64 %8, i64* %size %9 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %10 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %9, i32 0, i32 0 %11 = load i64, i64* %size - call void @allocRawPtr.459(%"RawPtr[LocString]"* %"$tmpC", i64 %11) - call void @"=.447"(%"RawPtr[LocString]"* %10, %"RawPtr[LocString]"* %"$tmpC") + call void @allocRawPtr.583(%"RawPtr[LocString]"* %"$tmpC", i64 %11) + call void @"=.571"(%"RawPtr[LocString]"* %10, %"RawPtr[LocString]"* %"$tmpC") %12 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %13 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %12, i32 0, i32 1 %14 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %15 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %14, i32 0, i32 0 %16 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %15 %17 = load i64, i64* %size - call void @advance.448(%"RawPtr[LocString]"* %"$tmpC1", %"RawPtr[LocString]" %16, i64 %17) - call void @"=.447"(%"RawPtr[LocString]"* %13, %"RawPtr[LocString]"* %"$tmpC1") + call void @advance.572(%"RawPtr[LocString]"* %"$tmpC1", %"RawPtr[LocString]" %16, i64 %17) + call void @"=.571"(%"RawPtr[LocString]"* %13, %"RawPtr[LocString]"* %"$tmpC1") %18 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %19 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %18, i32 0, i32 2 %20 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %21 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %20, i32 0, i32 1 - call void @"=.447"(%"RawPtr[LocString]"* %19, %"RawPtr[LocString]"* %21) + call void @"=.571"(%"RawPtr[LocString]"* %19, %"RawPtr[LocString]"* %21) %22 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %23 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %22, i32 0, i32 0 - call void @ctor.461(%"RawPtr[LocString]"* %dst, %"RawPtr[LocString]"* %23) + call void @ctor.585(%"RawPtr[LocString]"* %dst, %"RawPtr[LocString]"* %23) %24 = load %"Vector[LocString]"*, %"Vector[LocString]"** %other.addr %25 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %24, i32 0, i32 0 - call void @ctor.461(%"RawPtr[LocString]"* %src, %"RawPtr[LocString]"* %25) + call void @ctor.585(%"RawPtr[LocString]"* %src, %"RawPtr[LocString]"* %25) br label %while_block while_block: ; preds = %while_step, %code %26 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %27 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %26, i32 0, i32 1 - %28 = call i1 @"==.440"(%"RawPtr[LocString]"* %dst, %"RawPtr[LocString]"* %27) + %28 = call i1 @"==.564"(%"RawPtr[LocString]"* %dst, %"RawPtr[LocString]"* %27) %29 = xor i1 true, %28 br i1 %29, label %while_body, label %while_end while_body: ; preds = %while_block %30 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %dst - %31 = call %LocString* @value.452(%"RawPtr[LocString]" %30) + %31 = call %LocString* @value.576(%"RawPtr[LocString]" %30) %32 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %src - %33 = call %LocString* @value.452(%"RawPtr[LocString]" %32) - call void @ctor.450(%LocString* %31, %LocString* %33) + %33 = call %LocString* @value.576(%"RawPtr[LocString]" %32) + call void @ctor.574(%LocString* %31, %LocString* %33) %34 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %dst - call void @advance.453(%"RawPtr[LocString]"* %"$tmpC2", %"RawPtr[LocString]" %34) - call void @"=.447"(%"RawPtr[LocString]"* %dst, %"RawPtr[LocString]"* %"$tmpC2") + call void @advance.577(%"RawPtr[LocString]"* %"$tmpC2", %"RawPtr[LocString]" %34) + call void @"=.571"(%"RawPtr[LocString]"* %dst, %"RawPtr[LocString]"* %"$tmpC2") %35 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %src - call void @advance.453(%"RawPtr[LocString]"* %"$tmpC3", %"RawPtr[LocString]" %35) - call void @"=.447"(%"RawPtr[LocString]"* %src, %"RawPtr[LocString]"* %"$tmpC3") + call void @advance.577(%"RawPtr[LocString]"* %"$tmpC3", %"RawPtr[LocString]" %35) + call void @"=.571"(%"RawPtr[LocString]"* %src, %"RawPtr[LocString]"* %"$tmpC3") br label %while_step while_step: ; preds = %while_body @@ -22774,7 +26512,7 @@ while_end: ; preds = %while_block } ; Function Attrs: inlinehint nounwind -define internal void @allocRawPtr.459(%"RawPtr[LocString]"* sret %_result, i64 %num) #4 { +define internal void @allocRawPtr.583(%"RawPtr[LocString]"* sret %_result, i64 %num) #4 { %_result.addr = alloca %"RawPtr[LocString]"* store %"RawPtr[LocString]"* %_result, %"RawPtr[LocString]"** %_result.addr %num.addr = alloca i64 @@ -22787,12 +26525,12 @@ code: ; preds = %0 %3 = mul i64 %2, 48 %4 = call i8* @malloc(i64 %3) %5 = bitcast i8* %4 to %LocString* - call void @ctor.460(%"RawPtr[LocString]"* %1, %LocString* %5) + call void @ctor.584(%"RawPtr[LocString]"* %1, %LocString* %5) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.460(%"RawPtr[LocString]"* %this, %LocString* %f_ptr) #3 { +define internal void @ctor.584(%"RawPtr[LocString]"* %this, %LocString* %f_ptr) #3 { %this.addr = alloca %"RawPtr[LocString]"* store %"RawPtr[LocString]"* %this, %"RawPtr[LocString]"** %this.addr %f_ptr.addr = alloca %LocString* @@ -22808,7 +26546,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.461(%"RawPtr[LocString]"* %this, %"RawPtr[LocString]"* %other) #3 { +define internal void @ctor.585(%"RawPtr[LocString]"* %this, %"RawPtr[LocString]"* %other) #3 { %this.addr = alloca %"RawPtr[LocString]"* store %"RawPtr[LocString]"* %this, %"RawPtr[LocString]"** %this.addr %other.addr = alloca %"RawPtr[LocString]"* @@ -22826,7 +26564,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @dtor.462(%"Vector[LocString]"* %this) #4 { +define internal void @dtor.586(%"Vector[LocString]"* %this) #4 { %this.addr = alloca %"Vector[LocString]"* store %"Vector[LocString]"* %this, %"Vector[LocString]"** %this.addr %p = alloca %"RawPtr[LocString]" @@ -22836,38 +26574,38 @@ define internal void @dtor.462(%"Vector[LocString]"* %this) #4 { code: ; preds = %0 %1 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %2 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %1, i32 0, i32 0 - call void @ctor.461(%"RawPtr[LocString]"* %p, %"RawPtr[LocString]"* %2) + call void @ctor.585(%"RawPtr[LocString]"* %p, %"RawPtr[LocString]"* %2) br label %while_block while_block: ; preds = %while_step, %code %3 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %4 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %3, i32 0, i32 1 - %5 = call i1 @"==.440"(%"RawPtr[LocString]"* %p, %"RawPtr[LocString]"* %4) + %5 = call i1 @"==.564"(%"RawPtr[LocString]"* %p, %"RawPtr[LocString]"* %4) %6 = xor i1 true, %5 br i1 %6, label %while_body, label %while_end while_body: ; preds = %while_block %7 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %p - %8 = call %LocString* @value.452(%"RawPtr[LocString]" %7) - call void @dtor.456(%LocString* %8) + %8 = call %LocString* @value.576(%"RawPtr[LocString]" %7) + call void @dtor.580(%LocString* %8) br label %while_step while_step: ; preds = %while_body %9 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %p - call void @advance.453(%"RawPtr[LocString]"* %"$tmpC", %"RawPtr[LocString]" %9) - call void @"=.447"(%"RawPtr[LocString]"* %p, %"RawPtr[LocString]"* %"$tmpC") + call void @advance.577(%"RawPtr[LocString]"* %"$tmpC", %"RawPtr[LocString]" %9) + call void @"=.571"(%"RawPtr[LocString]"* %p, %"RawPtr[LocString]"* %"$tmpC") br label %while_block while_end: ; preds = %while_block %10 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %11 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %10, i32 0, i32 0 %12 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %11 - call void @freePtr.463(%"RawPtr[LocString]" %12) + call void @freePtr.587(%"RawPtr[LocString]" %12) ret void } ; Function Attrs: inlinehint nounwind -define internal void @freePtr.463(%"RawPtr[LocString]" %this) #4 { +define internal void @freePtr.587(%"RawPtr[LocString]" %this) #4 { %this.addr = alloca %"RawPtr[LocString]" store %"RawPtr[LocString]" %this, %"RawPtr[LocString]"* %this.addr br label %code @@ -22877,12 +26615,12 @@ code: ; preds = %0 if_block: ; preds = %code %1 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %this.addr - %2 = call i1 @isSet.464(%"RawPtr[LocString]" %1) + %2 = call i1 @isSet.588(%"RawPtr[LocString]" %1) br i1 %2, label %if_then, label %if_end if_then: ; preds = %if_block %3 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %this.addr - %4 = call i8* @bytePtr.443(%"RawPtr[LocString]" %3) + %4 = call i8* @bytePtr.567(%"RawPtr[LocString]" %3) call void @free(i8* %4) br label %if_end @@ -22891,7 +26629,7 @@ if_end: ; preds = %if_then, %if_block } ; Function Attrs: inlinehint nounwind -define internal i1 @isSet.464(%"RawPtr[LocString]" %this) #4 { +define internal i1 @isSet.588(%"RawPtr[LocString]" %this) #4 { %this.addr = alloca %"RawPtr[LocString]" store %"RawPtr[LocString]" %this, %"RawPtr[LocString]"* %this.addr br label %code @@ -22905,7 +26643,9 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @createFormals(%"Vector[LocString]"* %ids, %Node %typeNode, %Node %init, i1 %varFormals, %Node* %res) #4 { +define internal void @createFormals(%AstBuilder* %astBuilder, %"Vector[LocString]"* %ids, %Node %typeNode, %Node %init, i1 %varFormals, %Node* %res) #4 { + %astBuilder.addr = alloca %AstBuilder* + store %AstBuilder* %astBuilder, %AstBuilder** %astBuilder.addr %ids.addr = alloca %"Vector[LocString]"* store %"Vector[LocString]"* %ids, %"Vector[LocString]"** %ids.addr %typeNode.addr = alloca %Node @@ -22937,12 +26677,12 @@ if_block: ; preds = %code if_then: ; preds = %if_block %2 = load %"Vector[LocString]"*, %"Vector[LocString]"** %ids.addr - call void @all.465(%"ContiguousMemoryRange[LocString]"* %"$rangeVar", %"Vector[LocString]"* %2) + call void @all.589(%"ContiguousMemoryRange[LocString]"* %"$rangeVar", %"Vector[LocString]"* %2) br label %while_block if_else: ; preds = %if_block %3 = load %"Vector[LocString]"*, %"Vector[LocString]"** %ids.addr - call void @all.465(%"ContiguousMemoryRange[LocString]"* %"$rangeVar2", %"Vector[LocString]"* %3) + call void @all.589(%"ContiguousMemoryRange[LocString]"* %"$rangeVar2", %"Vector[LocString]"* %3) br label %while_block3 if_end: ; preds = %while_end6, %while_end @@ -22950,75 +26690,79 @@ if_end: ; preds = %while_end6, %while_ while_block: ; preds = %while_step, %if_then %4 = load %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %"$rangeVar" - %5 = call i1 @isEmpty.467(%"ContiguousMemoryRange[LocString]" %4) + %5 = call i1 @isEmpty.591(%"ContiguousMemoryRange[LocString]" %4) %6 = xor i1 true, %5 br i1 %6, label %while_body, label %while_end while_body: ; preds = %while_block %7 = load %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %"$rangeVar" - %8 = call %LocString* @front.468(%"ContiguousMemoryRange[LocString]" %7) + %8 = call %LocString* @front.592(%"ContiguousMemoryRange[LocString]" %7) store %LocString* %8, %LocString** %id - %9 = load %LocString*, %LocString** %id - %10 = getelementptr inbounds %LocString, %LocString* %9, i32 0, i32 0 - %11 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %10, i32 0, i32 0 - %12 = load %LocString*, %LocString** %id - %13 = getelementptr inbounds %LocString, %LocString* %12, i32 0, i32 0 - %14 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %13, i32 0, i32 1 - %15 = call %StringRef @asStringRef(%String* %14) - %16 = load %Node, %Node* %typeNode.addr - %17 = load %Node, %Node* %init.addr - %18 = call %Node @comp_parser_mkVar(%Location* %11, %StringRef %15, %Node %16, %Node %17) - store %Node %18, %Node* %"$tmpForRef" - call void @ctor.428(%Node* %v, %Node* %"$tmpForRef") - %19 = load %Node*, %Node** %res.addr + %9 = load %AstBuilder*, %AstBuilder** %astBuilder.addr + %10 = load %LocString*, %LocString** %id + %11 = getelementptr inbounds %LocString, %LocString* %10, i32 0, i32 0 + %12 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %11, i32 0, i32 0 + %13 = load %LocString*, %LocString** %id + %14 = getelementptr inbounds %LocString, %LocString* %13, i32 0, i32 0 + %15 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %14, i32 0, i32 1 + %16 = call %StringRef @asStringRef(%String* %15) + %17 = load %Node, %Node* %typeNode.addr + %18 = load %Node, %Node* %init.addr + %19 = call %Node @mkVar(%AstBuilder* %9, %Location* %12, %StringRef %16, %Node %17, %Node %18) + store %Node %19, %Node* %"$tmpForRef" + call void @ctor.545(%Node* %v, %Node* %"$tmpForRef") %20 = load %Node*, %Node** %res.addr - %21 = load %Node, %Node* %20 - %22 = load %Node, %Node* %v - %23 = call %Node @comp_parser_addToNodeList(%Node %21, %Node %22) - store %Node %23, %Node* %"$tmpForRef1" - call void @"=.430"(%Node* %19, %Node* %"$tmpForRef1") + %21 = load %AstBuilder*, %AstBuilder** %astBuilder.addr + %22 = load %Node*, %Node** %res.addr + %23 = load %Node, %Node* %22 + %24 = load %Node, %Node* %v + %25 = call %Node @addToNodeList(%AstBuilder* %21, %Node %23, %Node %24) + store %Node %25, %Node* %"$tmpForRef1" + call void @"=.554"(%Node* %20, %Node* %"$tmpForRef1") br label %while_step while_step: ; preds = %while_body - call void @popFront.469(%"ContiguousMemoryRange[LocString]"* %"$rangeVar") + call void @popFront.594(%"ContiguousMemoryRange[LocString]"* %"$rangeVar") br label %while_block while_end: ; preds = %while_block br label %if_end while_block3: ; preds = %while_step5, %if_else - %24 = load %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %"$rangeVar2" - %25 = call i1 @isEmpty.467(%"ContiguousMemoryRange[LocString]" %24) - %26 = xor i1 true, %25 - br i1 %26, label %while_body4, label %while_end6 + %26 = load %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %"$rangeVar2" + %27 = call i1 @isEmpty.591(%"ContiguousMemoryRange[LocString]" %26) + %28 = xor i1 true, %27 + br i1 %28, label %while_body4, label %while_end6 while_body4: ; preds = %while_block3 - %27 = load %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %"$rangeVar2" - %28 = call %LocString* @front.468(%"ContiguousMemoryRange[LocString]" %27) - store %LocString* %28, %LocString** %id7 - %29 = load %LocString*, %LocString** %id7 - %30 = getelementptr inbounds %LocString, %LocString* %29, i32 0, i32 0 - %31 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %30, i32 0, i32 0 + %29 = load %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %"$rangeVar2" + %30 = call %LocString* @front.592(%"ContiguousMemoryRange[LocString]" %29) + store %LocString* %30, %LocString** %id7 + %31 = load %AstBuilder*, %AstBuilder** %astBuilder.addr %32 = load %LocString*, %LocString** %id7 %33 = getelementptr inbounds %LocString, %LocString* %32, i32 0, i32 0 - %34 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %33, i32 0, i32 1 - %35 = call %StringRef @asStringRef(%String* %34) - %36 = load %Node, %Node* %typeNode.addr - %37 = load %Node, %Node* %init.addr - %38 = call %Node @comp_parser_mkParameter(%Location* %31, %StringRef %35, %Node %36, %Node %37) - store %Node %38, %Node* %"$tmpForRef8" - call void @ctor.428(%Node* %p, %Node* %"$tmpForRef8") - %39 = load %Node*, %Node** %res.addr - %40 = load %Node*, %Node** %res.addr - %41 = load %Node, %Node* %40 - %42 = load %Node, %Node* %p - %43 = call %Node @comp_parser_addToNodeList(%Node %41, %Node %42) - store %Node %43, %Node* %"$tmpForRef9" - call void @"=.430"(%Node* %39, %Node* %"$tmpForRef9") + %34 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %33, i32 0, i32 0 + %35 = load %LocString*, %LocString** %id7 + %36 = getelementptr inbounds %LocString, %LocString* %35, i32 0, i32 0 + %37 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %36, i32 0, i32 1 + %38 = call %StringRef @asStringRef(%String* %37) + %39 = load %Node, %Node* %typeNode.addr + %40 = load %Node, %Node* %init.addr + %41 = call %Node @mkParameter(%AstBuilder* %31, %Location* %34, %StringRef %38, %Node %39, %Node %40) + store %Node %41, %Node* %"$tmpForRef8" + call void @ctor.545(%Node* %p, %Node* %"$tmpForRef8") + %42 = load %Node*, %Node** %res.addr + %43 = load %AstBuilder*, %AstBuilder** %astBuilder.addr + %44 = load %Node*, %Node** %res.addr + %45 = load %Node, %Node* %44 + %46 = load %Node, %Node* %p + %47 = call %Node @addToNodeList(%AstBuilder* %43, %Node %45, %Node %46) + store %Node %47, %Node* %"$tmpForRef9" + call void @"=.554"(%Node* %42, %Node* %"$tmpForRef9") br label %while_step5 while_step5: ; preds = %while_body4 - call void @popFront.469(%"ContiguousMemoryRange[LocString]"* %"$rangeVar2") + call void @popFront.594(%"ContiguousMemoryRange[LocString]"* %"$rangeVar2") br label %while_block3 while_end6: ; preds = %while_block3 @@ -23026,7 +26770,7 @@ while_end6: ; preds = %while_block3 } ; Function Attrs: inlinehint nounwind -define internal void @all.465(%"ContiguousMemoryRange[LocString]"* sret %_result, %"Vector[LocString]"* %this) #4 { +define internal void @all.589(%"ContiguousMemoryRange[LocString]"* sret %_result, %"Vector[LocString]"* %this) #4 { %_result.addr = alloca %"ContiguousMemoryRange[LocString]"* store %"ContiguousMemoryRange[LocString]"* %_result, %"ContiguousMemoryRange[LocString]"** %_result.addr %this.addr = alloca %"Vector[LocString]"* @@ -23041,12 +26785,12 @@ code: ; preds = %0 %5 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr %6 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %5, i32 0, i32 1 %7 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %6 - call void @ctor.466(%"ContiguousMemoryRange[LocString]"* %1, %"RawPtr[LocString]" %4, %"RawPtr[LocString]" %7) + call void @ctor.590(%"ContiguousMemoryRange[LocString]"* %1, %"RawPtr[LocString]" %4, %"RawPtr[LocString]" %7) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.466(%"ContiguousMemoryRange[LocString]"* %this, %"RawPtr[LocString]" %f_begin, %"RawPtr[LocString]" %f_end) #3 { +define internal void @ctor.590(%"ContiguousMemoryRange[LocString]"* %this, %"RawPtr[LocString]" %f_begin, %"RawPtr[LocString]" %f_end) #3 { %this.addr = alloca %"ContiguousMemoryRange[LocString]"* store %"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"** %this.addr %f_begin.addr = alloca %"RawPtr[LocString]" @@ -23058,15 +26802,15 @@ define internal void @ctor.466(%"ContiguousMemoryRange[LocString]"* %this, %"Raw code: ; preds = %0 %1 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %this.addr %2 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %1, i32 0, i32 0 - call void @ctor.461(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %f_begin.addr) + call void @ctor.585(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %f_begin.addr) %3 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %this.addr %4 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %3, i32 0, i32 1 - call void @ctor.461(%"RawPtr[LocString]"* %4, %"RawPtr[LocString]"* %f_end.addr) + call void @ctor.585(%"RawPtr[LocString]"* %4, %"RawPtr[LocString]"* %f_end.addr) ret void } ; Function Attrs: inlinehint nounwind -define internal i1 @isEmpty.467(%"ContiguousMemoryRange[LocString]" %this) #4 { +define internal i1 @isEmpty.591(%"ContiguousMemoryRange[LocString]" %this) #4 { %this.addr = alloca %"ContiguousMemoryRange[LocString]" store %"ContiguousMemoryRange[LocString]" %this, %"ContiguousMemoryRange[LocString]"* %this.addr %tmp.this = alloca i64 @@ -23077,7 +26821,7 @@ code: ; preds = %0 %2 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %1 %3 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %this.addr, i32 0, i32 0 %4 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %3 - %5 = call i64 @diff.442(%"RawPtr[LocString]" %2, %"RawPtr[LocString]" %4) + %5 = call i64 @diff.566(%"RawPtr[LocString]" %2, %"RawPtr[LocString]" %4) store i64 0, i64* %tmp.this %6 = load i64, i64* %tmp.this %7 = icmp sle i64 %5, %6 @@ -23085,7 +26829,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal %LocString* @front.468(%"ContiguousMemoryRange[LocString]" %this) #4 { +define internal %LocString* @front.592(%"ContiguousMemoryRange[LocString]" %this) #4 { %this.addr = alloca %"ContiguousMemoryRange[LocString]" store %"ContiguousMemoryRange[LocString]" %this, %"ContiguousMemoryRange[LocString]"* %this.addr br label %code @@ -23093,14 +26837,69 @@ define internal %LocString* @front.468(%"ContiguousMemoryRange[LocString]" %this code: ; preds = %0 %1 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %this.addr, i32 0, i32 0 %2 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %1 - %3 = call %LocString* @value.452(%"RawPtr[LocString]" %2) + %3 = call %LocString* @value.576(%"RawPtr[LocString]" %2) ret %LocString* %3 } -declare %Node @comp_parser_mkVar(%Location*, %StringRef, %Node, %Node) +; Function Attrs: inlinehint nounwind +define internal %Node @mkVar(%AstBuilder* %obj, %Location* %loc, %StringRef %name, %Node %typeNode, %Node %init) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %name.addr = alloca %StringRef + store %StringRef %name, %StringRef* %name.addr + %typeNode.addr = alloca %Node + store %Node %typeNode, %Node* %typeNode.addr + %init.addr = alloca %Node + store %Node %init, %Node* %init.addr + br label %code + +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 10 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load %StringRef, %StringRef* %name.addr + %8 = load %Node, %Node* %typeNode.addr + %9 = load %Node, %Node* %init.addr + %10 = call %Node @"().593"(%"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %2, %UntypedPtr %5, %Location* %6, %StringRef %7, %Node %8, %Node %9) + ret %Node %10 +} + +; Function Attrs: inlinehint nounwind +define internal %Node @"().593"(%"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %this, %UntypedPtr %p1, %Location* %p2, %StringRef %p3, %Node %p4, %Node %p5) #4 { + %this.addr = alloca %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* + store %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %this, %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"** %this.addr + %p1.addr = alloca %UntypedPtr + store %UntypedPtr %p1, %UntypedPtr* %p1.addr + %p2.addr = alloca %Location* + store %Location* %p2, %Location** %p2.addr + %p3.addr = alloca %StringRef + store %StringRef %p3, %StringRef* %p3.addr + %p4.addr = alloca %Node + store %Node %p4, %Node* %p4.addr + %p5.addr = alloca %Node + store %Node %p5, %Node* %p5.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"*, %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"** %this.addr + %2 = load %UntypedPtr, %UntypedPtr* %p1.addr + %3 = load %Location*, %Location** %p2.addr + %4 = load %StringRef, %StringRef* %p3.addr + %5 = load %Node, %Node* %p4.addr + %6 = load %Node, %Node* %p5.addr + %7 = bitcast %"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %1 to %Node (%UntypedPtr, %Location*, %StringRef, %Node, %Node)** + %8 = load %Node (%UntypedPtr, %Location*, %StringRef, %Node, %Node)*, %Node (%UntypedPtr, %Location*, %StringRef, %Node, %Node)** %7 + %9 = call %Node %8(%UntypedPtr %2, %Location* %3, %StringRef %4, %Node %5, %Node %6) + ret %Node %9 +} ; Function Attrs: alwaysinline nounwind -define internal void @popFront.469(%"ContiguousMemoryRange[LocString]"* %this) #3 { +define internal void @popFront.594(%"ContiguousMemoryRange[LocString]"* %this) #3 { %this.addr = alloca %"ContiguousMemoryRange[LocString]"* store %"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"** %this.addr %"$tmpC" = alloca %"RawPtr[LocString]" @@ -23112,122 +26911,144 @@ code: ; preds = %0 %3 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %this.addr %4 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %3, i32 0, i32 0 %5 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %4 - call void @advance.453(%"RawPtr[LocString]"* %"$tmpC", %"RawPtr[LocString]" %5) - call void @"=.447"(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %"$tmpC") + call void @advance.577(%"RawPtr[LocString]"* %"$tmpC", %"RawPtr[LocString]" %5) + call void @"=.571"(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %"$tmpC") ret void } -declare %Node @comp_parser_mkParameter(%Location*, %StringRef, %Node, %Node) +; Function Attrs: inlinehint nounwind +define internal %Node @mkParameter(%AstBuilder* %obj, %Location* %loc, %StringRef %name, %Node %typeNode, %Node %init) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %name.addr = alloca %StringRef + store %StringRef %name, %StringRef* %name.addr + %typeNode.addr = alloca %Node + store %Node %typeNode, %Node* %typeNode.addr + %init.addr = alloca %Node + store %Node %init, %Node* %init.addr + br label %code + +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 11 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load %StringRef, %StringRef* %name.addr + %8 = load %Node, %Node* %typeNode.addr + %9 = load %Node, %Node* %init.addr + %10 = call %Node @"().593"(%"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %2, %UntypedPtr %5, %Location* %6, %StringRef %7, %Node %8, %Node %9) + ret %Node %10 +} ; Function Attrs: inlinehint nounwind -define internal void @parseTypeNode(%Node* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this) #4 { - %_result.addr = alloca %Node* - store %Node* %_result, %Node** %_result.addr - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal %Node @parseTypeNode(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %tmp.this = alloca %TokenType + %tmp.this1 = alloca %Node br label %code code: ; preds = %0 br label %if_block if_block: ; preds = %code - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 30) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 30) %2 = load %TokenType, %TokenType* %tmp.this - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_end if_then: ; preds = %if_block - %4 = load %Node*, %Node** %_result.addr - %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseExpr(%Node* %4, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i1 false) - ret void + %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %5 = call %Node @parseExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %4, i1 false) + ret %Node %5 if_end: ; preds = %dumy_block, %if_block - %6 = load %Node*, %Node** %_result.addr - call void @ctor.432(%Node* %6) - ret void + call void @ctor.556(%Node* %tmp.this1) + %6 = load %Node, %Node* %tmp.this1 + ret %Node %6 dumy_block: ; No predecessors! br label %if_end } ; Function Attrs: inlinehint nounwind -define internal void @parseFunBody(%Node* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this) #4 { - %_result.addr = alloca %Node* - store %Node* %_result, %Node** %_result.addr - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal %Node @parseFunBody(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %tmp.this = alloca %TokenType + %tmp.this1 = alloca %Node %res = alloca %Node %"$tmpC" = alloca %String %tmp.StringRef = alloca %StringRef - %"$tmpC4" = alloca %Token - %tmp.StringRef5 = alloca %StringRef + %"$tmpC5" = alloca %Token + %tmp.StringRef6 = alloca %StringRef br label %code code: ; preds = %0 br label %if_block if_block: ; preds = %code - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 31) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 31) %2 = load %TokenType, %TokenType* %tmp.this - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_end if_then: ; preds = %if_block - %4 = load %Node*, %Node** %_result.addr - call void @ctor.432(%Node* %4) - ret void + call void @ctor.556(%Node* %tmp.this1) + %4 = load %Node, %Node* %tmp.this1 + ret %Node %4 if_end: ; preds = %dumy_block, %if_block - call void @ctor.432(%Node* %res) - br label %if_block1 + call void @ctor.556(%Node* %res) + br label %if_block2 dumy_block: ; No predecessors! br label %if_end -if_block1: ; preds = %if_end - %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %6 = call i1 @parseBlockStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, %Node* %res, i1 false) +if_block2: ; preds = %if_end + %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %6 = call i1 @parseBlockStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %5, %Node* %res, i1 false) %7 = xor i1 true, %6 - br i1 %7, label %if_then2, label %if_end3 + br i1 %7, label %if_then3, label %if_end4 -if_then2: ; preds = %if_block1 - %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +if_then3: ; preds = %if_block2 + %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %9 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 0 %10 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 1 - store i8* getelementptr inbounds ([26 x i8], [26 x i8]* @str.93, i32 0, i32 0), i8** %9 - store i8* getelementptr inbounds ([26 x i8], [26 x i8]* @str.93, i32 0, i32 25), i8** %10 + store i8* getelementptr inbounds ([26 x i8], [26 x i8]* @str.94, i32 0, i32 0), i8** %9 + store i8* getelementptr inbounds ([26 x i8], [26 x i8]* @str.94, i32 0, i32 25), i8** %10 %11 = load %StringRef, %StringRef* %tmp.StringRef - %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %13 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %12, i32 0, i32 0 - call void @"pre_*.419"(%Token* %"$tmpC4", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %13) - %14 = getelementptr inbounds %Token, %Token* %"$tmpC4", i32 0, i32 1 + %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %13 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %12, i32 0, i32 0 + call void @"pre_*.543"(%Token* %"$tmpC5", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %13) + %14 = getelementptr inbounds %Token, %Token* %"$tmpC5", i32 0, i32 1 %15 = load %TokenType, %TokenType* %14 - %16 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef5, i32 0, i32 0 - %17 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef5, i32 0, i32 1 - store i8* getelementptr inbounds ([28 x i8], [28 x i8]* @str.94, i32 0, i32 0), i8** %16 - store i8* getelementptr inbounds ([28 x i8], [28 x i8]* @str.94, i32 0, i32 27), i8** %17 - %18 = load %StringRef, %StringRef* %tmp.StringRef5 - call void @toString.471(%String* %"$tmpC", %StringRef %11, %TokenType %15, %StringRef %18) - call void @reportError.423(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8, %String* %"$tmpC") - call void @dtor.218(%String* %"$tmpC") - call void @dtor.217(%Token* %"$tmpC4") - br label %if_end3 + %16 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef6, i32 0, i32 0 + %17 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef6, i32 0, i32 1 + store i8* getelementptr inbounds ([28 x i8], [28 x i8]* @str.95, i32 0, i32 0), i8** %16 + store i8* getelementptr inbounds ([28 x i8], [28 x i8]* @str.95, i32 0, i32 27), i8** %17 + %18 = load %StringRef, %StringRef* %tmp.StringRef6 + call void @toString.597(%String* %"$tmpC", %StringRef %11, %TokenType %15, %StringRef %18) + call void @reportError.548(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %8, %String* %"$tmpC") + call void @dtor.261(%String* %"$tmpC") + call void @dtor.260(%Token* %"$tmpC5") + br label %if_end4 -if_end3: ; preds = %if_then2, %if_block1 - %19 = load %Node*, %Node** %_result.addr - call void @ctor.428(%Node* %19, %Node* %res) - ret void +if_end4: ; preds = %if_then3, %if_block2 + %19 = load %Node, %Node* %res + ret %Node %19 } ; Function Attrs: inlinehint nounwind -define internal i1 @parseBlockStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %Node* %res, i1 %topLevel) #4 { - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal i1 @parseBlockStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %Node* %res, i1 %topLevel) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %res.addr = alloca %Node* store %Node* %res, %Node** %res.addr %topLevel.addr = alloca i1 @@ -23238,84 +27059,89 @@ define internal i1 @parseBlockStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowS %tmp.this2 = alloca %TokenType %s = alloca %Node %"$tmpForRef" = alloca %Node - %tmp.this6 = alloca %TokenType - %"$tmpForRef10" = alloca %Node + %"$tmpForRef6" = alloca %Node + %tmp.this7 = alloca %TokenType + %"$tmpForRef11" = alloca %Node %"$tmpC" = alloca %Location - %"$tmpC11" = alloca %Location + %"$tmpC12" = alloca %Location br label %code code: ; preds = %0 - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @curLoc(%Location* %loc, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @curLoc(%Location* %loc, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1) br label %if_block if_block: ; preds = %code - %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 24) + %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 24) %3 = load %TokenType, %TokenType* %tmp.this - %4 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, %TokenType %3) + %4 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %2, %TokenType %3) br i1 %4, label %if_then, label %if_end if_then: ; preds = %if_block %5 = load %Node*, %Node** %res.addr - call void @ctor.432(%Node* %tmp.this1) - call void @"=.430"(%Node* %5, %Node* %tmp.this1) + call void @ctor.556(%Node* %tmp.this1) + call void @"=.554"(%Node* %5, %Node* %tmp.this1) br label %while_block -if_end: ; preds = %dumy_block12, %if_block +if_end: ; preds = %dumy_block13, %if_block ret i1 false while_block: ; preds = %while_step, %if_then - %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this2, i32 25) + %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this2, i32 25) %7 = load %TokenType, %TokenType* %tmp.this2 - %8 = call i1 @nextIs(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %6, %TokenType %7) + %8 = call i1 @nextIs(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %6, %TokenType %7) %9 = xor i1 true, %8 br i1 %9, label %cond.true, label %cond.false while_body: ; preds = %cond.end - %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr + %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %11 = load i1, i1* %topLevel.addr - call void @parseStmt(%Node* %s, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %10, i1 %11) + %12 = call %Node @parseStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %10, i1 %11) + store %Node %12, %Node* %"$tmpForRef" + call void @ctor.545(%Node* %s, %Node* %"$tmpForRef") br label %if_block3 while_step: ; preds = %if_end5 br label %while_block while_end: ; preds = %if_else, %cond.end - %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this6, i32 25) - %13 = load %TokenType, %TokenType* %tmp.this6 - %14 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %12, %TokenType %13) - br label %if_block7 + %13 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this7, i32 25) + %14 = load %TokenType, %TokenType* %tmp.this7 + %15 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %13, %TokenType %14) + br label %if_block8 cond.true: ; preds = %while_block - %15 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %16 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %15, i32 0, i32 2 - %17 = load i1, i1* %16 - %18 = xor i1 true, %17 + %16 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %17 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %16, i32 0, i32 2 + %18 = load i1, i1* %17 + %19 = xor i1 true, %18 br label %cond.end cond.false: ; preds = %while_block br label %cond.end cond.end: ; preds = %cond.false, %cond.true - %cond.res = phi i1 [ %18, %cond.true ], [ false, %cond.false ] + %cond.res = phi i1 [ %19, %cond.true ], [ false, %cond.false ] br i1 %cond.res, label %while_body, label %while_end if_block3: ; preds = %while_body - %19 = load %Node, %Node* %s - %20 = call i1 @isSet.470(%Node %19) - br i1 %20, label %if_then4, label %if_else + %20 = load %Node, %Node* %s + %21 = call i1 @isSet.595(%Node %20) + br i1 %21, label %if_then4, label %if_else if_then4: ; preds = %if_block3 - %21 = load %Node*, %Node** %res.addr %22 = load %Node*, %Node** %res.addr - %23 = load %Node, %Node* %22 - %24 = load %Node, %Node* %s - %25 = call %Node @comp_parser_addToNodeList(%Node %23, %Node %24) - store %Node %25, %Node* %"$tmpForRef" - call void @"=.430"(%Node* %21, %Node* %"$tmpForRef") + %23 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %24 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %23, i32 0, i32 3 + %25 = load %Node*, %Node** %res.addr + %26 = load %Node, %Node* %25 + %27 = load %Node, %Node* %s + %28 = call %Node @addToNodeList(%AstBuilder* %24, %Node %26, %Node %27) + store %Node %28, %Node* %"$tmpForRef6" + call void @"=.554"(%Node* %22, %Node* %"$tmpForRef6") br label %if_end5 if_else: ; preds = %if_block3 @@ -23327,32 +27153,34 @@ if_end5: ; preds = %dumy_block, %if_the dumy_block: ; No predecessors! br label %if_end5 -if_block7: ; preds = %while_end - %26 = load i1, i1* %topLevel.addr - %27 = xor i1 true, %26 - br i1 %27, label %if_then8, label %if_end9 +if_block8: ; preds = %while_end + %29 = load i1, i1* %topLevel.addr + %30 = xor i1 true, %29 + br i1 %30, label %if_then9, label %if_end10 -if_then8: ; preds = %if_block7 - %28 = load %Node*, %Node** %res.addr - %29 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @lastLoc(%Location* %"$tmpC11", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %29) - call void @span(%Location* %"$tmpC", %Location* %loc, %Location* %"$tmpC11") - %30 = load %Node*, %Node** %res.addr - %31 = load %Node, %Node* %30 - %32 = call %Node @comp_parser_mkBlockStmt(%Location* %"$tmpC", %Node %31) - store %Node %32, %Node* %"$tmpForRef10" - call void @"=.430"(%Node* %28, %Node* %"$tmpForRef10") - br label %if_end9 +if_then9: ; preds = %if_block8 + %31 = load %Node*, %Node** %res.addr + %32 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %33 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %32, i32 0, i32 3 + %34 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @lastLoc(%Location* %"$tmpC12", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %34) + call void @span(%Location* %"$tmpC", %Location* %loc, %Location* %"$tmpC12") + %35 = load %Node*, %Node** %res.addr + %36 = load %Node, %Node* %35 + %37 = call %Node @mkBlockStmt(%AstBuilder* %33, %Location* %"$tmpC", %Node %36) + store %Node %37, %Node* %"$tmpForRef11" + call void @"=.554"(%Node* %31, %Node* %"$tmpForRef11") + br label %if_end10 -if_end9: ; preds = %if_then8, %if_block7 +if_end10: ; preds = %if_then9, %if_block8 ret i1 true -dumy_block12: ; No predecessors! +dumy_block13: ; No predecessors! br label %if_end } ; Function Attrs: inlinehint nounwind -define internal i1 @isSet.470(%Node %n) #4 { +define internal i1 @isSet.595(%Node %n) #4 { %n.addr = alloca %Node store %Node %n, %Node* %n.addr br label %code @@ -23365,10 +27193,53 @@ code: ; preds = %0 ret i1 %4 } -declare %Node @comp_parser_mkBlockStmt(%Location*, %Node) +; Function Attrs: inlinehint nounwind +define internal %Node @mkBlockStmt(%AstBuilder* %obj, %Location* %loc, %Node %stmts) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %stmts.addr = alloca %Node + store %Node %stmts, %Node* %stmts.addr + br label %code + +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 33 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load %Node, %Node* %stmts.addr + %8 = call %Node @"().596"(%"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %2, %UntypedPtr %5, %Location* %6, %Node %7) + ret %Node %8 +} + +; Function Attrs: inlinehint nounwind +define internal %Node @"().596"(%"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %this, %UntypedPtr %p1, %Location* %p2, %Node %p3) #4 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"** %this.addr + %p1.addr = alloca %UntypedPtr + store %UntypedPtr %p1, %UntypedPtr* %p1.addr + %p2.addr = alloca %Location* + store %Location* %p2, %Location** %p2.addr + %p3.addr = alloca %Node + store %Node %p3, %Node* %p3.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"** %this.addr + %2 = load %UntypedPtr, %UntypedPtr* %p1.addr + %3 = load %Location*, %Location** %p2.addr + %4 = load %Node, %Node* %p3.addr + %5 = bitcast %"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %1 to %Node (%UntypedPtr, %Location*, %Node)** + %6 = load %Node (%UntypedPtr, %Location*, %Node)*, %Node (%UntypedPtr, %Location*, %Node)** %5 + %7 = call %Node %6(%UntypedPtr %2, %Location* %3, %Node %4) + ret %Node %7 +} ; Function Attrs: inlinehint nounwind -define internal void @toString.471(%String* sret %_result, %StringRef %a1, %TokenType %a2, %StringRef %a3) #4 { +define internal void @toString.597(%String* sret %_result, %StringRef %a1, %TokenType %a2, %StringRef %a3) #4 { %_result.addr = alloca %String* store %String* %_result, %String** %_result.addr %a1.addr = alloca %StringRef @@ -23381,44 +27252,549 @@ define internal void @toString.471(%String* sret %_result, %StringRef %a1, %Toke br label %code code: ; preds = %0 - call void @ctor.289(%StringOutputStream* %s) + call void @ctor.452(%StringOutputStream* %s) %1 = call %StringOutputStream* @"<<"(%StringOutputStream* %s, %StringRef* %a1.addr) - %2 = call %StringOutputStream* @"<<.425"(%StringOutputStream* %1, %TokenType* %a2.addr) + %2 = call %StringOutputStream* @"<<.550"(%StringOutputStream* %1, %TokenType* %a2.addr) %3 = call %StringOutputStream* @"<<"(%StringOutputStream* %2, %StringRef* %a3.addr) %4 = load %String*, %String** %_result.addr %5 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %s, i32 0, i32 0 - call void @ctor.184(%String* %4, %String* %5) - call void @dtor.291(%StringOutputStream* %s) + call void @ctor.189(%String* %4, %String* %5) + call void @dtor.454(%StringOutputStream* %s) ret void dumy_block: ; No predecessors! - call void @dtor.291(%StringOutputStream* %s) + call void @dtor.454(%StringOutputStream* %s) ret void } -declare %Node @comp_parser_mkLambdaExpr(%Location*, %Node, %Node, %Node, %Node, %Node) +; Function Attrs: inlinehint nounwind +define internal %Node @mkLambdaExpr(%AstBuilder* %obj, %Location* %loc, %Node %closureParams, %Node %formals, %Node %retType, %Node %body, %Node %bodyExpr) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %closureParams.addr = alloca %Node + store %Node %closureParams, %Node* %closureParams.addr + %formals.addr = alloca %Node + store %Node %formals, %Node* %formals.addr + %retType.addr = alloca %Node + store %Node %retType, %Node* %retType.addr + %body.addr = alloca %Node + store %Node %body, %Node* %body.addr + %bodyExpr.addr = alloca %Node + store %Node %bodyExpr, %Node* %bodyExpr.addr + br label %code + +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 22 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load %Node, %Node* %closureParams.addr + %8 = load %Node, %Node* %formals.addr + %9 = load %Node, %Node* %retType.addr + %10 = load %Node, %Node* %body.addr + %11 = load %Node, %Node* %bodyExpr.addr + %12 = call %Node @"().598"(%"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* %2, %UntypedPtr %5, %Location* %6, %Node %7, %Node %8, %Node %9, %Node %10, %Node %11) + ret %Node %12 +} + +; Function Attrs: inlinehint nounwind +define internal %Node @"().598"(%"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* %this, %UntypedPtr %p1, %Location* %p2, %Node %p3, %Node %p4, %Node %p5, %Node %p6, %Node %p7) #4 { + %this.addr = alloca %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* + store %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* %this, %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"** %this.addr + %p1.addr = alloca %UntypedPtr + store %UntypedPtr %p1, %UntypedPtr* %p1.addr + %p2.addr = alloca %Location* + store %Location* %p2, %Location** %p2.addr + %p3.addr = alloca %Node + store %Node %p3, %Node* %p3.addr + %p4.addr = alloca %Node + store %Node %p4, %Node* %p4.addr + %p5.addr = alloca %Node + store %Node %p5, %Node* %p5.addr + %p6.addr = alloca %Node + store %Node %p6, %Node* %p6.addr + %p7.addr = alloca %Node + store %Node %p7, %Node* %p7.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"*, %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"** %this.addr + %2 = load %UntypedPtr, %UntypedPtr* %p1.addr + %3 = load %Location*, %Location** %p2.addr + %4 = load %Node, %Node* %p3.addr + %5 = load %Node, %Node* %p4.addr + %6 = load %Node, %Node* %p5.addr + %7 = load %Node, %Node* %p6.addr + %8 = load %Node, %Node* %p7.addr + %9 = bitcast %"FunctionPtr7[Node, UntypedPtr, @Location, Node, Node, Node, Node, Node]"* %1 to %Node (%UntypedPtr, %Location*, %Node, %Node, %Node, %Node, %Node)** + %10 = load %Node (%UntypedPtr, %Location*, %Node, %Node, %Node, %Node, %Node)*, %Node (%UntypedPtr, %Location*, %Node, %Node, %Node, %Node, %Node)** %9 + %11 = call %Node %10(%UntypedPtr %2, %Location* %3, %Node %4, %Node %5, %Node %6, %Node %7, %Node %8) + ret %Node %11 +} + +; Function Attrs: inlinehint nounwind +define internal %Node @mkParenthesisExpr(%AstBuilder* %obj, %Node %expr) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %expr.addr = alloca %Node + store %Node %expr, %Node* %expr.addr + br label %code + +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 13 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Node, %Node* %expr.addr + %7 = call %Node @"().599"(%"FunctionPtr2[Node, UntypedPtr, Node]"* %2, %UntypedPtr %5, %Node %6) + ret %Node %7 +} + +; Function Attrs: inlinehint nounwind +define internal %Node @"().599"(%"FunctionPtr2[Node, UntypedPtr, Node]"* %this, %UntypedPtr %p1, %Node %p2) #4 { + %this.addr = alloca %"FunctionPtr2[Node, UntypedPtr, Node]"* + store %"FunctionPtr2[Node, UntypedPtr, Node]"* %this, %"FunctionPtr2[Node, UntypedPtr, Node]"** %this.addr + %p1.addr = alloca %UntypedPtr + store %UntypedPtr %p1, %UntypedPtr* %p1.addr + %p2.addr = alloca %Node + store %Node %p2, %Node* %p2.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr2[Node, UntypedPtr, Node]"*, %"FunctionPtr2[Node, UntypedPtr, Node]"** %this.addr + %2 = load %UntypedPtr, %UntypedPtr* %p1.addr + %3 = load %Node, %Node* %p2.addr + %4 = bitcast %"FunctionPtr2[Node, UntypedPtr, Node]"* %1 to %Node (%UntypedPtr, %Node)** + %5 = load %Node (%UntypedPtr, %Node)*, %Node (%UntypedPtr, %Node)** %4 + %6 = call %Node %5(%UntypedPtr %2, %Node %3) + ret %Node %6 +} + +; Function Attrs: inlinehint nounwind +define internal %Node @mkNullLiteral(%AstBuilder* %obj, %Location* %loc) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + br label %code + +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 23 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = call %Node @"().600"(%"FunctionPtr2[Node, UntypedPtr, @Location]"* %2, %UntypedPtr %5, %Location* %6) + ret %Node %7 +} + +; Function Attrs: inlinehint nounwind +define internal %Node @"().600"(%"FunctionPtr2[Node, UntypedPtr, @Location]"* %this, %UntypedPtr %p1, %Location* %p2) #4 { + %this.addr = alloca %"FunctionPtr2[Node, UntypedPtr, @Location]"* + store %"FunctionPtr2[Node, UntypedPtr, @Location]"* %this, %"FunctionPtr2[Node, UntypedPtr, @Location]"** %this.addr + %p1.addr = alloca %UntypedPtr + store %UntypedPtr %p1, %UntypedPtr* %p1.addr + %p2.addr = alloca %Location* + store %Location* %p2, %Location** %p2.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr2[Node, UntypedPtr, @Location]"*, %"FunctionPtr2[Node, UntypedPtr, @Location]"** %this.addr + %2 = load %UntypedPtr, %UntypedPtr* %p1.addr + %3 = load %Location*, %Location** %p2.addr + %4 = bitcast %"FunctionPtr2[Node, UntypedPtr, @Location]"* %1 to %Node (%UntypedPtr, %Location*)** + %5 = load %Node (%UntypedPtr, %Location*)*, %Node (%UntypedPtr, %Location*)** %4 + %6 = call %Node %5(%UntypedPtr %2, %Location* %3) + ret %Node %6 +} + +; Function Attrs: inlinehint nounwind +define internal %Node @mkBoolLiteral(%AstBuilder* %obj, %Location* %loc, i1 %val) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %val.addr = alloca i1 + store i1 %val, i1* %val.addr + br label %code + +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 24 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load i1, i1* %val.addr + %8 = call %Node @"().601"(%"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* %2, %UntypedPtr %5, %Location* %6, i1 %7) + ret %Node %8 +} + +; Function Attrs: inlinehint nounwind +define internal %Node @"().601"(%"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* %this, %UntypedPtr %p1, %Location* %p2, i1 %p3) #4 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"** %this.addr + %p1.addr = alloca %UntypedPtr + store %UntypedPtr %p1, %UntypedPtr* %p1.addr + %p2.addr = alloca %Location* + store %Location* %p2, %Location** %p2.addr + %p3.addr = alloca i1 + store i1 %p3, i1* %p3.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"** %this.addr + %2 = load %UntypedPtr, %UntypedPtr* %p1.addr + %3 = load %Location*, %Location** %p2.addr + %4 = load i1, i1* %p3.addr + %5 = bitcast %"FunctionPtr3[Node, UntypedPtr, @Location, Bool]"* %1 to %Node (%UntypedPtr, %Location*, i1)** + %6 = load %Node (%UntypedPtr, %Location*, i1)*, %Node (%UntypedPtr, %Location*, i1)** %5 + %7 = call %Node %6(%UntypedPtr %2, %Location* %3, i1 %4) + ret %Node %7 +} + +; Function Attrs: inlinehint nounwind +define internal %Node @mkIntLiteral(%AstBuilder* %obj, %Location* %loc, i32 %val) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %val.addr = alloca i32 + store i32 %val, i32* %val.addr + br label %code + +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 25 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load i32, i32* %val.addr + %8 = call %Node @"().602"(%"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* %2, %UntypedPtr %5, %Location* %6, i32 %7) + ret %Node %8 +} + +; Function Attrs: inlinehint nounwind +define internal %Node @"().602"(%"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* %this, %UntypedPtr %p1, %Location* %p2, i32 %p3) #4 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"** %this.addr + %p1.addr = alloca %UntypedPtr + store %UntypedPtr %p1, %UntypedPtr* %p1.addr + %p2.addr = alloca %Location* + store %Location* %p2, %Location** %p2.addr + %p3.addr = alloca i32 + store i32 %p3, i32* %p3.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"** %this.addr + %2 = load %UntypedPtr, %UntypedPtr* %p1.addr + %3 = load %Location*, %Location** %p2.addr + %4 = load i32, i32* %p3.addr + %5 = bitcast %"FunctionPtr3[Node, UntypedPtr, @Location, Int]"* %1 to %Node (%UntypedPtr, %Location*, i32)** + %6 = load %Node (%UntypedPtr, %Location*, i32)*, %Node (%UntypedPtr, %Location*, i32)** %5 + %7 = call %Node %6(%UntypedPtr %2, %Location* %3, i32 %4) + ret %Node %7 +} + +; Function Attrs: inlinehint nounwind +define internal %Node @mkUIntLiteral(%AstBuilder* %obj, %Location* %loc, i32 %val) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %val.addr = alloca i32 + store i32 %val, i32* %val.addr + br label %code + +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 26 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load i32, i32* %val.addr + %8 = call %Node @"().603"(%"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* %2, %UntypedPtr %5, %Location* %6, i32 %7) + ret %Node %8 +} + +; Function Attrs: inlinehint nounwind +define internal %Node @"().603"(%"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* %this, %UntypedPtr %p1, %Location* %p2, i32 %p3) #4 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"** %this.addr + %p1.addr = alloca %UntypedPtr + store %UntypedPtr %p1, %UntypedPtr* %p1.addr + %p2.addr = alloca %Location* + store %Location* %p2, %Location** %p2.addr + %p3.addr = alloca i32 + store i32 %p3, i32* %p3.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"** %this.addr + %2 = load %UntypedPtr, %UntypedPtr* %p1.addr + %3 = load %Location*, %Location** %p2.addr + %4 = load i32, i32* %p3.addr + %5 = bitcast %"FunctionPtr3[Node, UntypedPtr, @Location, UInt]"* %1 to %Node (%UntypedPtr, %Location*, i32)** + %6 = load %Node (%UntypedPtr, %Location*, i32)*, %Node (%UntypedPtr, %Location*, i32)** %5 + %7 = call %Node %6(%UntypedPtr %2, %Location* %3, i32 %4) + ret %Node %7 +} + +; Function Attrs: inlinehint nounwind +define internal %Node @mkLongLiteral(%AstBuilder* %obj, %Location* %loc, i64 %val) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %val.addr = alloca i64 + store i64 %val, i64* %val.addr + br label %code + +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 27 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load i64, i64* %val.addr + %8 = call %Node @"().604"(%"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* %2, %UntypedPtr %5, %Location* %6, i64 %7) + ret %Node %8 +} + +; Function Attrs: inlinehint nounwind +define internal %Node @"().604"(%"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* %this, %UntypedPtr %p1, %Location* %p2, i64 %p3) #4 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"** %this.addr + %p1.addr = alloca %UntypedPtr + store %UntypedPtr %p1, %UntypedPtr* %p1.addr + %p2.addr = alloca %Location* + store %Location* %p2, %Location** %p2.addr + %p3.addr = alloca i64 + store i64 %p3, i64* %p3.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"** %this.addr + %2 = load %UntypedPtr, %UntypedPtr* %p1.addr + %3 = load %Location*, %Location** %p2.addr + %4 = load i64, i64* %p3.addr + %5 = bitcast %"FunctionPtr3[Node, UntypedPtr, @Location, Long]"* %1 to %Node (%UntypedPtr, %Location*, i64)** + %6 = load %Node (%UntypedPtr, %Location*, i64)*, %Node (%UntypedPtr, %Location*, i64)** %5 + %7 = call %Node %6(%UntypedPtr %2, %Location* %3, i64 %4) + ret %Node %7 +} + +; Function Attrs: inlinehint nounwind +define internal %Node @mkULongLiteral(%AstBuilder* %obj, %Location* %loc, i64 %val) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %val.addr = alloca i64 + store i64 %val, i64* %val.addr + br label %code + +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 28 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load i64, i64* %val.addr + %8 = call %Node @"().605"(%"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* %2, %UntypedPtr %5, %Location* %6, i64 %7) + ret %Node %8 +} + +; Function Attrs: inlinehint nounwind +define internal %Node @"().605"(%"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* %this, %UntypedPtr %p1, %Location* %p2, i64 %p3) #4 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"** %this.addr + %p1.addr = alloca %UntypedPtr + store %UntypedPtr %p1, %UntypedPtr* %p1.addr + %p2.addr = alloca %Location* + store %Location* %p2, %Location** %p2.addr + %p3.addr = alloca i64 + store i64 %p3, i64* %p3.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"** %this.addr + %2 = load %UntypedPtr, %UntypedPtr* %p1.addr + %3 = load %Location*, %Location** %p2.addr + %4 = load i64, i64* %p3.addr + %5 = bitcast %"FunctionPtr3[Node, UntypedPtr, @Location, ULong]"* %1 to %Node (%UntypedPtr, %Location*, i64)** + %6 = load %Node (%UntypedPtr, %Location*, i64)*, %Node (%UntypedPtr, %Location*, i64)** %5 + %7 = call %Node %6(%UntypedPtr %2, %Location* %3, i64 %4) + ret %Node %7 +} + +; Function Attrs: inlinehint nounwind +define internal %Node @mkFloatLiteral(%AstBuilder* %obj, %Location* %loc, float %val) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %val.addr = alloca float + store float %val, float* %val.addr + br label %code + +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 29 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load float, float* %val.addr + %8 = call %Node @"().606"(%"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* %2, %UntypedPtr %5, %Location* %6, float %7) + ret %Node %8 +} + +; Function Attrs: inlinehint nounwind +define internal %Node @"().606"(%"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* %this, %UntypedPtr %p1, %Location* %p2, float %p3) #4 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"** %this.addr + %p1.addr = alloca %UntypedPtr + store %UntypedPtr %p1, %UntypedPtr* %p1.addr + %p2.addr = alloca %Location* + store %Location* %p2, %Location** %p2.addr + %p3.addr = alloca float + store float %p3, float* %p3.addr + br label %code -declare %Node @comp_parser_mkParenthesisExpr(%Node) +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"** %this.addr + %2 = load %UntypedPtr, %UntypedPtr* %p1.addr + %3 = load %Location*, %Location** %p2.addr + %4 = load float, float* %p3.addr + %5 = bitcast %"FunctionPtr3[Node, UntypedPtr, @Location, Float]"* %1 to %Node (%UntypedPtr, %Location*, float)** + %6 = load %Node (%UntypedPtr, %Location*, float)*, %Node (%UntypedPtr, %Location*, float)** %5 + %7 = call %Node %6(%UntypedPtr %2, %Location* %3, float %4) + ret %Node %7 +} -declare %Node @comp_parser_mkNullLiteral(%Location*) +; Function Attrs: inlinehint nounwind +define internal %Node @mkDoubleLiteral(%AstBuilder* %obj, %Location* %loc, double %val) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %val.addr = alloca double + store double %val, double* %val.addr + br label %code -declare %Node @comp_parser_mkBoolLiteral(%Location*, i1) +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 30 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load double, double* %val.addr + %8 = call %Node @"().607"(%"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* %2, %UntypedPtr %5, %Location* %6, double %7) + ret %Node %8 +} -declare %Node @comp_parser_mkIntLiteral(%Location*, i32) +; Function Attrs: inlinehint nounwind +define internal %Node @"().607"(%"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* %this, %UntypedPtr %p1, %Location* %p2, double %p3) #4 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"** %this.addr + %p1.addr = alloca %UntypedPtr + store %UntypedPtr %p1, %UntypedPtr* %p1.addr + %p2.addr = alloca %Location* + store %Location* %p2, %Location** %p2.addr + %p3.addr = alloca double + store double %p3, double* %p3.addr + br label %code -declare %Node @comp_parser_mkUIntLiteral(%Location*, i32) +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"** %this.addr + %2 = load %UntypedPtr, %UntypedPtr* %p1.addr + %3 = load %Location*, %Location** %p2.addr + %4 = load double, double* %p3.addr + %5 = bitcast %"FunctionPtr3[Node, UntypedPtr, @Location, Double]"* %1 to %Node (%UntypedPtr, %Location*, double)** + %6 = load %Node (%UntypedPtr, %Location*, double)*, %Node (%UntypedPtr, %Location*, double)** %5 + %7 = call %Node %6(%UntypedPtr %2, %Location* %3, double %4) + ret %Node %7 +} -declare %Node @comp_parser_mkLongLiteral(%Location*, i64) +; Function Attrs: inlinehint nounwind +define internal %Node @mkCharLiteral(%AstBuilder* %obj, %Location* %loc, i8 %val) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %val.addr = alloca i8 + store i8 %val, i8* %val.addr + br label %code -declare %Node @comp_parser_mkULongLiteral(%Location*, i64) +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 31 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load i8, i8* %val.addr + %8 = call %Node @"().608"(%"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* %2, %UntypedPtr %5, %Location* %6, i8 %7) + ret %Node %8 +} -declare %Node @comp_parser_mkFloatLiteral(%Location*, float) +; Function Attrs: inlinehint nounwind +define internal %Node @"().608"(%"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* %this, %UntypedPtr %p1, %Location* %p2, i8 %p3) #4 { + %this.addr = alloca %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* + store %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* %this, %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"** %this.addr + %p1.addr = alloca %UntypedPtr + store %UntypedPtr %p1, %UntypedPtr* %p1.addr + %p2.addr = alloca %Location* + store %Location* %p2, %Location** %p2.addr + %p3.addr = alloca i8 + store i8 %p3, i8* %p3.addr + br label %code -declare %Node @comp_parser_mkDoubleLiteral(%Location*, double) +code: ; preds = %0 + %1 = load %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"*, %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"** %this.addr + %2 = load %UntypedPtr, %UntypedPtr* %p1.addr + %3 = load %Location*, %Location** %p2.addr + %4 = load i8, i8* %p3.addr + %5 = bitcast %"FunctionPtr3[Node, UntypedPtr, @Location, Char]"* %1 to %Node (%UntypedPtr, %Location*, i8)** + %6 = load %Node (%UntypedPtr, %Location*, i8)*, %Node (%UntypedPtr, %Location*, i8)** %5 + %7 = call %Node %6(%UntypedPtr %2, %Location* %3, i8 %4) + ret %Node %7 +} -declare %Node @comp_parser_mkCharLiteral(%Location*, i8) +; Function Attrs: inlinehint nounwind +define internal %Node @mkStringLiteral(%AstBuilder* %obj, %Location* %loc, %StringRef %data) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %data.addr = alloca %StringRef + store %StringRef %data, %StringRef* %data.addr + br label %code -declare %Node @comp_parser_mkStringLiteral(%Location*, %StringRef) +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 32 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load %StringRef, %StringRef* %data.addr + %8 = call %Node @"().553"(%"FunctionPtr3[Node, UntypedPtr, @Location, StringRef]"* %2, %UntypedPtr %5, %Location* %6, %StringRef %7) + ret %Node %8 +} ; Function Attrs: inlinehint nounwind define internal i1 @isNull(%Node %n) #4 { @@ -23435,109 +27811,111 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @parseExprListOpt(%Node* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this) #4 { - %_result.addr = alloca %Node* - store %Node* %_result, %Node** %_result.addr - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal %Node @parseExprListOpt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %res = alloca %Node %expr = alloca %Node %"$tmpForRef" = alloca %Node %tmp.this = alloca %TokenType - %"$tmpC" = alloca %Node %"$tmpForRef1" = alloca %Node + %"$tmpForRef2" = alloca %Node br label %code code: ; preds = %0 - call void @ctor.432(%Node* %res) - call void @ctor.432(%Node* %expr) + call void @ctor.556(%Node* %res) + call void @ctor.556(%Node* %expr) br label %if_block if_block: ; preds = %code - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %2 = call i1 @parseExprOpt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %Node* %expr, i1 false) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %2 = call i1 @parseExprOpt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, %Node* %expr, i1 false) %3 = xor i1 true, %2 br i1 %3, label %if_then, label %if_end if_then: ; preds = %if_block - %4 = load %Node*, %Node** %_result.addr - call void @ctor.428(%Node* %4, %Node* %res) - ret void + %4 = load %Node, %Node* %res + ret %Node %4 if_end: ; preds = %dumy_block, %if_block - %5 = load %Node, %Node* %res - %6 = load %Node, %Node* %expr - %7 = call %Node @comp_parser_addToNodeList(%Node %5, %Node %6) - store %Node %7, %Node* %"$tmpForRef" - call void @"=.430"(%Node* %res, %Node* %"$tmpForRef") + %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %5, i32 0, i32 3 + %7 = load %Node, %Node* %res + %8 = load %Node, %Node* %expr + %9 = call %Node @addToNodeList(%AstBuilder* %6, %Node %7, %Node %8) + store %Node %9, %Node* %"$tmpForRef" + call void @"=.554"(%Node* %res, %Node* %"$tmpForRef") br label %while_block dumy_block: ; No predecessors! br label %if_end while_block: ; preds = %while_step, %if_end - %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 32) - %9 = load %TokenType, %TokenType* %tmp.this - %10 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8, %TokenType %9) - br i1 %10, label %while_body, label %while_end + %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 32) + %11 = load %TokenType, %TokenType* %tmp.this + %12 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %10, %TokenType %11) + br i1 %12, label %while_body, label %while_end while_body: ; preds = %while_block - %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseExpr(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11, i1 true) - call void @"=.430"(%Node* %expr, %Node* %"$tmpC") - %12 = load %Node, %Node* %res - %13 = load %Node, %Node* %expr - %14 = call %Node @comp_parser_addToNodeList(%Node %12, %Node %13) + %13 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %14 = call %Node @parseExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %13, i1 true) store %Node %14, %Node* %"$tmpForRef1" - call void @"=.430"(%Node* %res, %Node* %"$tmpForRef1") + call void @"=.554"(%Node* %expr, %Node* %"$tmpForRef1") + %15 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %16 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %15, i32 0, i32 3 + %17 = load %Node, %Node* %res + %18 = load %Node, %Node* %expr + %19 = call %Node @addToNodeList(%AstBuilder* %16, %Node %17, %Node %18) + store %Node %19, %Node* %"$tmpForRef2" + call void @"=.554"(%Node* %res, %Node* %"$tmpForRef2") br label %while_step while_step: ; preds = %while_body br label %while_block while_end: ; preds = %while_block - %15 = load %Node*, %Node** %_result.addr - call void @ctor.428(%Node* %15, %Node* %res) - ret void + %20 = load %Node, %Node* %res + ret %Node %20 } ; Function Attrs: inlinehint nounwind -define internal i1 @parseExprOpt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %Node* %res, i1 %allowSemicolons) #4 { - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal i1 @parseExprOpt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %Node* %res, i1 %allowSemicolons) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %res.addr = alloca %Node* store %Node* %res, %Node** %res.addr %allowSemicolons.addr = alloca i1 store i1 %allowSemicolons, i1* %allowSemicolons.addr - %"$tmpC" = alloca %Node + %"$tmpForRef" = alloca %Node br label %code code: ; preds = %0 br label %if_block if_block: ; preds = %code - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %2 = call i1 @nextIsExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, i1 true) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %2 = call i1 @nextIsExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, i1 true) br i1 %2, label %if_then, label %if_end if_then: ; preds = %if_block %3 = load %Node*, %Node** %res.addr - %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseExpr(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %4, i1 true) - call void @"=.430"(%Node* %3, %Node* %"$tmpC") + %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %5 = call %Node @parseExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %4, i1 true) + store %Node %5, %Node* %"$tmpForRef" + call void @"=.554"(%Node* %3, %Node* %"$tmpForRef") br label %if_block1 if_end: ; preds = %dumy_block, %if_block ret i1 false if_block1: ; preds = %if_then - %5 = load i1, i1* %allowSemicolons.addr - br i1 %5, label %if_then2, label %if_end3 + %6 = load i1, i1* %allowSemicolons.addr + br i1 %6, label %if_then2, label %if_end3 if_then2: ; preds = %if_block1 - %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @consumeSemis(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %6) + %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @consumeSemis(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %7) br label %if_end3 if_end3: ; preds = %if_then2, %if_block1 @@ -23548,9 +27926,9 @@ dumy_block: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal i1 @nextIsExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, i1 %withEqual) #4 { - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal i1 @nextIsExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, i1 %withEqual) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %withEqual.addr = alloca i1 store i1 %withEqual, i1* %withEqual.addr %t = alloca %TokenType @@ -23574,17 +27952,17 @@ define internal i1 @nextIsExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScann br label %code code: ; preds = %0 - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 0 - call void @"pre_*.419"(%Token* %"$tmpC", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %2) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, i32 0, i32 0 + call void @"pre_*.543"(%Token* %"$tmpC", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %2) %3 = getelementptr inbounds %Token, %Token* %"$tmpC", i32 0, i32 1 - call void @ctor.183(%TokenType* %t, %TokenType* %3) - call void @dtor.217(%Token* %"$tmpC") + call void @ctor.203(%TokenType* %t, %TokenType* %3) + call void @dtor.260(%Token* %"$tmpC") br label %if_block if_block: ; preds = %code - call void @ctor.313(%TokenType* %tmp.this, i32 35) - %4 = call i1 @"==.273"(%TokenType* %t, %TokenType* %tmp.this) + call void @ctor.417(%TokenType* %tmp.this, i32 35) + %4 = call i1 @"==.352"(%TokenType* %t, %TokenType* %tmp.this) br i1 %4, label %if_then, label %if_end if_then: ; preds = %if_block @@ -23592,8 +27970,8 @@ if_then: ; preds = %if_block ret i1 %5 if_end: ; preds = %dumy_block, %if_block - call void @ctor.313(%TokenType* %tmp.this40, i32 36) - %6 = call i1 @"==.273"(%TokenType* %t, %TokenType* %tmp.this40) + call void @ctor.417(%TokenType* %tmp.this40, i32 36) + %6 = call i1 @"==.352"(%TokenType* %t, %TokenType* %tmp.this40) br i1 %6, label %cond.true37, label %cond.false38 dumy_block: ; No predecessors! @@ -23603,8 +27981,8 @@ cond.true: ; preds = %cond.end3 br label %cond.end cond.false: ; preds = %cond.end3 - call void @ctor.313(%TokenType* %tmp.this66, i32 45) - %7 = call i1 @"==.273"(%TokenType* %t, %TokenType* %tmp.this66) + call void @ctor.417(%TokenType* %tmp.this66, i32 45) + %7 = call i1 @"==.352"(%TokenType* %t, %TokenType* %tmp.this66) br label %cond.end cond.end: ; preds = %cond.false, %cond.true @@ -23615,8 +27993,8 @@ cond.true1: ; preds = %cond.end6 br label %cond.end3 cond.false2: ; preds = %cond.end6 - call void @ctor.313(%TokenType* %tmp.this64, i32 44) - %8 = call i1 @"==.273"(%TokenType* %t, %TokenType* %tmp.this64) + call void @ctor.417(%TokenType* %tmp.this64, i32 44) + %8 = call i1 @"==.352"(%TokenType* %t, %TokenType* %tmp.this64) br label %cond.end3 cond.end3: ; preds = %cond.false2, %cond.true1 @@ -23627,8 +28005,8 @@ cond.true4: ; preds = %cond.end9 br label %cond.end6 cond.false5: ; preds = %cond.end9 - call void @ctor.313(%TokenType* %tmp.this62, i32 43) - %9 = call i1 @"==.273"(%TokenType* %t, %TokenType* %tmp.this62) + call void @ctor.417(%TokenType* %tmp.this62, i32 43) + %9 = call i1 @"==.352"(%TokenType* %t, %TokenType* %tmp.this62) br label %cond.end6 cond.end6: ; preds = %cond.false5, %cond.true4 @@ -23639,8 +28017,8 @@ cond.true7: ; preds = %cond.end12 br label %cond.end9 cond.false8: ; preds = %cond.end12 - call void @ctor.313(%TokenType* %tmp.this60, i32 42) - %10 = call i1 @"==.273"(%TokenType* %t, %TokenType* %tmp.this60) + call void @ctor.417(%TokenType* %tmp.this60, i32 42) + %10 = call i1 @"==.352"(%TokenType* %t, %TokenType* %tmp.this60) br label %cond.end9 cond.end9: ; preds = %cond.false8, %cond.true7 @@ -23651,8 +28029,8 @@ cond.true10: ; preds = %cond.end15 br label %cond.end12 cond.false11: ; preds = %cond.end15 - call void @ctor.313(%TokenType* %tmp.this58, i32 41) - %11 = call i1 @"==.273"(%TokenType* %t, %TokenType* %tmp.this58) + call void @ctor.417(%TokenType* %tmp.this58, i32 41) + %11 = call i1 @"==.352"(%TokenType* %t, %TokenType* %tmp.this58) br label %cond.end12 cond.end12: ; preds = %cond.false11, %cond.true10 @@ -23663,8 +28041,8 @@ cond.true13: ; preds = %cond.end18 br label %cond.end15 cond.false14: ; preds = %cond.end18 - call void @ctor.313(%TokenType* %tmp.this56, i32 40) - %12 = call i1 @"==.273"(%TokenType* %t, %TokenType* %tmp.this56) + call void @ctor.417(%TokenType* %tmp.this56, i32 40) + %12 = call i1 @"==.352"(%TokenType* %t, %TokenType* %tmp.this56) br label %cond.end15 cond.end15: ; preds = %cond.false14, %cond.true13 @@ -23675,8 +28053,8 @@ cond.true16: ; preds = %cond.end21 br label %cond.end18 cond.false17: ; preds = %cond.end21 - call void @ctor.313(%TokenType* %tmp.this54, i32 39) - %13 = call i1 @"==.273"(%TokenType* %t, %TokenType* %tmp.this54) + call void @ctor.417(%TokenType* %tmp.this54, i32 39) + %13 = call i1 @"==.352"(%TokenType* %t, %TokenType* %tmp.this54) br label %cond.end18 cond.end18: ; preds = %cond.false17, %cond.true16 @@ -23687,8 +28065,8 @@ cond.true19: ; preds = %cond.end24 br label %cond.end21 cond.false20: ; preds = %cond.end24 - call void @ctor.313(%TokenType* %tmp.this52, i32 38) - %14 = call i1 @"==.273"(%TokenType* %t, %TokenType* %tmp.this52) + call void @ctor.417(%TokenType* %tmp.this52, i32 38) + %14 = call i1 @"==.352"(%TokenType* %t, %TokenType* %tmp.this52) br label %cond.end21 cond.end21: ; preds = %cond.false20, %cond.true19 @@ -23699,8 +28077,8 @@ cond.true22: ; preds = %cond.end27 br label %cond.end24 cond.false23: ; preds = %cond.end27 - call void @ctor.313(%TokenType* %tmp.this50, i32 20) - %15 = call i1 @"==.273"(%TokenType* %t, %TokenType* %tmp.this50) + call void @ctor.417(%TokenType* %tmp.this50, i32 20) + %15 = call i1 @"==.352"(%TokenType* %t, %TokenType* %tmp.this50) br label %cond.end24 cond.end24: ; preds = %cond.false23, %cond.true22 @@ -23711,8 +28089,8 @@ cond.true25: ; preds = %cond.end30 br label %cond.end27 cond.false26: ; preds = %cond.end30 - call void @ctor.313(%TokenType* %tmp.this48, i32 22) - %16 = call i1 @"==.273"(%TokenType* %t, %TokenType* %tmp.this48) + call void @ctor.417(%TokenType* %tmp.this48, i32 22) + %16 = call i1 @"==.352"(%TokenType* %t, %TokenType* %tmp.this48) br label %cond.end27 cond.end27: ; preds = %cond.false26, %cond.true25 @@ -23723,8 +28101,8 @@ cond.true28: ; preds = %cond.end33 br label %cond.end30 cond.false29: ; preds = %cond.end33 - call void @ctor.313(%TokenType* %tmp.this46, i32 21) - %17 = call i1 @"==.273"(%TokenType* %t, %TokenType* %tmp.this46) + call void @ctor.417(%TokenType* %tmp.this46, i32 21) + %17 = call i1 @"==.352"(%TokenType* %t, %TokenType* %tmp.this46) br label %cond.end30 cond.end30: ; preds = %cond.false29, %cond.true28 @@ -23735,8 +28113,8 @@ cond.true31: ; preds = %cond.end36 br label %cond.end33 cond.false32: ; preds = %cond.end36 - call void @ctor.313(%TokenType* %tmp.this44, i32 28) - %18 = call i1 @"==.273"(%TokenType* %t, %TokenType* %tmp.this44) + call void @ctor.417(%TokenType* %tmp.this44, i32 28) + %18 = call i1 @"==.352"(%TokenType* %t, %TokenType* %tmp.this44) br label %cond.end33 cond.end33: ; preds = %cond.false32, %cond.true31 @@ -23747,8 +28125,8 @@ cond.true34: ; preds = %cond.end39 br label %cond.end36 cond.false35: ; preds = %cond.end39 - call void @ctor.313(%TokenType* %tmp.this42, i32 34) - %19 = call i1 @"==.273"(%TokenType* %t, %TokenType* %tmp.this42) + call void @ctor.417(%TokenType* %tmp.this42, i32 34) + %19 = call i1 @"==.352"(%TokenType* %t, %TokenType* %tmp.this42) br label %cond.end36 cond.end36: ; preds = %cond.false35, %cond.true34 @@ -23759,8 +28137,8 @@ cond.true37: ; preds = %if_end br label %cond.end39 cond.false38: ; preds = %if_end - call void @ctor.313(%TokenType* %tmp.this41, i32 37) - %20 = call i1 @"==.273"(%TokenType* %t, %TokenType* %tmp.this41) + call void @ctor.417(%TokenType* %tmp.this41, i32 37) + %20 = call i1 @"==.352"(%TokenType* %t, %TokenType* %tmp.this41) br label %cond.end39 cond.end39: ; preds = %cond.false38, %cond.true37 @@ -24023,16 +28401,88 @@ cond_destruct_end149: ; preds = %cond_destruct_alt21 unreachable } -declare %Node @comp_parser_mkFunAppExpr(%Location*, %Node, %Node) +; Function Attrs: inlinehint nounwind +define internal %Node @mkFunAppExpr(%AstBuilder* %obj, %Location* %loc, %Node %base, %Node %args) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %base.addr = alloca %Node + store %Node %base, %Node* %base.addr + %args.addr = alloca %Node + store %Node %args, %Node* %args.addr + br label %code + +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 21 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load %Node, %Node* %base.addr + %8 = load %Node, %Node* %args.addr + %9 = call %Node @"().609"(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %2, %UntypedPtr %5, %Location* %6, %Node %7, %Node %8) + ret %Node %9 +} + +; Function Attrs: inlinehint nounwind +define internal %Node @"().609"(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %this, %UntypedPtr %p1, %Location* %p2, %Node %p3, %Node %p4) #4 { + %this.addr = alloca %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* + store %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %this, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"** %this.addr + %p1.addr = alloca %UntypedPtr + store %UntypedPtr %p1, %UntypedPtr* %p1.addr + %p2.addr = alloca %Location* + store %Location* %p2, %Location** %p2.addr + %p3.addr = alloca %Node + store %Node %p3, %Node* %p3.addr + %p4.addr = alloca %Node + store %Node %p4, %Node* %p4.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"*, %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"** %this.addr + %2 = load %UntypedPtr, %UntypedPtr* %p1.addr + %3 = load %Location*, %Location** %p2.addr + %4 = load %Node, %Node* %p3.addr + %5 = load %Node, %Node* %p4.addr + %6 = bitcast %"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %1 to %Node (%UntypedPtr, %Location*, %Node, %Node)** + %7 = load %Node (%UntypedPtr, %Location*, %Node, %Node)*, %Node (%UntypedPtr, %Location*, %Node, %Node)** %6 + %8 = call %Node %7(%UntypedPtr %2, %Location* %3, %Node %4, %Node %5) + ret %Node %8 +} + +; Function Attrs: inlinehint nounwind +define internal %Node @mkDotExpr(%AstBuilder* %obj, %Location* %loc, %Node %base, %StringRef %id) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %base.addr = alloca %Node + store %Node %base, %Node* %base.addr + %id.addr = alloca %StringRef + store %StringRef %id, %StringRef* %id.addr + br label %code -declare %Node @comp_parser_mkDotExpr(%Location*, %Node, %StringRef) +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 20 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load %Node, %Node* %base.addr + %8 = load %StringRef, %StringRef* %id.addr + %9 = call %Node @"().555"(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %2, %UntypedPtr %5, %Location* %6, %Node %7, %StringRef %8) + ret %Node %9 +} ; Function Attrs: inlinehint nounwind -define internal void @parseIdOrOper(%String* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, i1 %withEqual) #4 { +define internal void @parseIdOrOper(%String* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, i1 %withEqual) #4 { %_result.addr = alloca %String* store %String* %_result, %String** %_result.addr - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %withEqual.addr = alloca i1 store i1 %withEqual, i1* %withEqual.addr %tmp.this = alloca %TokenType @@ -24050,62 +28500,62 @@ code: ; preds = %0 br label %if_block if_block: ; preds = %code - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 36) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 36) %2 = load %TokenType, %TokenType* %tmp.this - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_else if_then: ; preds = %if_block %4 = load %String*, %String** %_result.addr - %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 1 + %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %5, i32 0, i32 1 %7 = getelementptr inbounds %Token, %Token* %6, i32 0, i32 2 - call void @ctor.184(%String* %4, %String* %7) + call void @ctor.189(%String* %4, %String* %7) ret void if_else: ; preds = %if_block br label %if_block1 if_end: ; preds = %if_end4, %dumy_block - %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr + %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %9 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef15, i32 0, i32 0 %10 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef15, i32 0, i32 1 - store i8* getelementptr inbounds ([26 x i8], [26 x i8]* @str.99, i32 0, i32 0), i8** %9 - store i8* getelementptr inbounds ([26 x i8], [26 x i8]* @str.99, i32 0, i32 25), i8** %10 + store i8* getelementptr inbounds ([26 x i8], [26 x i8]* @str.100, i32 0, i32 0), i8** %9 + store i8* getelementptr inbounds ([26 x i8], [26 x i8]* @str.100, i32 0, i32 25), i8** %10 %11 = load %StringRef, %StringRef* %tmp.StringRef15 - %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %13 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %12, i32 0, i32 0 - call void @"pre_*.419"(%Token* %"$tmpC16", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %13) + %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %13 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %12, i32 0, i32 0 + call void @"pre_*.543"(%Token* %"$tmpC16", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %13) %14 = getelementptr inbounds %Token, %Token* %"$tmpC16", i32 0, i32 1 %15 = load %TokenType, %TokenType* %14 %16 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef17, i32 0, i32 0 %17 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef17, i32 0, i32 1 - store i8* getelementptr inbounds ([35 x i8], [35 x i8]* @str.100, i32 0, i32 0), i8** %16 - store i8* getelementptr inbounds ([35 x i8], [35 x i8]* @str.100, i32 0, i32 34), i8** %17 + store i8* getelementptr inbounds ([35 x i8], [35 x i8]* @str.101, i32 0, i32 0), i8** %16 + store i8* getelementptr inbounds ([35 x i8], [35 x i8]* @str.101, i32 0, i32 34), i8** %17 %18 = load %StringRef, %StringRef* %tmp.StringRef17 - call void @toString.471(%String* %"$tmpC", %StringRef %11, %TokenType %15, %StringRef %18) - call void @reportError.423(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8, %String* %"$tmpC") - call void @dtor.218(%String* %"$tmpC") - call void @dtor.217(%Token* %"$tmpC16") + call void @toString.597(%String* %"$tmpC", %StringRef %11, %TokenType %15, %StringRef %18) + call void @reportError.548(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %8, %String* %"$tmpC") + call void @dtor.261(%String* %"$tmpC") + call void @dtor.260(%Token* %"$tmpC16") ret void dumy_block: ; No predecessors! br label %if_end if_block1: ; preds = %if_else - %19 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this5, i32 37) + %19 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this5, i32 37) %20 = load %TokenType, %TokenType* %tmp.this5 - %21 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %19, %TokenType %20) + %21 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %19, %TokenType %20) br i1 %21, label %if_then2, label %if_else3 if_then2: ; preds = %if_block1 %22 = load %String*, %String** %_result.addr - %23 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %24 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %23, i32 0, i32 1 + %23 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %24 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %23, i32 0, i32 1 %25 = getelementptr inbounds %Token, %Token* %24, i32 0, i32 2 - call void @ctor.184(%String* %22, %String* %25) + call void @ctor.189(%String* %22, %String* %25) ret void if_else3: ; preds = %if_block1 @@ -24125,21 +28575,21 @@ if_then8: ; preds = %cond.end %27 = load %String*, %String** %_result.addr %28 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 0 %29 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 1 - store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.98, i32 0, i32 0), i8** %28 - store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.98, i32 0, i32 1), i8** %29 + store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.99, i32 0, i32 0), i8** %28 + store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.99, i32 0, i32 1), i8** %29 %30 = load %StringRef, %StringRef* %tmp.StringRef store %StringRef %30, %StringRef* %"$tmpForRef" - call void @ctor.364(%String* %27, %StringRef* %"$tmpForRef") + call void @ctor.471(%String* %27, %StringRef* %"$tmpForRef") br i1 %26, label %cond_destruct_alt1, label %cond_destruct_alt2 if_end9: ; preds = %dumy_block11, %cond.end br i1 %26, label %cond_destruct_alt112, label %cond_destruct_alt213 cond.true: ; preds = %if_block7 - %31 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this10, i32 35) + %31 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this10, i32 35) %32 = load %TokenType, %TokenType* %tmp.this10 - %33 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %31, %TokenType %32) + %33 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %31, %TokenType %32) br label %cond.end cond.false: ; preds = %if_block7 @@ -24171,14 +28621,63 @@ cond_destruct_end14: ; preds = %cond_destruct_alt21 br label %if_end4 } -declare %Node @comp_parser_mkPrefixOp(%Location*, %StringRef, %Node) +; Function Attrs: inlinehint nounwind +define internal %Node @mkPrefixOp(%AstBuilder* %obj, %Location* %loc, %StringRef %op, %Node %base) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %op.addr = alloca %StringRef + store %StringRef %op, %StringRef* %op.addr + %base.addr = alloca %Node + store %Node %base, %Node* %base.addr + br label %code + +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 16 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load %StringRef, %StringRef* %op.addr + %8 = load %Node, %Node* %base.addr + %9 = call %Node @"().610"(%"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %2, %UntypedPtr %5, %Location* %6, %StringRef %7, %Node %8) + ret %Node %9 +} + +; Function Attrs: inlinehint nounwind +define internal %Node @"().610"(%"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %this, %UntypedPtr %p1, %Location* %p2, %StringRef %p3, %Node %p4) #4 { + %this.addr = alloca %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* + store %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %this, %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"** %this.addr + %p1.addr = alloca %UntypedPtr + store %UntypedPtr %p1, %UntypedPtr* %p1.addr + %p2.addr = alloca %Location* + store %Location* %p2, %Location** %p2.addr + %p3.addr = alloca %StringRef + store %StringRef %p3, %StringRef* %p3.addr + %p4.addr = alloca %Node + store %Node %p4, %Node* %p4.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"*, %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"** %this.addr + %2 = load %UntypedPtr, %UntypedPtr* %p1.addr + %3 = load %Location*, %Location** %p2.addr + %4 = load %StringRef, %StringRef* %p3.addr + %5 = load %Node, %Node* %p4.addr + %6 = bitcast %"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %1 to %Node (%UntypedPtr, %Location*, %StringRef, %Node)** + %7 = load %Node (%UntypedPtr, %Location*, %StringRef, %Node)*, %Node (%UntypedPtr, %Location*, %StringRef, %Node)** %6 + %8 = call %Node %7(%UntypedPtr %2, %Location* %3, %StringRef %4, %Node %5) + ret %Node %8 +} ; Function Attrs: inlinehint nounwind -define internal void @parseIdOrOperOpt(%String* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, i1 %withEqual) #4 { +define internal void @parseIdOrOperOpt(%String* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, i1 %withEqual) #4 { %_result.addr = alloca %String* store %String* %_result, %String** %_result.addr - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %withEqual.addr = alloca i1 store i1 %withEqual, i1* %withEqual.addr %tmp.this = alloca %TokenType @@ -24192,18 +28691,18 @@ code: ; preds = %0 br label %if_block if_block: ; preds = %code - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 36) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 36) %2 = load %TokenType, %TokenType* %tmp.this - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_else if_then: ; preds = %if_block %4 = load %String*, %String** %_result.addr - %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 1 + %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %5, i32 0, i32 1 %7 = getelementptr inbounds %Token, %Token* %6, i32 0, i32 2 - call void @ctor.184(%String* %4, %String* %7) + call void @ctor.189(%String* %4, %String* %7) ret void if_else: ; preds = %if_block @@ -24216,18 +28715,18 @@ dumy_block: ; No predecessors! br label %if_end if_block1: ; preds = %if_else - %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this5, i32 37) + %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this5, i32 37) %9 = load %TokenType, %TokenType* %tmp.this5 - %10 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8, %TokenType %9) + %10 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %8, %TokenType %9) br i1 %10, label %if_then2, label %if_else3 if_then2: ; preds = %if_block1 %11 = load %String*, %String** %_result.addr - %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %13 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %12, i32 0, i32 1 + %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %13 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %12, i32 0, i32 1 %14 = getelementptr inbounds %Token, %Token* %13, i32 0, i32 2 - call void @ctor.184(%String* %11, %String* %14) + call void @ctor.189(%String* %11, %String* %14) ret void if_else3: ; preds = %if_block1 @@ -24247,26 +28746,26 @@ if_then8: ; preds = %cond.end %16 = load %String*, %String** %_result.addr %17 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 0 %18 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 1 - store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.101, i32 0, i32 0), i8** %17 - store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.101, i32 0, i32 1), i8** %18 + store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.102, i32 0, i32 0), i8** %17 + store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.102, i32 0, i32 1), i8** %18 %19 = load %StringRef, %StringRef* %tmp.StringRef store %StringRef %19, %StringRef* %"$tmpForRef" - call void @ctor.364(%String* %16, %StringRef* %"$tmpForRef") + call void @ctor.471(%String* %16, %StringRef* %"$tmpForRef") br i1 %15, label %cond_destruct_alt1, label %cond_destruct_alt2 if_else9: ; preds = %cond.end %20 = load %String*, %String** %_result.addr - call void @ctor.158(%String* %20) + call void @ctor.137(%String* %20) br i1 %15, label %cond_destruct_alt113, label %cond_destruct_alt214 if_end10: ; preds = %dumy_block16, %dumy_block12 br i1 %15, label %cond_destruct_alt117, label %cond_destruct_alt218 cond.true: ; preds = %if_block7 - %21 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this11, i32 35) + %21 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this11, i32 35) %22 = load %TokenType, %TokenType* %tmp.this11 - %23 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %21, %TokenType %22) + %23 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %21, %TokenType %22) br label %cond.end cond.false: ; preds = %if_block7 @@ -24310,18 +28809,96 @@ cond_destruct_end19: ; preds = %cond_destruct_alt21 br label %if_end4 } -declare %Node @comp_parser_mkInfixOp(%Location*, %Node, %StringRef, %Node) +; Function Attrs: inlinehint nounwind +define internal %Node @mkInfixOp(%AstBuilder* %obj, %Location* %loc, %Node %lhs, %StringRef %op, %Node %rhs) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %lhs.addr = alloca %Node + store %Node %lhs, %Node* %lhs.addr + %op.addr = alloca %StringRef + store %StringRef %op, %StringRef* %op.addr + %rhs.addr = alloca %Node + store %Node %rhs, %Node* %rhs.addr + br label %code + +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 15 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load %Node, %Node* %lhs.addr + %8 = load %StringRef, %StringRef* %op.addr + %9 = load %Node, %Node* %rhs.addr + %10 = call %Node @"().611"(%"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* %2, %UntypedPtr %5, %Location* %6, %Node %7, %StringRef %8, %Node %9) + ret %Node %10 +} + +; Function Attrs: inlinehint nounwind +define internal %Node @"().611"(%"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* %this, %UntypedPtr %p1, %Location* %p2, %Node %p3, %StringRef %p4, %Node %p5) #4 { + %this.addr = alloca %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* + store %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* %this, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"** %this.addr + %p1.addr = alloca %UntypedPtr + store %UntypedPtr %p1, %UntypedPtr* %p1.addr + %p2.addr = alloca %Location* + store %Location* %p2, %Location** %p2.addr + %p3.addr = alloca %Node + store %Node %p3, %Node* %p3.addr + %p4.addr = alloca %StringRef + store %StringRef %p4, %StringRef* %p4.addr + %p5.addr = alloca %Node + store %Node %p5, %Node* %p5.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"*, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"** %this.addr + %2 = load %UntypedPtr, %UntypedPtr* %p1.addr + %3 = load %Location*, %Location** %p2.addr + %4 = load %Node, %Node* %p3.addr + %5 = load %StringRef, %StringRef* %p4.addr + %6 = load %Node, %Node* %p5.addr + %7 = bitcast %"FunctionPtr5[Node, UntypedPtr, @Location, Node, StringRef, Node]"* %1 to %Node (%UntypedPtr, %Location*, %Node, %StringRef, %Node)** + %8 = load %Node (%UntypedPtr, %Location*, %Node, %StringRef, %Node)*, %Node (%UntypedPtr, %Location*, %Node, %StringRef, %Node)** %7 + %9 = call %Node %8(%UntypedPtr %2, %Location* %3, %Node %4, %StringRef %5, %Node %6) + ret %Node %9 +} + +; Function Attrs: inlinehint nounwind +define internal %Node @mkPostfixOp(%AstBuilder* %obj, %Location* %loc, %Node %base, %StringRef %op) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %base.addr = alloca %Node + store %Node %base, %Node* %base.addr + %op.addr = alloca %StringRef + store %StringRef %op, %StringRef* %op.addr + br label %code -declare %Node @comp_parser_mkPostfixOp(%Location*, %Node, %StringRef) +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 14 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load %Node, %Node* %base.addr + %8 = load %StringRef, %StringRef* %op.addr + %9 = call %Node @"().555"(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, StringRef]"* %2, %UntypedPtr %5, %Location* %6, %Node %7, %StringRef %8) + ret %Node %9 +} ; Function Attrs: inlinehint nounwind -define internal i1 @parseImportLineOpt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %Node* %res) #4 { - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal i1 @parseImportLineOpt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %Node* %res) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %res.addr = alloca %Node* store %Node* %res, %Node** %res.addr %tmp.this = alloca %TokenType - %"$tmpC" = alloca %Node + %"$tmpForRef" = alloca %Node %tmp.this1 = alloca %TokenType br label %code @@ -24329,21 +28906,22 @@ code: ; preds = %0 br label %if_block if_block: ; preds = %code - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 3) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 3) %2 = load %TokenType, %TokenType* %tmp.this - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_end if_then: ; preds = %if_block %4 = load %Node*, %Node** %res.addr - %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseImportNames(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5) - call void @"=.430"(%Node* %4, %Node* %"$tmpC") - %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this1, i32 31) - %7 = load %TokenType, %TokenType* %tmp.this1 - %8 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %6, %TokenType %7) + %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %6 = call %Node @parseImportNames(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %5) + store %Node %6, %Node* %"$tmpForRef" + call void @"=.554"(%Node* %4, %Node* %"$tmpForRef") + %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this1, i32 31) + %8 = load %TokenType, %TokenType* %tmp.this1 + %9 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %7, %TokenType %8) ret i1 true if_end: ; preds = %dumy_block, %if_block @@ -24354,104 +28932,103 @@ dumy_block: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal void @parseImportNames(%Node* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this) #4 { - %_result.addr = alloca %Node* - store %Node* %_result, %Node** %_result.addr - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal %Node @parseImportNames(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %res = alloca %Node %"$tmpForRef" = alloca %Node - %"$tmpC" = alloca %Node %tmp.this = alloca %TokenType %"$tmpForRef1" = alloca %Node - %"$tmpC2" = alloca %Node br label %code code: ; preds = %0 - call void @ctor.432(%Node* %res) - %1 = load %Node, %Node* %res - %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseImportName(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2) - %3 = load %Node, %Node* %"$tmpC" - %4 = call %Node @comp_parser_addToNodeList(%Node %1, %Node %3) - store %Node %4, %Node* %"$tmpForRef" - call void @"=.430"(%Node* %res, %Node* %"$tmpForRef") + call void @ctor.556(%Node* %res) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %2 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, i32 0, i32 3 + %3 = load %Node, %Node* %res + %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %5 = call %Node @parseImportName(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %4) + %6 = call %Node @addToNodeList(%AstBuilder* %2, %Node %3, %Node %5) + store %Node %6, %Node* %"$tmpForRef" + call void @"=.554"(%Node* %res, %Node* %"$tmpForRef") br label %while_block while_block: ; preds = %while_step, %code - %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 32) - %6 = load %TokenType, %TokenType* %tmp.this - %7 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, %TokenType %6) - br i1 %7, label %while_body, label %while_end + %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 32) + %8 = load %TokenType, %TokenType* %tmp.this + %9 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %7, %TokenType %8) + br i1 %9, label %while_body, label %while_end while_body: ; preds = %while_block - %8 = load %Node, %Node* %res - %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseImportName(%Node* %"$tmpC2", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9) - %10 = load %Node, %Node* %"$tmpC2" - %11 = call %Node @comp_parser_addToNodeList(%Node %8, %Node %10) - store %Node %11, %Node* %"$tmpForRef1" - call void @"=.430"(%Node* %res, %Node* %"$tmpForRef1") + %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %11 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %10, i32 0, i32 3 + %12 = load %Node, %Node* %res + %13 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %14 = call %Node @parseImportName(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %13) + %15 = call %Node @addToNodeList(%AstBuilder* %11, %Node %12, %Node %14) + store %Node %15, %Node* %"$tmpForRef1" + call void @"=.554"(%Node* %res, %Node* %"$tmpForRef1") br label %while_step while_step: ; preds = %while_body br label %while_block while_end: ; preds = %while_block - %12 = load %Node*, %Node** %_result.addr - call void @ctor.428(%Node* %12, %Node* %res) - ret void + %16 = load %Node, %Node* %res + ret %Node %16 } ; Function Attrs: inlinehint nounwind -define internal void @parseImportName(%Node* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this) #4 { - %_result.addr = alloca %Node* - store %Node* %_result, %Node** %_result.addr - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal %Node @parseImportName(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %loc = alloca %Location %id = alloca %String %toImport = alloca %Node - %declNames = alloca %Node %"$tmpForRef" = alloca %Node + %declNames = alloca %Node + %"$tmpForRef1" = alloca %Node %"$tmpC" = alloca %Location - %"$tmpC1" = alloca %Location + %"$tmpC2" = alloca %Location br label %code code: ; preds = %0 - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @curLoc(%Location* %loc, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1) - %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseIdEqualOpt(%String* %id, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2) - %3 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseQidOrString(%Node* %toImport, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %3) - %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseImportDeclNamesOpt(%Node* %declNames, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %4) - %5 = load %Node*, %Node** %_result.addr - %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @lastLoc(%Location* %"$tmpC1", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %6) - call void @span(%Location* %"$tmpC", %Location* %loc, %Location* %"$tmpC1") - %7 = call %StringRef @asStringRef(%String* %id) - %8 = load %Node, %Node* %toImport - %9 = load %Node, %Node* %declNames - %10 = call %Node @comp_parser_mkImportName(%Location* %"$tmpC", %StringRef %7, %Node %8, %Node %9) - store %Node %10, %Node* %"$tmpForRef" - call void @ctor.428(%Node* %5, %Node* %"$tmpForRef") - call void @dtor.218(%String* %id) - ret void + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @curLoc(%Location* %loc, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1) + %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @parseIdEqualOpt(%String* %id, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %2) + %3 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %4 = call %Node @parseQidOrString(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %3) + store %Node %4, %Node* %"$tmpForRef" + call void @ctor.545(%Node* %toImport, %Node* %"$tmpForRef") + %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %6 = call %Node @parseImportDeclNamesOpt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %5) + store %Node %6, %Node* %"$tmpForRef1" + call void @ctor.545(%Node* %declNames, %Node* %"$tmpForRef1") + %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %8 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %7, i32 0, i32 3 + %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @lastLoc(%Location* %"$tmpC2", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %9) + call void @span(%Location* %"$tmpC", %Location* %loc, %Location* %"$tmpC2") + %10 = call %StringRef @asStringRef(%String* %id) + %11 = load %Node, %Node* %toImport + %12 = load %Node, %Node* %declNames + %13 = call %Node @mkImportName(%AstBuilder* %8, %Location* %"$tmpC", %StringRef %10, %Node %11, %Node %12) + call void @dtor.261(%String* %id) + ret %Node %13 dumy_block: ; No predecessors! - call void @dtor.218(%String* %id) - ret void + call void @dtor.261(%String* %id) + unreachable } ; Function Attrs: inlinehint nounwind -define internal void @parseIdEqualOpt(%String* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this) #4 { +define internal void @parseIdEqualOpt(%String* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this) #4 { %_result.addr = alloca %String* store %String* %_result, %String** %_result.addr - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %id = alloca %String %tmp.this = alloca %TokenType %tmp.this1 = alloca %TokenType @@ -24460,39 +29037,39 @@ define internal void @parseIdEqualOpt(%String* sret %_result, %"SparrowParser[Sp br label %code code: ; preds = %0 - call void @ctor.158(%String* %id) + call void @ctor.137(%String* %id) br label %if_block if_block: ; preds = %code - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 36) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 36) %2 = load %TokenType, %TokenType* %tmp.this - %3 = call i1 @nextIs(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %3 = call i1 @nextIs(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, %TokenType %2) br i1 %3, label %cond.true, label %cond.false if_then: ; preds = %cond.end - %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this2, i32 36) + %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this2, i32 36) %5 = load %TokenType, %TokenType* %tmp.this2 - %6 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %4, %TokenType %5) - %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %8 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %7, i32 0, i32 1 + %6 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %4, %TokenType %5) + %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %8 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %7, i32 0, i32 1 %9 = getelementptr inbounds %Token, %Token* %8, i32 0, i32 2 - %10 = call %String* @"=.250"(%String* %id, %String* %9) - %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this3, i32 35) + %10 = call %String* @"=.290"(%String* %id, %String* %9) + %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this3, i32 35) %12 = load %TokenType, %TokenType* %tmp.this3 - %13 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11, %TokenType %12) + %13 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %11, %TokenType %12) br label %if_end if_end: ; preds = %if_then, %cond.end br i1 %3, label %cond_destruct_alt1, label %cond_destruct_alt2 cond.true: ; preds = %if_block - %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this1, i32 35) + %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this1, i32 35) %15 = load %TokenType, %TokenType* %tmp.this1 - %16 = call i1 @next2Is(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %14, %TokenType %15) + %16 = call i1 @next2Is(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %14, %TokenType %15) br label %cond.end cond.false: ; preds = %if_block @@ -24510,104 +29087,95 @@ cond_destruct_alt2: ; preds = %if_end cond_destruct_end: ; preds = %cond_destruct_alt2, %cond_destruct_alt1 %17 = load %String*, %String** %_result.addr - call void @ctor.184(%String* %17, %String* %id) - call void @dtor.218(%String* %id) + call void @ctor.189(%String* %17, %String* %id) + call void @dtor.261(%String* %id) ret void dumy_block: ; No predecessors! - call void @dtor.218(%String* %id) + call void @dtor.261(%String* %id) ret void } ; Function Attrs: inlinehint nounwind -define internal void @parseQidOrString(%Node* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this) #4 { - %_result.addr = alloca %Node* - store %Node* %_result, %Node** %_result.addr - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal %Node @parseQidOrString(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %tmp.this = alloca %TokenType - %"$tmpForRef" = alloca %Node br label %code code: ; preds = %0 br label %if_block if_block: ; preds = %code - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 39) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 39) %2 = load %TokenType, %TokenType* %tmp.this - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_end if_then: ; preds = %if_block - %4 = load %Node*, %Node** %_result.addr - %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 1 - %7 = getelementptr inbounds %Token, %Token* %6, i32 0, i32 0 - %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %9 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8, i32 0, i32 1 - %10 = getelementptr inbounds %Token, %Token* %9, i32 0, i32 2 - %11 = call %StringRef @asStringRef(%String* %10) - %12 = call %Node @comp_parser_mkStringLiteral(%Location* %7, %StringRef %11) - store %Node %12, %Node* %"$tmpForRef" - call void @ctor.428(%Node* %4, %Node* %"$tmpForRef") - ret void + %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %5 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %4, i32 0, i32 3 + %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %7 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %6, i32 0, i32 1 + %8 = getelementptr inbounds %Token, %Token* %7, i32 0, i32 0 + %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %10 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %9, i32 0, i32 1 + %11 = getelementptr inbounds %Token, %Token* %10, i32 0, i32 2 + %12 = call %StringRef @asStringRef(%String* %11) + %13 = call %Node @mkStringLiteral(%AstBuilder* %5, %Location* %8, %StringRef %12) + ret %Node %13 if_end: ; preds = %dumy_block, %if_block - %13 = load %Node*, %Node** %_result.addr - %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseQualifiedName(%Node* %13, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %14, i1 false) - ret void + %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %15 = call %Node @parseQualifiedName(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %14, i1 false) + ret %Node %15 dumy_block: ; No predecessors! br label %if_end } ; Function Attrs: inlinehint nounwind -define internal void @parseImportDeclNamesOpt(%Node* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this) #4 { - %_result.addr = alloca %Node* - store %Node* %_result, %Node** %_result.addr - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal %Node @parseImportDeclNamesOpt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %res = alloca %Node %tmp.this = alloca %TokenType - %"$tmpC" = alloca %Node + %"$tmpForRef" = alloca %Node %tmp.this1 = alloca %TokenType br label %code code: ; preds = %0 - call void @ctor.432(%Node* %res) + call void @ctor.556(%Node* %res) br label %if_block if_block: ; preds = %code - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 28) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 28) %2 = load %TokenType, %TokenType* %tmp.this - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_end if_then: ; preds = %if_block - %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseIdOrOperListNode(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %4) - call void @"=.430"(%Node* %res, %Node* %"$tmpC") - %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this1, i32 29) - %6 = load %TokenType, %TokenType* %tmp.this1 - %7 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, %TokenType %6) + %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %5 = call %Node @parseIdOrOperListNode(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %4) + store %Node %5, %Node* %"$tmpForRef" + call void @"=.554"(%Node* %res, %Node* %"$tmpForRef") + %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this1, i32 29) + %7 = load %TokenType, %TokenType* %tmp.this1 + %8 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %6, %TokenType %7) br label %if_end if_end: ; preds = %if_then, %if_block - %8 = load %Node*, %Node** %_result.addr - call void @ctor.428(%Node* %8, %Node* %res) - ret void + %9 = load %Node, %Node* %res + ret %Node %9 } ; Function Attrs: inlinehint nounwind -define internal void @parseIdOrOperListNode(%Node* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this) #4 { - %_result.addr = alloca %Node* - store %Node* %_result, %Node** %_result.addr - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal %Node @parseIdOrOperListNode(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %res = alloca %Node %id = alloca %String %"$tmpForRef" = alloca %Node @@ -24617,83 +29185,116 @@ define internal void @parseIdOrOperListNode(%Node* sret %_result, %"SparrowParse br label %code code: ; preds = %0 - call void @ctor.432(%Node* %res) - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseIdOrOper(%String* %id, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, i1 true) - %2 = load %Node, %Node* %res - %3 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %4 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %3, i32 0, i32 1 - %5 = getelementptr inbounds %Token, %Token* %4, i32 0, i32 0 - %6 = call %StringRef @asStringRef(%String* %id) - %7 = call %Node @comp_parser_mkIdentifier(%Location* %5, %StringRef %6) - %8 = call %Node @comp_parser_addToNodeList(%Node %2, %Node %7) - store %Node %8, %Node* %"$tmpForRef" - call void @"=.430"(%Node* %res, %Node* %"$tmpForRef") + call void @ctor.556(%Node* %res) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @parseIdOrOper(%String* %id, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, i1 true) + %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %3 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %2, i32 0, i32 3 + %4 = load %Node, %Node* %res + %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %5, i32 0, i32 3 + %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %8 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %7, i32 0, i32 1 + %9 = getelementptr inbounds %Token, %Token* %8, i32 0, i32 0 + %10 = call %StringRef @asStringRef(%String* %id) + %11 = call %Node @mkIdentifier(%AstBuilder* %6, %Location* %9, %StringRef %10) + %12 = call %Node @addToNodeList(%AstBuilder* %3, %Node %4, %Node %11) + store %Node %12, %Node* %"$tmpForRef" + call void @"=.554"(%Node* %res, %Node* %"$tmpForRef") br label %while_block while_block: ; preds = %while_step, %code - %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 32) - %10 = load %TokenType, %TokenType* %tmp.this - %11 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9, %TokenType %10) - br i1 %11, label %while_body, label %while_end + %13 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 32) + %14 = load %TokenType, %TokenType* %tmp.this + %15 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %13, %TokenType %14) + br i1 %15, label %while_body, label %while_end while_body: ; preds = %while_block - %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseIdOrOper(%String* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %12, i1 true) - %13 = call %String* @"=.250"(%String* %id, %String* %"$tmpC") - call void @dtor.218(%String* %"$tmpC") - %14 = load %Node, %Node* %res - %15 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %16 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %15, i32 0, i32 1 - %17 = getelementptr inbounds %Token, %Token* %16, i32 0, i32 0 - %18 = call %StringRef @asStringRef(%String* %id) - %19 = call %Node @comp_parser_mkIdentifier(%Location* %17, %StringRef %18) - %20 = call %Node @comp_parser_addToNodeList(%Node %14, %Node %19) - store %Node %20, %Node* %"$tmpForRef1" - call void @"=.430"(%Node* %res, %Node* %"$tmpForRef1") + %16 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @parseIdOrOper(%String* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %16, i1 true) + %17 = call %String* @"=.290"(%String* %id, %String* %"$tmpC") + call void @dtor.261(%String* %"$tmpC") + %18 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %19 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %18, i32 0, i32 3 + %20 = load %Node, %Node* %res + %21 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %22 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %21, i32 0, i32 3 + %23 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %24 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %23, i32 0, i32 1 + %25 = getelementptr inbounds %Token, %Token* %24, i32 0, i32 0 + %26 = call %StringRef @asStringRef(%String* %id) + %27 = call %Node @mkIdentifier(%AstBuilder* %22, %Location* %25, %StringRef %26) + %28 = call %Node @addToNodeList(%AstBuilder* %19, %Node %20, %Node %27) + store %Node %28, %Node* %"$tmpForRef1" + call void @"=.554"(%Node* %res, %Node* %"$tmpForRef1") br label %while_step while_step: ; preds = %while_body br label %while_block while_end: ; preds = %while_block - %21 = load %Node*, %Node** %_result.addr - call void @ctor.428(%Node* %21, %Node* %res) - call void @dtor.218(%String* %id) - ret void + %29 = load %Node, %Node* %res + call void @dtor.261(%String* %id) + ret %Node %29 dumy_block: ; No predecessors! - call void @dtor.218(%String* %id) - ret void + call void @dtor.261(%String* %id) + unreachable } -declare %Node @comp_parser_mkImportName(%Location*, %StringRef, %Node, %Node) +; Function Attrs: inlinehint nounwind +define internal %Node @mkImportName(%AstBuilder* %obj, %Location* %loc, %StringRef %alias, %Node %toImport, %Node %decls) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %alias.addr = alloca %StringRef + store %StringRef %alias, %StringRef* %alias.addr + %toImport.addr = alloca %Node + store %Node %toImport, %Node* %toImport.addr + %decls.addr = alloca %Node + store %Node %decls, %Node* %decls.addr + br label %code + +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 4 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load %StringRef, %StringRef* %alias.addr + %8 = load %Node, %Node* %toImport.addr + %9 = load %Node, %Node* %decls.addr + %10 = call %Node @"().593"(%"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %2, %UntypedPtr %5, %Location* %6, %StringRef %7, %Node %8, %Node %9) + ret %Node %10 +} ; Function Attrs: inlinehint nounwind -define internal i1 @parseUsingDecl(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %Node* %res) #4 { - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal i1 @parseUsingDecl(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %Node* %res) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %res.addr = alloca %Node* store %Node* %res, %Node** %res.addr %tmp.this = alloca %TokenType %loc = alloca %Location %id = alloca %String %usingNode = alloca %Node - %"$tmpC" = alloca %Node - %"$tmpC4" = alloca %Node - %tmp.this5 = alloca %TokenType %"$tmpForRef" = alloca %Node + %"$tmpForRef4" = alloca %Node + %tmp.this5 = alloca %TokenType + %"$tmpForRef6" = alloca %Node br label %code code: ; preds = %0 br label %if_block if_block: ; preds = %code - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 8) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 8) %2 = load %TokenType, %TokenType* %tmp.this - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, %TokenType %2) %4 = xor i1 true, %3 br i1 %4, label %if_then, label %if_end @@ -24701,84 +29302,113 @@ if_then: ; preds = %if_block ret i1 false if_end: ; preds = %dumy_block, %if_block - %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 1 + %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %5, i32 0, i32 1 %7 = getelementptr inbounds %Token, %Token* %6, i32 0, i32 0 - call void @ctor.171(%Location* %loc, %Location* %7) - %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseIdEqualOpt(%String* %id, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8) - call void @ctor.432(%Node* %usingNode) + call void @ctor.182(%Location* %loc, %Location* %7) + %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @parseIdEqualOpt(%String* %id, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %8) + call void @ctor.556(%Node* %usingNode) br label %if_block1 dumy_block: ; No predecessors! br label %if_end if_block1: ; preds = %if_end - %9 = call i1 @isEmpty.370(%String* %id) + %9 = call i1 @isEmpty.397(%String* %id) br i1 %9, label %if_then2, label %if_else if_then2: ; preds = %if_block1 - %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseQualifiedName(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %10, i1 true) - call void @"=.430"(%Node* %usingNode, %Node* %"$tmpC") + %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %11 = call %Node @parseQualifiedName(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %10, i1 true) + store %Node %11, %Node* %"$tmpForRef" + call void @"=.554"(%Node* %usingNode, %Node* %"$tmpForRef") br label %if_end3 if_else: ; preds = %if_block1 - %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseExpr(%Node* %"$tmpC4", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11, i1 true) - call void @"=.430"(%Node* %usingNode, %Node* %"$tmpC4") + %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %13 = call %Node @parseExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %12, i1 true) + store %Node %13, %Node* %"$tmpForRef4" + call void @"=.554"(%Node* %usingNode, %Node* %"$tmpForRef4") br label %if_end3 if_end3: ; preds = %if_else, %if_then2 - %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %13 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %12, i32 0, i32 1 - %14 = getelementptr inbounds %Token, %Token* %13, i32 0, i32 0 - call void @copyEnd(%Location* %loc, %Location* %14) - %15 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this5, i32 31) - %16 = load %TokenType, %TokenType* %tmp.this5 - %17 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %15, %TokenType %16) - %18 = load %Node*, %Node** %res.addr - %19 = call %StringRef @asStringRef(%String* %id) - %20 = load %Node, %Node* %usingNode - %21 = call %Node @comp_parser_mkUsing(%Location* %loc, %StringRef %19, %Node %20) - store %Node %21, %Node* %"$tmpForRef" - call void @"=.430"(%Node* %18, %Node* %"$tmpForRef") - call void @dtor.218(%String* %id) + %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %15 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %14, i32 0, i32 1 + %16 = getelementptr inbounds %Token, %Token* %15, i32 0, i32 0 + call void @copyEnd(%Location* %loc, %Location* %16) + %17 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this5, i32 31) + %18 = load %TokenType, %TokenType* %tmp.this5 + %19 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %17, %TokenType %18) + %20 = load %Node*, %Node** %res.addr + %21 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %22 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %21, i32 0, i32 3 + %23 = call %StringRef @asStringRef(%String* %id) + %24 = load %Node, %Node* %usingNode + %25 = call %Node @mkUsing(%AstBuilder* %22, %Location* %loc, %StringRef %23, %Node %24) + store %Node %25, %Node* %"$tmpForRef6" + call void @"=.554"(%Node* %20, %Node* %"$tmpForRef6") + call void @dtor.261(%String* %id) ret i1 true -dumy_block6: ; No predecessors! - call void @dtor.218(%String* %id) +dumy_block7: ; No predecessors! + call void @dtor.261(%String* %id) unreachable } -declare %Node @comp_parser_mkUsing(%Location*, %StringRef, %Node) +; Function Attrs: inlinehint nounwind +define internal %Node @mkUsing(%AstBuilder* %obj, %Location* %loc, %StringRef %alias, %Node %usingNode) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %alias.addr = alloca %StringRef + store %StringRef %alias, %StringRef* %alias.addr + %usingNode.addr = alloca %Node + store %Node %usingNode, %Node* %usingNode.addr + br label %code + +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 5 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load %StringRef, %StringRef* %alias.addr + %8 = load %Node, %Node* %usingNode.addr + %9 = call %Node @"().610"(%"FunctionPtr4[Node, UntypedPtr, @Location, StringRef, Node]"* %2, %UntypedPtr %5, %Location* %6, %StringRef %7, %Node %8) + ret %Node %9 +} ; Function Attrs: inlinehint nounwind -define internal i1 @parsePackageDecl(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %Node* %res) #4 { - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal i1 @parsePackageDecl(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %Node* %res) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %res.addr = alloca %Node* store %Node* %res, %Node** %res.addr %tmp.this = alloca %TokenType %loc = alloca %Location %id = alloca %String %formals = alloca %Node + %"$tmpForRef" = alloca %Node %ifClause = alloca %Node - %tmp.this1 = alloca %TokenType - %children = alloca %Node + %"$tmpForRef1" = alloca %Node %tmp.this2 = alloca %TokenType - %"$tmpForRef" = alloca %Node + %children = alloca %Node + %tmp.this3 = alloca %TokenType + %"$tmpForRef4" = alloca %Node br label %code code: ; preds = %0 br label %if_block if_block: ; preds = %code - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 7) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 7) %2 = load %TokenType, %TokenType* %tmp.this - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, %TokenType %2) %4 = xor i1 true, %3 br i1 %4, label %if_then, label %if_end @@ -24786,127 +29416,835 @@ if_then: ; preds = %if_block ret i1 false if_end: ; preds = %dumy_block, %if_block - %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 1 + %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %5, i32 0, i32 1 %7 = getelementptr inbounds %Token, %Token* %6, i32 0, i32 0 - call void @ctor.171(%Location* %loc, %Location* %7) - %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseId(%String* %id, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8) - %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseFormalsOpt(%Node* %formals, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9, i1 false) - %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseIfClauseOpt(%Node* %ifClause, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %10) - %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this1, i32 24) - %12 = load %TokenType, %TokenType* %tmp.this1 - %13 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11, %TokenType %12) - call void @ctor.432(%Node* %children) - %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseStmts(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %14, i1 true, %Node* %children) - %15 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this2, i32 25) - %16 = load %TokenType, %TokenType* %tmp.this2 - %17 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %15, %TokenType %16) - %18 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %19 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %18, i32 0, i32 1 - %20 = getelementptr inbounds %Token, %Token* %19, i32 0, i32 0 - call void @copyEnd(%Location* %loc, %Location* %20) - %21 = load %Node*, %Node** %res.addr - %22 = call %StringRef @asStringRef(%String* %id) - %23 = load %Node, %Node* %children - %24 = load %Node, %Node* %formals - %25 = load %Node, %Node* %ifClause - %26 = call %Node @comp_parser_mkPackage(%Location* %loc, %StringRef %22, %Node %23, %Node %24, %Node %25) - store %Node %26, %Node* %"$tmpForRef" - call void @"=.430"(%Node* %21, %Node* %"$tmpForRef") - call void @dtor.218(%String* %id) + call void @ctor.182(%Location* %loc, %Location* %7) + %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @parseId(%String* %id, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %8) + %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %10 = call %Node @parseFormalsOpt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %9, i1 false) + store %Node %10, %Node* %"$tmpForRef" + call void @ctor.545(%Node* %formals, %Node* %"$tmpForRef") + %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %12 = call %Node @parseIfClauseOpt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %11) + store %Node %12, %Node* %"$tmpForRef1" + call void @ctor.545(%Node* %ifClause, %Node* %"$tmpForRef1") + %13 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this2, i32 24) + %14 = load %TokenType, %TokenType* %tmp.this2 + %15 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %13, %TokenType %14) + call void @ctor.556(%Node* %children) + %16 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @parseStmts(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %16, i1 true, %Node* %children) + %17 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this3, i32 25) + %18 = load %TokenType, %TokenType* %tmp.this3 + %19 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %17, %TokenType %18) + %20 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %21 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %20, i32 0, i32 1 + %22 = getelementptr inbounds %Token, %Token* %21, i32 0, i32 0 + call void @copyEnd(%Location* %loc, %Location* %22) + %23 = load %Node*, %Node** %res.addr + %24 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %25 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %24, i32 0, i32 3 + %26 = call %StringRef @asStringRef(%String* %id) + %27 = load %Node, %Node* %children + %28 = load %Node, %Node* %formals + %29 = load %Node, %Node* %ifClause + %30 = call %Node @mkPackage(%AstBuilder* %25, %Location* %loc, %StringRef %26, %Node %27, %Node %28, %Node %29) + store %Node %30, %Node* %"$tmpForRef4" + call void @"=.554"(%Node* %23, %Node* %"$tmpForRef4") + call void @dtor.261(%String* %id) ret i1 true dumy_block: ; No predecessors! br label %if_end -dumy_block3: ; No predecessors! - call void @dtor.218(%String* %id) +dumy_block5: ; No predecessors! + call void @dtor.261(%String* %id) unreachable } ; Function Attrs: inlinehint nounwind -define internal void @parseIfClauseOpt(%Node* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this) #4 { - %_result.addr = alloca %Node* - store %Node* %_result, %Node** %_result.addr - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal %Node @parseIfClauseOpt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %tmp.this = alloca %TokenType + %tmp.this1 = alloca %Node br label %code code: ; preds = %0 br label %if_block if_block: ; preds = %code - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 15) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 15) %2 = load %TokenType, %TokenType* %tmp.this - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_end if_then: ; preds = %if_block - %4 = load %Node*, %Node** %_result.addr - %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseExpr(%Node* %4, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i1 true) - ret void + %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %5 = call %Node @parseExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %4, i1 true) + ret %Node %5 if_end: ; preds = %dumy_block, %if_block - %6 = load %Node*, %Node** %_result.addr - call void @ctor.432(%Node* %6) - ret void + call void @ctor.556(%Node* %tmp.this1) + %6 = load %Node, %Node* %tmp.this1 + ret %Node %6 dumy_block: ; No predecessors! br label %if_end } -declare %Node @comp_parser_mkPackage(%Location*, %StringRef, %Node, %Node, %Node) +; Function Attrs: inlinehint nounwind +define internal %Node @mkPackage(%AstBuilder* %obj, %Location* %loc, %StringRef %name, %Node %children, %Node %params, %Node %ifClause) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %name.addr = alloca %StringRef + store %StringRef %name, %StringRef* %name.addr + %children.addr = alloca %Node + store %Node %children, %Node* %children.addr + %params.addr = alloca %Node + store %Node %params, %Node* %params.addr + %ifClause.addr = alloca %Node + store %Node %ifClause, %Node* %ifClause.addr + br label %code + +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 6 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load %StringRef, %StringRef* %name.addr + %8 = load %Node, %Node* %children.addr + %9 = load %Node, %Node* %params.addr + %10 = load %Node, %Node* %ifClause.addr + %11 = call %Node @"().612"(%"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %2, %UntypedPtr %5, %Location* %6, %StringRef %7, %Node %8, %Node %9, %Node %10) + ret %Node %11 +} + +; Function Attrs: inlinehint nounwind +define internal %Node @"().612"(%"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %this, %UntypedPtr %p1, %Location* %p2, %StringRef %p3, %Node %p4, %Node %p5, %Node %p6) #4 { + %this.addr = alloca %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* + store %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %this, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"** %this.addr + %p1.addr = alloca %UntypedPtr + store %UntypedPtr %p1, %UntypedPtr* %p1.addr + %p2.addr = alloca %Location* + store %Location* %p2, %Location** %p2.addr + %p3.addr = alloca %StringRef + store %StringRef %p3, %StringRef* %p3.addr + %p4.addr = alloca %Node + store %Node %p4, %Node* %p4.addr + %p5.addr = alloca %Node + store %Node %p5, %Node* %p5.addr + %p6.addr = alloca %Node + store %Node %p6, %Node* %p6.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"*, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"** %this.addr + %2 = load %UntypedPtr, %UntypedPtr* %p1.addr + %3 = load %Location*, %Location** %p2.addr + %4 = load %StringRef, %StringRef* %p3.addr + %5 = load %Node, %Node* %p4.addr + %6 = load %Node, %Node* %p5.addr + %7 = load %Node, %Node* %p6.addr + %8 = bitcast %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %1 to %Node (%UntypedPtr, %Location*, %StringRef, %Node, %Node, %Node)** + %9 = load %Node (%UntypedPtr, %Location*, %StringRef, %Node, %Node, %Node)*, %Node (%UntypedPtr, %Location*, %StringRef, %Node, %Node, %Node)** %8 + %10 = call %Node %9(%UntypedPtr %2, %Location* %3, %StringRef %4, %Node %5, %Node %6, %Node %7) + ret %Node %10 +} ; Function Attrs: noinline nounwind -define i1 @parseDatatypeDecl(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %Node* %res) #5 { - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define i1 @parseDatatypeDecl(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %Node* %res) #5 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %res.addr = alloca %Node* store %Node* %res, %Node** %res.addr %tmp.this = alloca %TokenType %loc = alloca %Location %id = alloca %String %formals = alloca %Node + %"$tmpForRef" = alloca %Node %tmp.this4 = alloca %TokenType %underlyingData = alloca %Node + %"$tmpForRef5" = alloca %Node %ifClause = alloca %Node - %tmp.this5 = alloca %TokenType + %"$tmpForRef6" = alloca %Node + %tmp.this7 = alloca %TokenType + %"$tmpForRef8" = alloca %Node + %tmp.this9 = alloca %Node + %ifClause10 = alloca %Node + %"$tmpForRef11" = alloca %Node + %children = alloca %Node + %tmp.this16 = alloca %TokenType + %tmp.this17 = alloca %TokenType + %tmp.this18 = alloca %TokenType + %tmp.this26 = alloca %TokenType + %tmp.this27 = alloca %TokenType + %tmp.this32 = alloca %TokenType + %usingNode = alloca %Node + %"$tmpForRef38" = alloca %Node + %tmp.this46 = alloca %TokenType + %tmp.this47 = alloca %TokenType + %tmp.this52 = alloca %TokenType + %"$tmpForRef53" = alloca %Node + %tmp.this54 = alloca %Node + br label %code + +code: ; preds = %0 + br label %if_block + +if_block: ; preds = %code + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 5) + %2 = load %TokenType, %TokenType* %tmp.this + %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, %TokenType %2) + %4 = xor i1 true, %3 + br i1 %4, label %if_then, label %if_end + +if_then: ; preds = %if_block + ret i1 false + +if_end: ; preds = %dumy_block, %if_block + %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %5, i32 0, i32 1 + %7 = getelementptr inbounds %Token, %Token* %6, i32 0, i32 0 + call void @ctor.182(%Location* %loc, %Location* %7) + %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @parseId(%String* %id, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %8) + %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %10 = call %Node @parseFormalsOpt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %9, i1 false) + store %Node %10, %Node* %"$tmpForRef" + call void @ctor.545(%Node* %formals, %Node* %"$tmpForRef") + br label %if_block1 + +dumy_block: ; No predecessors! + br label %if_end + +if_block1: ; preds = %if_end + %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this4, i32 35) + %12 = load %TokenType, %TokenType* %tmp.this4 + %13 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %11, %TokenType %12) + br i1 %13, label %if_then2, label %if_else + +if_then2: ; preds = %if_block1 + %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %15 = call %Node @parseExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %14, i1 true) + store %Node %15, %Node* %"$tmpForRef5" + call void @ctor.545(%Node* %underlyingData, %Node* %"$tmpForRef5") + %16 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %17 = call %Node @parseIfClauseOpt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %16) + store %Node %17, %Node* %"$tmpForRef6" + call void @ctor.545(%Node* %ifClause, %Node* %"$tmpForRef6") + %18 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this7, i32 31) + %19 = load %TokenType, %TokenType* %tmp.this7 + %20 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %18, %TokenType %19) + %21 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %22 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %21, i32 0, i32 1 + %23 = getelementptr inbounds %Token, %Token* %22, i32 0, i32 0 + call void @copyEnd(%Location* %loc, %Location* %23) + %24 = load %Node*, %Node** %res.addr + %25 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %26 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %25, i32 0, i32 3 + %27 = call %StringRef @asStringRef(%String* %id) + %28 = load %Node, %Node* %formals + %29 = load %Node, %Node* %underlyingData + %30 = load %Node, %Node* %ifClause + call void @ctor.556(%Node* %tmp.this9) + %31 = load %Node, %Node* %tmp.this9 + %32 = call %Node @mkDatatype(%AstBuilder* %26, %Location* %loc, %StringRef %27, %Node %28, %Node %29, %Node %30, %Node %31) + store %Node %32, %Node* %"$tmpForRef8" + call void @"=.554"(%Node* %24, %Node* %"$tmpForRef8") + br label %if_end3 + +if_else: ; preds = %if_block1 + %33 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %34 = call %Node @parseIfClauseOpt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %33) + store %Node %34, %Node* %"$tmpForRef11" + call void @ctor.545(%Node* %ifClause10, %Node* %"$tmpForRef11") + call void @ctor.556(%Node* %children) + br label %if_block12 + +if_end3: ; preds = %if_end15, %if_then2 + call void @dtor.261(%String* %id) + ret i1 true + +if_block12: ; preds = %if_else + %35 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this16, i32 31) + %36 = load %TokenType, %TokenType* %tmp.this16 + %37 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %35, %TokenType %36) + br i1 %37, label %if_then13, label %if_else14 + +if_then13: ; preds = %if_block12 + br label %if_end15 + +if_else14: ; preds = %if_block12 + %38 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this17, i32 24) + %39 = load %TokenType, %TokenType* %tmp.this17 + %40 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %38, %TokenType %39) + br label %while_block + +if_end15: ; preds = %while_end, %if_then13 + %41 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %42 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %41, i32 0, i32 1 + %43 = getelementptr inbounds %Token, %Token* %42, i32 0, i32 0 + call void @copyEnd(%Location* %loc, %Location* %43) + %44 = load %Node*, %Node** %res.addr + %45 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %46 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %45, i32 0, i32 3 + %47 = call %StringRef @asStringRef(%String* %id) + %48 = load %Node, %Node* %formals + call void @ctor.556(%Node* %tmp.this54) + %49 = load %Node, %Node* %tmp.this54 + %50 = load %Node, %Node* %ifClause10 + %51 = load %Node, %Node* %children + %52 = call %Node @mkDatatype(%AstBuilder* %46, %Location* %loc, %StringRef %47, %Node %48, %Node %49, %Node %50, %Node %51) + store %Node %52, %Node* %"$tmpForRef53" + call void @"=.554"(%Node* %44, %Node* %"$tmpForRef53") + br label %if_end3 + +while_block: ; preds = %while_step, %if_else14 + %53 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this18, i32 25) + %54 = load %TokenType, %TokenType* %tmp.this18 + %55 = call i1 @nextIs(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %53, %TokenType %54) + %56 = xor i1 true, %55 + br i1 %56, label %cond.true, label %cond.false + +while_body: ; preds = %cond.end + br label %while_block19 + +while_step: ; preds = %cond_destruct_end51 + br label %while_block + +while_end: ; preds = %if_then30, %cond.end + %57 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this52, i32 25) + %58 = load %TokenType, %TokenType* %tmp.this52 + %59 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %57, %TokenType %58) + br label %if_end15 + +cond.true: ; preds = %while_block + %60 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %61 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %60, i32 0, i32 2 + %62 = load i1, i1* %61 + %63 = xor i1 true, %62 + br label %cond.end + +cond.false: ; preds = %while_block + br label %cond.end + +cond.end: ; preds = %cond.false, %cond.true + %cond.res = phi i1 [ %63, %cond.true ], [ false, %cond.false ] + br i1 %cond.res, label %while_body, label %while_end + +while_block19: ; preds = %while_step21, %while_body + %64 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this26, i32 32) + %65 = load %TokenType, %TokenType* %tmp.this26 + %66 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %64, %TokenType %65) + br i1 %66, label %cond.true23, label %cond.false24 + +while_body20: ; preds = %cond.end25 + br label %while_step21 + +while_step21: ; preds = %while_body20 + br label %while_block19 + +while_end22: ; preds = %cond.end25 + br i1 %66, label %cond_destruct_alt1, label %cond_destruct_alt2 + +cond.true23: ; preds = %while_block19 + br label %cond.end25 + +cond.false24: ; preds = %while_block19 + %67 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this27, i32 31) + %68 = load %TokenType, %TokenType* %tmp.this27 + %69 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %67, %TokenType %68) + br label %cond.end25 + +cond.end25: ; preds = %cond.false24, %cond.true23 + %cond.res28 = phi i1 [ true, %cond.true23 ], [ %69, %cond.false24 ] + br i1 %cond.res28, label %while_body20, label %while_end22 + +cond_destruct_alt1: ; preds = %while_end22 + br label %cond_destruct_end + +cond_destruct_alt2: ; preds = %while_end22 + br label %cond_destruct_end + +cond_destruct_end: ; preds = %cond_destruct_alt2, %cond_destruct_alt1 + br label %if_block29 + +if_block29: ; preds = %cond_destruct_end + %70 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this32, i32 25) + %71 = load %TokenType, %TokenType* %tmp.this32 + %72 = call i1 @nextIs(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %70, %TokenType %71) + br i1 %72, label %if_then30, label %if_end31 + +if_then30: ; preds = %if_block29 + br label %while_end + +if_end31: ; preds = %dumy_block33, %if_block29 + call void @ctor.556(%Node* %usingNode) + br label %if_block34 + +dumy_block33: ; No predecessors! + br label %if_end31 + +if_block34: ; preds = %if_end31 + %73 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %74 = call i1 @parseUsingDecl(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %73, %Node* %usingNode) + br i1 %74, label %if_then35, label %if_else36 + +if_then35: ; preds = %if_block34 + %75 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %76 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %75, i32 0, i32 3 + %77 = load %Node, %Node* %children + %78 = load %Node, %Node* %usingNode + %79 = call %Node @addToNodeList(%AstBuilder* %76, %Node %77, %Node %78) + store %Node %79, %Node* %"$tmpForRef38" + call void @"=.554"(%Node* %children, %Node* %"$tmpForRef38") + br label %if_end37 + +if_else36: ; preds = %if_block34 + %80 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @parseFieldsLine(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %80, %Node* %children) + br label %if_end37 + +if_end37: ; preds = %if_else36, %if_then35 + br label %while_block39 + +while_block39: ; preds = %while_step41, %if_end37 + %81 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this46, i32 32) + %82 = load %TokenType, %TokenType* %tmp.this46 + %83 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %81, %TokenType %82) + br i1 %83, label %cond.true43, label %cond.false44 + +while_body40: ; preds = %cond.end45 + br label %while_step41 + +while_step41: ; preds = %while_body40 + br label %while_block39 + +while_end42: ; preds = %cond.end45 + br i1 %83, label %cond_destruct_alt149, label %cond_destruct_alt250 + +cond.true43: ; preds = %while_block39 + br label %cond.end45 + +cond.false44: ; preds = %while_block39 + %84 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this47, i32 31) + %85 = load %TokenType, %TokenType* %tmp.this47 + %86 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %84, %TokenType %85) + br label %cond.end45 + +cond.end45: ; preds = %cond.false44, %cond.true43 + %cond.res48 = phi i1 [ true, %cond.true43 ], [ %86, %cond.false44 ] + br i1 %cond.res48, label %while_body40, label %while_end42 + +cond_destruct_alt149: ; preds = %while_end42 + br label %cond_destruct_end51 + +cond_destruct_alt250: ; preds = %while_end42 + br label %cond_destruct_end51 + +cond_destruct_end51: ; preds = %cond_destruct_alt250, %cond_destruct_alt149 + br label %while_step + +dumy_block55: ; No predecessors! + call void @dtor.261(%String* %id) + unreachable +} + +; Function Attrs: inlinehint nounwind +define internal %Node @mkDatatype(%AstBuilder* %obj, %Location* %loc, %StringRef %name, %Node %params, %Node %underlyingData, %Node %ifClause, %Node %children) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %name.addr = alloca %StringRef + store %StringRef %name, %StringRef* %name.addr + %params.addr = alloca %Node + store %Node %params, %Node* %params.addr + %underlyingData.addr = alloca %Node + store %Node %underlyingData, %Node* %underlyingData.addr + %ifClause.addr = alloca %Node + store %Node %ifClause, %Node* %ifClause.addr + %children.addr = alloca %Node + store %Node %children, %Node* %children.addr + br label %code + +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 7 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load %StringRef, %StringRef* %name.addr + %8 = load %Node, %Node* %params.addr + %9 = load %Node, %Node* %underlyingData.addr + %10 = load %Node, %Node* %ifClause.addr + %11 = load %Node, %Node* %children.addr + %12 = call %Node @"().613"(%"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* %2, %UntypedPtr %5, %Location* %6, %StringRef %7, %Node %8, %Node %9, %Node %10, %Node %11) + ret %Node %12 +} + +; Function Attrs: inlinehint nounwind +define internal %Node @"().613"(%"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* %this, %UntypedPtr %p1, %Location* %p2, %StringRef %p3, %Node %p4, %Node %p5, %Node %p6, %Node %p7) #4 { + %this.addr = alloca %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* + store %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* %this, %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"** %this.addr + %p1.addr = alloca %UntypedPtr + store %UntypedPtr %p1, %UntypedPtr* %p1.addr + %p2.addr = alloca %Location* + store %Location* %p2, %Location** %p2.addr + %p3.addr = alloca %StringRef + store %StringRef %p3, %StringRef* %p3.addr + %p4.addr = alloca %Node + store %Node %p4, %Node* %p4.addr + %p5.addr = alloca %Node + store %Node %p5, %Node* %p5.addr + %p6.addr = alloca %Node + store %Node %p6, %Node* %p6.addr + %p7.addr = alloca %Node + store %Node %p7, %Node* %p7.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"*, %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"** %this.addr + %2 = load %UntypedPtr, %UntypedPtr* %p1.addr + %3 = load %Location*, %Location** %p2.addr + %4 = load %StringRef, %StringRef* %p3.addr + %5 = load %Node, %Node* %p4.addr + %6 = load %Node, %Node* %p5.addr + %7 = load %Node, %Node* %p6.addr + %8 = load %Node, %Node* %p7.addr + %9 = bitcast %"FunctionPtr7[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node]"* %1 to %Node (%UntypedPtr, %Location*, %StringRef, %Node, %Node, %Node, %Node)** + %10 = load %Node (%UntypedPtr, %Location*, %StringRef, %Node, %Node, %Node, %Node)*, %Node (%UntypedPtr, %Location*, %StringRef, %Node, %Node, %Node, %Node)** %9 + %11 = call %Node %10(%UntypedPtr %2, %Location* %3, %StringRef %4, %Node %5, %Node %6, %Node %7, %Node %8) + ret %Node %11 +} + +; Function Attrs: inlinehint nounwind +define internal void @parseFieldsLine(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %Node* %res) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %res.addr = alloca %Node* + store %Node* %res, %Node** %res.addr + %ids = alloca %"Vector[LocString]" + %tmp.this = alloca %TokenType + %typeNode = alloca %Node + %"$tmpForRef" = alloca %Node + %init = alloca %Node + %tmp.this1 = alloca %TokenType + %"$tmpForRef2" = alloca %Node + %"$rangeVar" = alloca %"ContiguousMemoryRange[LocString]" + %id = alloca %LocString* + %v = alloca %Node + %"$tmpForRef3" = alloca %Node + %"$tmpForRef4" = alloca %Node + br label %code + +code: ; preds = %0 + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @parseIdList(%"Vector[LocString]"* %ids, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1) + %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 30) + %3 = load %TokenType, %TokenType* %tmp.this + %4 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %2, %TokenType %3) + %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %6 = call %Node @parseExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %5, i1 false) + store %Node %6, %Node* %"$tmpForRef" + call void @ctor.545(%Node* %typeNode, %Node* %"$tmpForRef") + call void @ctor.556(%Node* %init) + br label %if_block + +if_block: ; preds = %code + %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this1, i32 35) + %8 = load %TokenType, %TokenType* %tmp.this1 + %9 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %7, %TokenType %8) + br i1 %9, label %if_then, label %if_end + +if_then: ; preds = %if_block + %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %11 = call %Node @parseExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %10, i1 true) + store %Node %11, %Node* %"$tmpForRef2" + call void @"=.554"(%Node* %init, %Node* %"$tmpForRef2") + br label %if_end + +if_end: ; preds = %if_then, %if_block + call void @all.589(%"ContiguousMemoryRange[LocString]"* %"$rangeVar", %"Vector[LocString]"* %ids) + br label %while_block + +while_block: ; preds = %while_step, %if_end + %12 = load %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %"$rangeVar" + %13 = call i1 @isEmpty.591(%"ContiguousMemoryRange[LocString]" %12) + %14 = xor i1 true, %13 + br i1 %14, label %while_body, label %while_end + +while_body: ; preds = %while_block + %15 = load %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %"$rangeVar" + %16 = call %LocString* @front.592(%"ContiguousMemoryRange[LocString]" %15) + store %LocString* %16, %LocString** %id + %17 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %18 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %17, i32 0, i32 3 + %19 = load %LocString*, %LocString** %id + %20 = getelementptr inbounds %LocString, %LocString* %19, i32 0, i32 0 + %21 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %20, i32 0, i32 0 + %22 = load %LocString*, %LocString** %id + %23 = getelementptr inbounds %LocString, %LocString* %22, i32 0, i32 0 + %24 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %23, i32 0, i32 1 + %25 = call %StringRef @asStringRef(%String* %24) + %26 = load %Node, %Node* %typeNode + %27 = load %Node, %Node* %init + %28 = call %Node @mkField(%AstBuilder* %18, %Location* %21, %StringRef %25, %Node %26, %Node %27) + store %Node %28, %Node* %"$tmpForRef3" + call void @ctor.545(%Node* %v, %Node* %"$tmpForRef3") + %29 = load %Node*, %Node** %res.addr + %30 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %31 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %30, i32 0, i32 3 + %32 = load %Node*, %Node** %res.addr + %33 = load %Node, %Node* %32 + %34 = load %Node, %Node* %v + %35 = call %Node @addToNodeList(%AstBuilder* %31, %Node %33, %Node %34) + store %Node %35, %Node* %"$tmpForRef4" + call void @"=.554"(%Node* %29, %Node* %"$tmpForRef4") + br label %while_step + +while_step: ; preds = %while_body + call void @popFront.594(%"ContiguousMemoryRange[LocString]"* %"$rangeVar") + br label %while_block + +while_end: ; preds = %while_block + call void @dtor.586(%"Vector[LocString]"* %ids) + ret void +} + +; Function Attrs: inlinehint nounwind +define internal %Node @mkField(%AstBuilder* %obj, %Location* %loc, %StringRef %name, %Node %typeNode, %Node %init) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %name.addr = alloca %StringRef + store %StringRef %name, %StringRef* %name.addr + %typeNode.addr = alloca %Node + store %Node %typeNode, %Node* %typeNode.addr + %init.addr = alloca %Node + store %Node %init, %Node* %init.addr + br label %code + +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 8 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load %StringRef, %StringRef* %name.addr + %8 = load %Node, %Node* %typeNode.addr + %9 = load %Node, %Node* %init.addr + %10 = call %Node @"().593"(%"FunctionPtr5[Node, UntypedPtr, @Location, StringRef, Node, Node]"* %2, %UntypedPtr %5, %Location* %6, %StringRef %7, %Node %8, %Node %9) + ret %Node %10 +} + +; Function Attrs: inlinehint nounwind +define internal i1 @parseConceptDecl(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %Node* %res) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %res.addr = alloca %Node* + store %Node* %res, %Node** %res.addr + %tmp.this = alloca %TokenType + %loc = alloca %Location + %id = alloca %String + %tmp.this1 = alloca %TokenType + %paramName = alloca %String + %baseConcept = alloca %Node + %"$tmpForRef" = alloca %Node + %tmp.this2 = alloca %TokenType + %ifClause = alloca %Node + %"$tmpForRef3" = alloca %Node + %tmp.this4 = alloca %TokenType + %"$tmpForRef5" = alloca %Node + br label %code + +code: ; preds = %0 + br label %if_block + +if_block: ; preds = %code + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 4) + %2 = load %TokenType, %TokenType* %tmp.this + %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, %TokenType %2) + %4 = xor i1 true, %3 + br i1 %4, label %if_then, label %if_end + +if_then: ; preds = %if_block + ret i1 false + +if_end: ; preds = %dumy_block, %if_block + %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %5, i32 0, i32 1 + %7 = getelementptr inbounds %Token, %Token* %6, i32 0, i32 0 + call void @ctor.182(%Location* %loc, %Location* %7) + %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @parseId(%String* %id, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %8) + %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this1, i32 28) + %10 = load %TokenType, %TokenType* %tmp.this1 + %11 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %9, %TokenType %10) + %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @parseId(%String* %paramName, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %12) + %13 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %14 = call %Node @parseTypeNode(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %13) + store %Node %14, %Node* %"$tmpForRef" + call void @ctor.545(%Node* %baseConcept, %Node* %"$tmpForRef") + %15 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this2, i32 29) + %16 = load %TokenType, %TokenType* %tmp.this2 + %17 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %15, %TokenType %16) + %18 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %19 = call %Node @parseIfClauseOpt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %18) + store %Node %19, %Node* %"$tmpForRef3" + call void @ctor.545(%Node* %ifClause, %Node* %"$tmpForRef3") + %20 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this4, i32 31) + %21 = load %TokenType, %TokenType* %tmp.this4 + %22 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %20, %TokenType %21) + %23 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %24 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %23, i32 0, i32 1 + %25 = getelementptr inbounds %Token, %Token* %24, i32 0, i32 0 + call void @copyEnd(%Location* %loc, %Location* %25) + %26 = load %Node*, %Node** %res.addr + %27 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %28 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %27, i32 0, i32 3 + %29 = call %StringRef @asStringRef(%String* %id) + %30 = call %StringRef @asStringRef(%String* %paramName) + %31 = load %Node, %Node* %baseConcept + %32 = load %Node, %Node* %ifClause + %33 = call %Node @mkConcept(%AstBuilder* %28, %Location* %loc, %StringRef %29, %StringRef %30, %Node %31, %Node %32) + store %Node %33, %Node* %"$tmpForRef5" + call void @"=.554"(%Node* %26, %Node* %"$tmpForRef5") + call void @dtor.261(%String* %paramName) + call void @dtor.261(%String* %id) + ret i1 true + +dumy_block: ; No predecessors! + br label %if_end + +dumy_block6: ; No predecessors! + call void @dtor.261(%String* %paramName) + call void @dtor.261(%String* %id) + unreachable +} + +; Function Attrs: inlinehint nounwind +define internal %Node @mkConcept(%AstBuilder* %obj, %Location* %loc, %StringRef %name, %StringRef %paramName, %Node %baseConcept, %Node %ifClause) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %name.addr = alloca %StringRef + store %StringRef %name, %StringRef* %name.addr + %paramName.addr = alloca %StringRef + store %StringRef %paramName, %StringRef* %paramName.addr + %baseConcept.addr = alloca %Node + store %Node %baseConcept, %Node* %baseConcept.addr + %ifClause.addr = alloca %Node + store %Node %ifClause, %Node* %ifClause.addr + br label %code + +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 9 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load %StringRef, %StringRef* %name.addr + %8 = load %StringRef, %StringRef* %paramName.addr + %9 = load %Node, %Node* %baseConcept.addr + %10 = load %Node, %Node* %ifClause.addr + %11 = call %Node @"().614"(%"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* %2, %UntypedPtr %5, %Location* %6, %StringRef %7, %StringRef %8, %Node %9, %Node %10) + ret %Node %11 +} + +; Function Attrs: inlinehint nounwind +define internal %Node @"().614"(%"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* %this, %UntypedPtr %p1, %Location* %p2, %StringRef %p3, %StringRef %p4, %Node %p5, %Node %p6) #4 { + %this.addr = alloca %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* + store %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* %this, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"** %this.addr + %p1.addr = alloca %UntypedPtr + store %UntypedPtr %p1, %UntypedPtr* %p1.addr + %p2.addr = alloca %Location* + store %Location* %p2, %Location** %p2.addr + %p3.addr = alloca %StringRef + store %StringRef %p3, %StringRef* %p3.addr + %p4.addr = alloca %StringRef + store %StringRef %p4, %StringRef* %p4.addr + %p5.addr = alloca %Node + store %Node %p5, %Node* %p5.addr + %p6.addr = alloca %Node + store %Node %p6, %Node* %p6.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"*, %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"** %this.addr + %2 = load %UntypedPtr, %UntypedPtr* %p1.addr + %3 = load %Location*, %Location** %p2.addr + %4 = load %StringRef, %StringRef* %p3.addr + %5 = load %StringRef, %StringRef* %p4.addr + %6 = load %Node, %Node* %p5.addr + %7 = load %Node, %Node* %p6.addr + %8 = bitcast %"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, StringRef, Node, Node]"* %1 to %Node (%UntypedPtr, %Location*, %StringRef, %StringRef, %Node, %Node)** + %9 = load %Node (%UntypedPtr, %Location*, %StringRef, %StringRef, %Node, %Node)*, %Node (%UntypedPtr, %Location*, %StringRef, %StringRef, %Node, %Node)** %8 + %10 = call %Node %9(%UntypedPtr %2, %Location* %3, %StringRef %4, %StringRef %5, %Node %6, %Node %7) + ret %Node %10 +} + +; Function Attrs: inlinehint nounwind +define internal i1 @parseVarDecl(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %Node* %res) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %res.addr = alloca %Node* + store %Node* %res, %Node** %res.addr + %tmp.this = alloca %TokenType + %ids = alloca %"Vector[LocString]" + %typeNode = alloca %Node + %init = alloca %Node + %tmp.this4 = alloca %TokenType %"$tmpForRef" = alloca %Node - %tmp.this6 = alloca %Node - %ifClause7 = alloca %Node - %children = alloca %Node + %tmp.this8 = alloca %TokenType + %"$tmpForRef9" = alloca %Node + %tmp.this10 = alloca %TokenType + %"$tmpForRef11" = alloca %Node %tmp.this12 = alloca %TokenType - %tmp.this13 = alloca %TokenType - %tmp.this14 = alloca %TokenType - %tmp.this22 = alloca %TokenType - %tmp.this23 = alloca %TokenType - %tmp.this28 = alloca %TokenType - %usingNode = alloca %Node - %"$tmpForRef34" = alloca %Node - %tmp.this42 = alloca %TokenType - %tmp.this43 = alloca %TokenType - %tmp.this48 = alloca %TokenType - %"$tmpForRef49" = alloca %Node - %tmp.this50 = alloca %Node br label %code code: ; preds = %0 br label %if_block if_block: ; preds = %code - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 5) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 9) %2 = load %TokenType, %TokenType* %tmp.this - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, %TokenType %2) %4 = xor i1 true, %3 br i1 %4, label %if_then, label %if_end @@ -24914,546 +30252,788 @@ if_then: ; preds = %if_block ret i1 false if_end: ; preds = %dumy_block, %if_block - %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 1 - %7 = getelementptr inbounds %Token, %Token* %6, i32 0, i32 0 - call void @ctor.171(%Location* %loc, %Location* %7) - %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseId(%String* %id, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8) - %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseFormalsOpt(%Node* %formals, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9, i1 false) + %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @parseIdList(%"Vector[LocString]"* %ids, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %5) + call void @ctor.556(%Node* %typeNode) + call void @ctor.556(%Node* %init) br label %if_block1 dumy_block: ; No predecessors! br label %if_end if_block1: ; preds = %if_end - %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this4, i32 35) - %11 = load %TokenType, %TokenType* %tmp.this4 - %12 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %10, %TokenType %11) - br i1 %12, label %if_then2, label %if_else + %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this4, i32 30) + %7 = load %TokenType, %TokenType* %tmp.this4 + %8 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %6, %TokenType %7) + br i1 %8, label %if_then2, label %if_else if_then2: ; preds = %if_block1 - %13 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseExpr(%Node* %underlyingData, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %13, i1 true) - %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseIfClauseOpt(%Node* %ifClause, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %14) - %15 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this5, i32 31) - %16 = load %TokenType, %TokenType* %tmp.this5 - %17 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %15, %TokenType %16) - %18 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %19 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %18, i32 0, i32 1 - %20 = getelementptr inbounds %Token, %Token* %19, i32 0, i32 0 - call void @copyEnd(%Location* %loc, %Location* %20) - %21 = load %Node*, %Node** %res.addr - %22 = call %StringRef @asStringRef(%String* %id) - %23 = load %Node, %Node* %formals - %24 = load %Node, %Node* %underlyingData - %25 = load %Node, %Node* %ifClause - call void @ctor.432(%Node* %tmp.this6) - %26 = load %Node, %Node* %tmp.this6 - %27 = call %Node @comp_parser_mkDatatype(%Location* %loc, %StringRef %22, %Node %23, %Node %24, %Node %25, %Node %26) - store %Node %27, %Node* %"$tmpForRef" - call void @"=.430"(%Node* %21, %Node* %"$tmpForRef") - br label %if_end3 + %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %10 = call %Node @parseExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %9, i1 false) + store %Node %10, %Node* %"$tmpForRef" + call void @"=.554"(%Node* %typeNode, %Node* %"$tmpForRef") + br label %if_block5 if_else: ; preds = %if_block1 - %28 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseIfClauseOpt(%Node* %ifClause7, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %28) - call void @ctor.432(%Node* %children) - br label %if_block8 + %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this10, i32 35) + %12 = load %TokenType, %TokenType* %tmp.this10 + %13 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %11, %TokenType %12) + %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %15 = call %Node @parseExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %14, i1 true) + store %Node %15, %Node* %"$tmpForRef11" + call void @"=.554"(%Node* %init, %Node* %"$tmpForRef11") + br label %if_end3 -if_end3: ; preds = %if_end11, %if_then2 - call void @dtor.218(%String* %id) +if_end3: ; preds = %if_else, %if_end7 + %16 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this12, i32 31) + %17 = load %TokenType, %TokenType* %tmp.this12 + %18 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %16, %TokenType %17) + %19 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %20 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %19, i32 0, i32 3 + %21 = load %Node, %Node* %typeNode + %22 = load %Node, %Node* %init + %23 = load %Node*, %Node** %res.addr + call void @createFormals(%AstBuilder* %20, %"Vector[LocString]"* %ids, %Node %21, %Node %22, i1 true, %Node* %23) + call void @dtor.586(%"Vector[LocString]"* %ids) ret i1 true -if_block8: ; preds = %if_else - %29 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this12, i32 31) - %30 = load %TokenType, %TokenType* %tmp.this12 - %31 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %29, %TokenType %30) - br i1 %31, label %if_then9, label %if_else10 - -if_then9: ; preds = %if_block8 - br label %if_end11 +if_block5: ; preds = %if_then2 + %24 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this8, i32 35) + %25 = load %TokenType, %TokenType* %tmp.this8 + %26 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %24, %TokenType %25) + br i1 %26, label %if_then6, label %if_end7 -if_else10: ; preds = %if_block8 - %32 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this13, i32 24) - %33 = load %TokenType, %TokenType* %tmp.this13 - %34 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %32, %TokenType %33) - br label %while_block +if_then6: ; preds = %if_block5 + %27 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %28 = call %Node @parseExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %27, i1 true) + store %Node %28, %Node* %"$tmpForRef9" + call void @"=.554"(%Node* %init, %Node* %"$tmpForRef9") + br label %if_end7 -if_end11: ; preds = %while_end, %if_then9 - %35 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %36 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %35, i32 0, i32 1 - %37 = getelementptr inbounds %Token, %Token* %36, i32 0, i32 0 - call void @copyEnd(%Location* %loc, %Location* %37) - %38 = load %Node*, %Node** %res.addr - %39 = call %StringRef @asStringRef(%String* %id) - %40 = load %Node, %Node* %formals - call void @ctor.432(%Node* %tmp.this50) - %41 = load %Node, %Node* %tmp.this50 - %42 = load %Node, %Node* %ifClause7 - %43 = load %Node, %Node* %children - %44 = call %Node @comp_parser_mkDatatype(%Location* %loc, %StringRef %39, %Node %40, %Node %41, %Node %42, %Node %43) - store %Node %44, %Node* %"$tmpForRef49" - call void @"=.430"(%Node* %38, %Node* %"$tmpForRef49") +if_end7: ; preds = %if_then6, %if_block5 br label %if_end3 -while_block: ; preds = %while_step, %if_else10 - %45 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this14, i32 25) - %46 = load %TokenType, %TokenType* %tmp.this14 - %47 = call i1 @nextIs(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %45, %TokenType %46) - %48 = xor i1 true, %47 - br i1 %48, label %cond.true, label %cond.false - -while_body: ; preds = %cond.end - br label %while_block15 - -while_step: ; preds = %cond_destruct_end47 - br label %while_block - -while_end: ; preds = %if_then26, %cond.end - %49 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this48, i32 25) - %50 = load %TokenType, %TokenType* %tmp.this48 - %51 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %49, %TokenType %50) - br label %if_end11 - -cond.true: ; preds = %while_block - %52 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %53 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %52, i32 0, i32 2 - %54 = load i1, i1* %53 - %55 = xor i1 true, %54 - br label %cond.end - -cond.false: ; preds = %while_block - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond.res = phi i1 [ %55, %cond.true ], [ false, %cond.false ] - br i1 %cond.res, label %while_body, label %while_end - -while_block15: ; preds = %while_step17, %while_body - %56 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this22, i32 32) - %57 = load %TokenType, %TokenType* %tmp.this22 - %58 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %56, %TokenType %57) - br i1 %58, label %cond.true19, label %cond.false20 - -while_body16: ; preds = %cond.end21 - br label %while_step17 - -while_step17: ; preds = %while_body16 - br label %while_block15 - -while_end18: ; preds = %cond.end21 - br i1 %58, label %cond_destruct_alt1, label %cond_destruct_alt2 - -cond.true19: ; preds = %while_block15 - br label %cond.end21 +dumy_block13: ; No predecessors! + call void @dtor.586(%"Vector[LocString]"* %ids) + unreachable +} -cond.false20: ; preds = %while_block15 - %59 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this23, i32 31) - %60 = load %TokenType, %TokenType* %tmp.this23 - %61 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %59, %TokenType %60) - br label %cond.end21 +; Function Attrs: inlinehint nounwind +define internal i1 @parseFunDecl(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %Node* %res) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %res.addr = alloca %Node* + store %Node* %res, %Node** %res.addr + %tmp.this = alloca %TokenType + %loc = alloca %Location + %id = alloca %String + %formals = alloca %Node + %"$tmpForRef" = alloca %Node + %retType = alloca %Node + %"$tmpForRef1" = alloca %Node + %body = alloca %Node + %bodyExp = alloca %Node + %ifClause = alloca %Node + %tmp.this5 = alloca %TokenType + %"$tmpForRef6" = alloca %Node + %"$tmpForRef7" = alloca %Node + %tmp.this8 = alloca %TokenType + %"$tmpForRef9" = alloca %Node + %"$tmpForRef10" = alloca %Node + %"$tmpForRef11" = alloca %Node + br label %code -cond.end21: ; preds = %cond.false20, %cond.true19 - %cond.res24 = phi i1 [ true, %cond.true19 ], [ %61, %cond.false20 ] - br i1 %cond.res24, label %while_body16, label %while_end18 +code: ; preds = %0 + br label %if_block -cond_destruct_alt1: ; preds = %while_end18 - br label %cond_destruct_end +if_block: ; preds = %code + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 6) + %2 = load %TokenType, %TokenType* %tmp.this + %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, %TokenType %2) + %4 = xor i1 true, %3 + br i1 %4, label %if_then, label %if_end -cond_destruct_alt2: ; preds = %while_end18 - br label %cond_destruct_end +if_then: ; preds = %if_block + ret i1 false -cond_destruct_end: ; preds = %cond_destruct_alt2, %cond_destruct_alt1 - br label %if_block25 +if_end: ; preds = %dumy_block, %if_block + %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %5, i32 0, i32 1 + %7 = getelementptr inbounds %Token, %Token* %6, i32 0, i32 0 + call void @ctor.182(%Location* %loc, %Location* %7) + %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @parseFunNameString(%String* %id, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %8) + %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %10 = call %Node @parseFormalsOpt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %9, i1 false) + store %Node %10, %Node* %"$tmpForRef" + call void @ctor.545(%Node* %formals, %Node* %"$tmpForRef") + %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %12 = call %Node @parseTypeNode(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %11) + store %Node %12, %Node* %"$tmpForRef1" + call void @ctor.545(%Node* %retType, %Node* %"$tmpForRef1") + call void @ctor.556(%Node* %body) + call void @ctor.556(%Node* %bodyExp) + call void @ctor.556(%Node* %ifClause) + br label %if_block2 -if_block25: ; preds = %cond_destruct_end - %62 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this28, i32 25) - %63 = load %TokenType, %TokenType* %tmp.this28 - %64 = call i1 @nextIs(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %62, %TokenType %63) - br i1 %64, label %if_then26, label %if_end27 +dumy_block: ; No predecessors! + br label %if_end -if_then26: ; preds = %if_block25 - br label %while_end +if_block2: ; preds = %if_end + %13 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this5, i32 35) + %14 = load %TokenType, %TokenType* %tmp.this5 + %15 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %13, %TokenType %14) + br i1 %15, label %if_then3, label %if_else -if_end27: ; preds = %dumy_block29, %if_block25 - call void @ctor.432(%Node* %usingNode) - br label %if_block30 +if_then3: ; preds = %if_block2 + %16 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %17 = call %Node @parseExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %16, i1 true) + store %Node %17, %Node* %"$tmpForRef6" + call void @"=.554"(%Node* %bodyExp, %Node* %"$tmpForRef6") + %18 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %19 = call %Node @parseIfClauseOpt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %18) + store %Node %19, %Node* %"$tmpForRef7" + call void @"=.554"(%Node* %ifClause, %Node* %"$tmpForRef7") + %20 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this8, i32 31) + %21 = load %TokenType, %TokenType* %tmp.this8 + %22 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %20, %TokenType %21) + br label %if_end4 -dumy_block29: ; No predecessors! - br label %if_end27 +if_else: ; preds = %if_block2 + %23 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %24 = call %Node @parseIfClauseOpt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %23) + store %Node %24, %Node* %"$tmpForRef9" + call void @"=.554"(%Node* %ifClause, %Node* %"$tmpForRef9") + %25 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %26 = call %Node @parseFunBody(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %25) + store %Node %26, %Node* %"$tmpForRef10" + call void @"=.554"(%Node* %body, %Node* %"$tmpForRef10") + br label %if_end4 -if_block30: ; preds = %if_end27 - %65 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %66 = call i1 @parseUsingDecl(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %65, %Node* %usingNode) - br i1 %66, label %if_then31, label %if_else32 - -if_then31: ; preds = %if_block30 - %67 = load %Node, %Node* %children - %68 = load %Node, %Node* %usingNode - %69 = call %Node @comp_parser_addToNodeList(%Node %67, %Node %68) - store %Node %69, %Node* %"$tmpForRef34" - call void @"=.430"(%Node* %children, %Node* %"$tmpForRef34") - br label %if_end33 +if_end4: ; preds = %if_else, %if_then3 + %27 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %28 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %27, i32 0, i32 1 + %29 = getelementptr inbounds %Token, %Token* %28, i32 0, i32 0 + call void @copyEnd(%Location* %loc, %Location* %29) + %30 = load %Node*, %Node** %res.addr + %31 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %32 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %31, i32 0, i32 3 + %33 = call %StringRef @asStringRef(%String* %id) + %34 = load %Node, %Node* %formals + %35 = load %Node, %Node* %retType + %36 = load %Node, %Node* %body + %37 = load %Node, %Node* %bodyExp + %38 = load %Node, %Node* %ifClause + %39 = call %Node @mkFun(%AstBuilder* %32, %Location* %loc, %StringRef %33, %Node %34, %Node %35, %Node %36, %Node %37, %Node %38) + store %Node %39, %Node* %"$tmpForRef11" + call void @"=.554"(%Node* %30, %Node* %"$tmpForRef11") + call void @dtor.261(%String* %id) + ret i1 true -if_else32: ; preds = %if_block30 - %70 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseFieldsLine(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %70, %Node* %children) - br label %if_end33 +dumy_block12: ; No predecessors! + call void @dtor.261(%String* %id) + unreachable +} -if_end33: ; preds = %if_else32, %if_then31 - br label %while_block35 +; Function Attrs: inlinehint nounwind +define internal void @parseFunNameString(%String* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this) #4 { + %_result.addr = alloca %String* + store %String* %_result, %String** %_result.addr + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %tmp.this = alloca %TokenType + %"$tmpForRef" = alloca %StringRef + %tmp.StringRef = alloca %StringRef + %tmp.this4 = alloca %TokenType + %tmp.this5 = alloca %TokenType + %"$tmpForRef6" = alloca %StringRef + %tmp.StringRef7 = alloca %StringRef + br label %code -while_block35: ; preds = %while_step37, %if_end33 - %71 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this42, i32 32) - %72 = load %TokenType, %TokenType* %tmp.this42 - %73 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %71, %TokenType %72) - br i1 %73, label %cond.true39, label %cond.false40 +code: ; preds = %0 + br label %if_block -while_body36: ; preds = %cond.end41 - br label %while_step37 +if_block: ; preds = %code + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 33) + %2 = load %TokenType, %TokenType* %tmp.this + %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, %TokenType %2) + br i1 %3, label %if_then, label %if_end -while_step37: ; preds = %while_body36 - br label %while_block35 +if_then: ; preds = %if_block + %4 = load %String*, %String** %_result.addr + %5 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 0 + %6 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 1 + store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.103, i32 0, i32 0), i8** %5 + store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.103, i32 0, i32 1), i8** %6 + %7 = load %StringRef, %StringRef* %tmp.StringRef + store %StringRef %7, %StringRef* %"$tmpForRef" + call void @ctor.471(%String* %4, %StringRef* %"$tmpForRef") + ret void -while_end38: ; preds = %cond.end41 - br i1 %73, label %cond_destruct_alt145, label %cond_destruct_alt246 +if_end: ; preds = %dumy_block, %if_block + br label %if_block1 -cond.true39: ; preds = %while_block35 - br label %cond.end41 +dumy_block: ; No predecessors! + br label %if_end -cond.false40: ; preds = %while_block35 - %74 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this43, i32 31) - %75 = load %TokenType, %TokenType* %tmp.this43 - %76 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %74, %TokenType %75) - br label %cond.end41 +if_block1: ; preds = %if_end + %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this4, i32 28) + %9 = load %TokenType, %TokenType* %tmp.this4 + %10 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %8, %TokenType %9) + br i1 %10, label %if_then2, label %if_end3 -cond.end41: ; preds = %cond.false40, %cond.true39 - %cond.res44 = phi i1 [ true, %cond.true39 ], [ %76, %cond.false40 ] - br i1 %cond.res44, label %while_body36, label %while_end38 +if_then2: ; preds = %if_block1 + %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this5, i32 29) + %12 = load %TokenType, %TokenType* %tmp.this5 + %13 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %11, %TokenType %12) + %14 = load %String*, %String** %_result.addr + %15 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef7, i32 0, i32 0 + %16 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef7, i32 0, i32 1 + store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @str.104, i32 0, i32 0), i8** %15 + store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @str.104, i32 0, i32 2), i8** %16 + %17 = load %StringRef, %StringRef* %tmp.StringRef7 + store %StringRef %17, %StringRef* %"$tmpForRef6" + call void @ctor.471(%String* %14, %StringRef* %"$tmpForRef6") + ret void -cond_destruct_alt145: ; preds = %while_end38 - br label %cond_destruct_end47 +if_end3: ; preds = %dumy_block8, %if_block1 + %18 = load %String*, %String** %_result.addr + %19 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @parseIdOrOper(%String* %18, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %19, i1 true) + ret void -cond_destruct_alt246: ; preds = %while_end38 - br label %cond_destruct_end47 +dumy_block8: ; No predecessors! + br label %if_end3 +} -cond_destruct_end47: ; preds = %cond_destruct_alt246, %cond_destruct_alt145 - br label %while_step +; Function Attrs: inlinehint nounwind +define internal %Node @mkFun(%AstBuilder* %obj, %Location* %loc, %StringRef %name, %Node %formals, %Node %retType, %Node %body, %Node %bodyExp, %Node %ifClause) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %name.addr = alloca %StringRef + store %StringRef %name, %StringRef* %name.addr + %formals.addr = alloca %Node + store %Node %formals, %Node* %formals.addr + %retType.addr = alloca %Node + store %Node %retType, %Node* %retType.addr + %body.addr = alloca %Node + store %Node %body, %Node* %body.addr + %bodyExp.addr = alloca %Node + store %Node %bodyExp, %Node* %bodyExp.addr + %ifClause.addr = alloca %Node + store %Node %ifClause, %Node* %ifClause.addr + br label %code + +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 12 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load %StringRef, %StringRef* %name.addr + %8 = load %Node, %Node* %formals.addr + %9 = load %Node, %Node* %retType.addr + %10 = load %Node, %Node* %body.addr + %11 = load %Node, %Node* %bodyExp.addr + %12 = load %Node, %Node* %ifClause.addr + %13 = call %Node @"().615"(%"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* %2, %UntypedPtr %5, %Location* %6, %StringRef %7, %Node %8, %Node %9, %Node %10, %Node %11, %Node %12) + ret %Node %13 +} + +; Function Attrs: inlinehint nounwind +define internal %Node @"().615"(%"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* %this, %UntypedPtr %p1, %Location* %p2, %StringRef %p3, %Node %p4, %Node %p5, %Node %p6, %Node %p7, %Node %p8) #4 { + %this.addr = alloca %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* + store %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* %this, %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"** %this.addr + %p1.addr = alloca %UntypedPtr + store %UntypedPtr %p1, %UntypedPtr* %p1.addr + %p2.addr = alloca %Location* + store %Location* %p2, %Location** %p2.addr + %p3.addr = alloca %StringRef + store %StringRef %p3, %StringRef* %p3.addr + %p4.addr = alloca %Node + store %Node %p4, %Node* %p4.addr + %p5.addr = alloca %Node + store %Node %p5, %Node* %p5.addr + %p6.addr = alloca %Node + store %Node %p6, %Node* %p6.addr + %p7.addr = alloca %Node + store %Node %p7, %Node* %p7.addr + %p8.addr = alloca %Node + store %Node %p8, %Node* %p8.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"*, %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"** %this.addr + %2 = load %UntypedPtr, %UntypedPtr* %p1.addr + %3 = load %Location*, %Location** %p2.addr + %4 = load %StringRef, %StringRef* %p3.addr + %5 = load %Node, %Node* %p4.addr + %6 = load %Node, %Node* %p5.addr + %7 = load %Node, %Node* %p6.addr + %8 = load %Node, %Node* %p7.addr + %9 = load %Node, %Node* %p8.addr + %10 = bitcast %"FunctionPtr8[Node, UntypedPtr, @Location, StringRef, Node, Node, Node, Node, Node]"* %1 to %Node (%UntypedPtr, %Location*, %StringRef, %Node, %Node, %Node, %Node, %Node)** + %11 = load %Node (%UntypedPtr, %Location*, %StringRef, %Node, %Node, %Node, %Node, %Node)*, %Node (%UntypedPtr, %Location*, %StringRef, %Node, %Node, %Node, %Node, %Node)** %10 + %12 = call %Node %11(%UntypedPtr %2, %Location* %3, %StringRef %4, %Node %5, %Node %6, %Node %7, %Node %8, %Node %9) + ret %Node %12 +} + +; Function Attrs: inlinehint nounwind +define internal i1 @parseExprStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %Node* %res) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %res.addr = alloca %Node* + store %Node* %res, %Node** %res.addr + br label %code -dumy_block51: ; No predecessors! - call void @dtor.218(%String* %id) - unreachable +code: ; preds = %0 + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %2 = load %Node*, %Node** %res.addr + %3 = call i1 @parseExprOpt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, %Node* %2, i1 true) + ret i1 %3 } -declare %Node @comp_parser_mkDatatype(%Location*, %StringRef, %Node, %Node, %Node, %Node) - ; Function Attrs: inlinehint nounwind -define internal void @parseFieldsLine(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %Node* %res) #4 { - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal i1 @parseIfStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %Node* %res, i1 %topLevel) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %res.addr = alloca %Node* store %Node* %res, %Node** %res.addr - %ids = alloca %"Vector[LocString]" + %topLevel.addr = alloca i1 + store i1 %topLevel, i1* %topLevel.addr + %loc = alloca %Location %tmp.this = alloca %TokenType - %typeNode = alloca %Node - %init = alloca %Node - %tmp.this1 = alloca %TokenType - %"$tmpC" = alloca %Node - %"$rangeVar" = alloca %"ContiguousMemoryRange[LocString]" - %id = alloca %LocString* - %v = alloca %Node + %expr = alloca %Node %"$tmpForRef" = alloca %Node - %"$tmpForRef2" = alloca %Node + %thenClause = alloca %Node + %"$tmpForRef1" = alloca %Node + %elseClause = alloca %Node + %tmp.this5 = alloca %TokenType + %"$tmpForRef6" = alloca %Node + %"$tmpForRef7" = alloca %Node br label %code code: ; preds = %0 - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseIdList(%"Vector[LocString]"* %ids, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1) - %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 30) - %3 = load %TokenType, %TokenType* %tmp.this - %4 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, %TokenType %3) - %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseExpr(%Node* %typeNode, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i1 false) - call void @ctor.432(%Node* %init) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @curLoc(%Location* %loc, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1) br label %if_block if_block: ; preds = %code - %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this1, i32 35) - %7 = load %TokenType, %TokenType* %tmp.this1 - %8 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %6, %TokenType %7) - br i1 %8, label %if_then, label %if_end + %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 15) + %3 = load %TokenType, %TokenType* %tmp.this + %4 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %2, %TokenType %3) + br i1 %4, label %if_then, label %if_end if_then: ; preds = %if_block - %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseExpr(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9, i1 true) - call void @"=.430"(%Node* %init, %Node* %"$tmpC") - br label %if_end + %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %6 = call %Node @parseExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %5, i1 true) + store %Node %6, %Node* %"$tmpForRef" + call void @ctor.545(%Node* %expr, %Node* %"$tmpForRef") + %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %8 = load i1, i1* %topLevel.addr + %9 = call %Node @parseStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %7, i1 %8) + store %Node %9, %Node* %"$tmpForRef1" + call void @ctor.545(%Node* %thenClause, %Node* %"$tmpForRef1") + call void @ctor.556(%Node* %elseClause) + br label %if_block2 -if_end: ; preds = %if_then, %if_block - call void @all.465(%"ContiguousMemoryRange[LocString]"* %"$rangeVar", %"Vector[LocString]"* %ids) - br label %while_block +if_end: ; preds = %dumy_block, %if_block + ret i1 false -while_block: ; preds = %while_step, %if_end - %10 = load %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %"$rangeVar" - %11 = call i1 @isEmpty.467(%"ContiguousMemoryRange[LocString]" %10) - %12 = xor i1 true, %11 - br i1 %12, label %while_body, label %while_end +if_block2: ; preds = %if_then + %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this5, i32 23) + %11 = load %TokenType, %TokenType* %tmp.this5 + %12 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %10, %TokenType %11) + br i1 %12, label %if_then3, label %if_end4 -while_body: ; preds = %while_block - %13 = load %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %"$rangeVar" - %14 = call %LocString* @front.468(%"ContiguousMemoryRange[LocString]" %13) - store %LocString* %14, %LocString** %id - %15 = load %LocString*, %LocString** %id - %16 = getelementptr inbounds %LocString, %LocString* %15, i32 0, i32 0 - %17 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %16, i32 0, i32 0 - %18 = load %LocString*, %LocString** %id - %19 = getelementptr inbounds %LocString, %LocString* %18, i32 0, i32 0 - %20 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %19, i32 0, i32 1 - %21 = call %StringRef @asStringRef(%String* %20) - %22 = load %Node, %Node* %typeNode - %23 = load %Node, %Node* %init - %24 = call %Node @comp_parser_mkField(%Location* %17, %StringRef %21, %Node %22, %Node %23) - store %Node %24, %Node* %"$tmpForRef" - call void @ctor.428(%Node* %v, %Node* %"$tmpForRef") - %25 = load %Node*, %Node** %res.addr - %26 = load %Node*, %Node** %res.addr - %27 = load %Node, %Node* %26 - %28 = load %Node, %Node* %v - %29 = call %Node @comp_parser_addToNodeList(%Node %27, %Node %28) - store %Node %29, %Node* %"$tmpForRef2" - call void @"=.430"(%Node* %25, %Node* %"$tmpForRef2") - br label %while_step +if_then3: ; preds = %if_block2 + %13 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %14 = load i1, i1* %topLevel.addr + %15 = call %Node @parseStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %13, i1 %14) + store %Node %15, %Node* %"$tmpForRef6" + call void @"=.554"(%Node* %elseClause, %Node* %"$tmpForRef6") + br label %if_end4 -while_step: ; preds = %while_body - call void @popFront.469(%"ContiguousMemoryRange[LocString]"* %"$rangeVar") - br label %while_block +if_end4: ; preds = %if_then3, %if_block2 + %16 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %17 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %16, i32 0, i32 1 + %18 = getelementptr inbounds %Token, %Token* %17, i32 0, i32 0 + call void @copyEnd(%Location* %loc, %Location* %18) + %19 = load %Node*, %Node** %res.addr + %20 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %21 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %20, i32 0, i32 3 + %22 = load %Node, %Node* %expr + %23 = load %Node, %Node* %thenClause + %24 = load %Node, %Node* %elseClause + %25 = call %Node @mkIfStmt(%AstBuilder* %21, %Location* %loc, %Node %22, %Node %23, %Node %24) + store %Node %25, %Node* %"$tmpForRef7" + call void @"=.554"(%Node* %19, %Node* %"$tmpForRef7") + ret i1 true -while_end: ; preds = %while_block - call void @dtor.462(%"Vector[LocString]"* %ids) - ret void +dumy_block: ; No predecessors! + br label %if_end } -declare %Node @comp_parser_mkField(%Location*, %StringRef, %Node, %Node) - ; Function Attrs: inlinehint nounwind -define internal i1 @parseConceptDecl(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %Node* %res) #4 { - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal %Node @mkIfStmt(%AstBuilder* %obj, %Location* %loc, %Node %expr, %Node %thenClause, %Node %elseClause) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %expr.addr = alloca %Node + store %Node %expr, %Node* %expr.addr + %thenClause.addr = alloca %Node + store %Node %thenClause, %Node* %thenClause.addr + %elseClause.addr = alloca %Node + store %Node %elseClause, %Node* %elseClause.addr + br label %code + +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 34 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load %Node, %Node* %expr.addr + %8 = load %Node, %Node* %thenClause.addr + %9 = load %Node, %Node* %elseClause.addr + %10 = call %Node @"().616"(%"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %2, %UntypedPtr %5, %Location* %6, %Node %7, %Node %8, %Node %9) + ret %Node %10 +} + +; Function Attrs: inlinehint nounwind +define internal %Node @"().616"(%"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %this, %UntypedPtr %p1, %Location* %p2, %Node %p3, %Node %p4, %Node %p5) #4 { + %this.addr = alloca %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* + store %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %this, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"** %this.addr + %p1.addr = alloca %UntypedPtr + store %UntypedPtr %p1, %UntypedPtr* %p1.addr + %p2.addr = alloca %Location* + store %Location* %p2, %Location** %p2.addr + %p3.addr = alloca %Node + store %Node %p3, %Node* %p3.addr + %p4.addr = alloca %Node + store %Node %p4, %Node* %p4.addr + %p5.addr = alloca %Node + store %Node %p5, %Node* %p5.addr + br label %code + +code: ; preds = %0 + %1 = load %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"*, %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"** %this.addr + %2 = load %UntypedPtr, %UntypedPtr* %p1.addr + %3 = load %Location*, %Location** %p2.addr + %4 = load %Node, %Node* %p3.addr + %5 = load %Node, %Node* %p4.addr + %6 = load %Node, %Node* %p5.addr + %7 = bitcast %"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %1 to %Node (%UntypedPtr, %Location*, %Node, %Node, %Node)** + %8 = load %Node (%UntypedPtr, %Location*, %Node, %Node, %Node)*, %Node (%UntypedPtr, %Location*, %Node, %Node, %Node)** %7 + %9 = call %Node %8(%UntypedPtr %2, %Location* %3, %Node %4, %Node %5, %Node %6) + ret %Node %9 +} + +; Function Attrs: inlinehint nounwind +define internal i1 @parseForStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %Node* %res, i1 %topLevel) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %res.addr = alloca %Node* store %Node* %res, %Node** %res.addr - %tmp.this = alloca %TokenType + %topLevel.addr = alloca i1 + store i1 %topLevel, i1* %topLevel.addr %loc = alloca %Location + %tmp.this = alloca %TokenType %id = alloca %String - %tmp.this1 = alloca %TokenType - %paramName = alloca %String - %baseConcept = alloca %Node - %tmp.this2 = alloca %TokenType - %ifClause = alloca %Node - %tmp.this3 = alloca %TokenType + %typeNode = alloca %Node + %tmp.this4 = alloca %TokenType %"$tmpForRef" = alloca %Node + %tmp.this5 = alloca %TokenType + %range = alloca %Node + %"$tmpForRef6" = alloca %Node + %action = alloca %Node + %"$tmpForRef7" = alloca %Node + %"$tmpForRef8" = alloca %Node br label %code code: ; preds = %0 + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @curLoc(%Location* %loc, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1) br label %if_block if_block: ; preds = %code - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 4) - %2 = load %TokenType, %TokenType* %tmp.this - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) - %4 = xor i1 true, %3 + %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 14) + %3 = load %TokenType, %TokenType* %tmp.this + %4 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %2, %TokenType %3) br i1 %4, label %if_then, label %if_end if_then: ; preds = %if_block - ret i1 false + %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @parseId(%String* %id, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %5) + call void @ctor.556(%Node* %typeNode) + br label %if_block1 if_end: ; preds = %dumy_block, %if_block - %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 1 - %7 = getelementptr inbounds %Token, %Token* %6, i32 0, i32 0 - call void @ctor.171(%Location* %loc, %Location* %7) - %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseId(%String* %id, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8) - %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this1, i32 28) - %10 = load %TokenType, %TokenType* %tmp.this1 - %11 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9, %TokenType %10) - %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseId(%String* %paramName, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %12) - %13 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseTypeNode(%Node* %baseConcept, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %13) - %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this2, i32 29) - %15 = load %TokenType, %TokenType* %tmp.this2 - %16 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %14, %TokenType %15) - %17 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseIfClauseOpt(%Node* %ifClause, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %17) - %18 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this3, i32 31) - %19 = load %TokenType, %TokenType* %tmp.this3 - %20 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %18, %TokenType %19) - %21 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %22 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %21, i32 0, i32 1 - %23 = getelementptr inbounds %Token, %Token* %22, i32 0, i32 0 - call void @copyEnd(%Location* %loc, %Location* %23) - %24 = load %Node*, %Node** %res.addr + ret i1 false + +if_block1: ; preds = %if_then + %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this4, i32 30) + %7 = load %TokenType, %TokenType* %tmp.this4 + %8 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %6, %TokenType %7) + br i1 %8, label %if_then2, label %if_end3 + +if_then2: ; preds = %if_block1 + %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %10 = call %Node @parseExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %9, i1 false) + store %Node %10, %Node* %"$tmpForRef" + call void @"=.554"(%Node* %typeNode, %Node* %"$tmpForRef") + br label %if_end3 + +if_end3: ; preds = %if_then2, %if_block1 + %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this5, i32 35) + %12 = load %TokenType, %TokenType* %tmp.this5 + %13 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %11, %TokenType %12) + %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %15 = call %Node @parseExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %14, i1 true) + store %Node %15, %Node* %"$tmpForRef6" + call void @ctor.545(%Node* %range, %Node* %"$tmpForRef6") + %16 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %17 = load i1, i1* %topLevel.addr + %18 = call %Node @parseStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %16, i1 %17) + store %Node %18, %Node* %"$tmpForRef7" + call void @ctor.545(%Node* %action, %Node* %"$tmpForRef7") + %19 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %20 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %19, i32 0, i32 1 + %21 = getelementptr inbounds %Token, %Token* %20, i32 0, i32 0 + call void @copyEnd(%Location* %loc, %Location* %21) + %22 = load %Node*, %Node** %res.addr + %23 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %24 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %23, i32 0, i32 3 %25 = call %StringRef @asStringRef(%String* %id) - %26 = call %StringRef @asStringRef(%String* %paramName) - %27 = load %Node, %Node* %baseConcept - %28 = load %Node, %Node* %ifClause - %29 = call %Node @comp_parser_mkConcept(%Location* %loc, %StringRef %25, %StringRef %26, %Node %27, %Node %28) - store %Node %29, %Node* %"$tmpForRef" - call void @"=.430"(%Node* %24, %Node* %"$tmpForRef") - call void @dtor.218(%String* %paramName) - call void @dtor.218(%String* %id) + %26 = load %Node, %Node* %typeNode + %27 = load %Node, %Node* %range + %28 = load %Node, %Node* %action + %29 = call %Node @mkForStmt(%AstBuilder* %24, %Location* %loc, %StringRef %25, %Node %26, %Node %27, %Node %28) + store %Node %29, %Node* %"$tmpForRef8" + call void @"=.554"(%Node* %22, %Node* %"$tmpForRef8") + call void @dtor.261(%String* %id) ret i1 true dumy_block: ; No predecessors! + call void @dtor.261(%String* %id) br label %if_end - -dumy_block4: ; No predecessors! - call void @dtor.218(%String* %paramName) - call void @dtor.218(%String* %id) - unreachable } -declare %Node @comp_parser_mkConcept(%Location*, %StringRef, %StringRef, %Node, %Node) +; Function Attrs: inlinehint nounwind +define internal %Node @mkForStmt(%AstBuilder* %obj, %Location* %loc, %StringRef %id, %Node %typeNode, %Node %range, %Node %action) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %id.addr = alloca %StringRef + store %StringRef %id, %StringRef* %id.addr + %typeNode.addr = alloca %Node + store %Node %typeNode, %Node* %typeNode.addr + %range.addr = alloca %Node + store %Node %range, %Node* %range.addr + %action.addr = alloca %Node + store %Node %action, %Node* %action.addr + br label %code + +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 35 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load %StringRef, %StringRef* %id.addr + %8 = load %Node, %Node* %typeNode.addr + %9 = load %Node, %Node* %range.addr + %10 = load %Node, %Node* %action.addr + %11 = call %Node @"().612"(%"FunctionPtr6[Node, UntypedPtr, @Location, StringRef, Node, Node, Node]"* %2, %UntypedPtr %5, %Location* %6, %StringRef %7, %Node %8, %Node %9, %Node %10) + ret %Node %11 +} ; Function Attrs: inlinehint nounwind -define internal i1 @parseVarDecl(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %Node* %res) #4 { - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal i1 @parseWhileStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %Node* %res, i1 %topLevel) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %res.addr = alloca %Node* store %Node* %res, %Node** %res.addr + %topLevel.addr = alloca i1 + store i1 %topLevel, i1* %topLevel.addr + %loc = alloca %Location %tmp.this = alloca %TokenType - %ids = alloca %"Vector[LocString]" - %typeNode = alloca %Node - %init = alloca %Node + %expr = alloca %Node + %"$tmpForRef" = alloca %Node + %stepAction = alloca %Node %tmp.this4 = alloca %TokenType - %"$tmpC" = alloca %Node - %tmp.this8 = alloca %TokenType - %"$tmpC9" = alloca %Node - %tmp.this10 = alloca %TokenType - %"$tmpC11" = alloca %Node - %tmp.this12 = alloca %TokenType + %"$tmpC" = alloca %String + %tmp.StringRef = alloca %StringRef + %"$tmpC8" = alloca %Token + %tmp.StringRef9 = alloca %StringRef + %body = alloca %Node + %"$tmpForRef10" = alloca %Node + %"$tmpForRef11" = alloca %Node br label %code code: ; preds = %0 + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @curLoc(%Location* %loc, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1) br label %if_block if_block: ; preds = %code - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 9) - %2 = load %TokenType, %TokenType* %tmp.this - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) - %4 = xor i1 true, %3 + %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 19) + %3 = load %TokenType, %TokenType* %tmp.this + %4 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %2, %TokenType %3) br i1 %4, label %if_then, label %if_end if_then: ; preds = %if_block - ret i1 false - -if_end: ; preds = %dumy_block, %if_block - %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseIdList(%"Vector[LocString]"* %ids, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5) - call void @ctor.432(%Node* %typeNode) - call void @ctor.432(%Node* %init) + %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %6 = call %Node @parseExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %5, i1 true) + store %Node %6, %Node* %"$tmpForRef" + call void @ctor.545(%Node* %expr, %Node* %"$tmpForRef") + call void @ctor.556(%Node* %stepAction) br label %if_block1 -dumy_block: ; No predecessors! - br label %if_end +if_end: ; preds = %dumy_block, %if_block + ret i1 false -if_block1: ; preds = %if_end - %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this4, i32 30) - %7 = load %TokenType, %TokenType* %tmp.this4 - %8 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %6, %TokenType %7) - br i1 %8, label %if_then2, label %if_else +if_block1: ; preds = %if_then + %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this4, i32 31) + %8 = load %TokenType, %TokenType* %tmp.this4 + %9 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %7, %TokenType %8) + br i1 %9, label %if_then2, label %if_end3 if_then2: ; preds = %if_block1 - %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseExpr(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9, i1 false) - call void @"=.430"(%Node* %typeNode, %Node* %"$tmpC") br label %if_block5 -if_else: ; preds = %if_block1 - %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this10, i32 35) - %11 = load %TokenType, %TokenType* %tmp.this10 - %12 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %10, %TokenType %11) - %13 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseExpr(%Node* %"$tmpC11", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %13, i1 true) - call void @"=.430"(%Node* %init, %Node* %"$tmpC11") - br label %if_end3 - -if_end3: ; preds = %if_else, %if_end7 - %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this12, i32 31) - %15 = load %TokenType, %TokenType* %tmp.this12 - %16 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %14, %TokenType %15) - %17 = load %Node, %Node* %typeNode - %18 = load %Node, %Node* %init - %19 = load %Node*, %Node** %res.addr - call void @createFormals(%"Vector[LocString]"* %ids, %Node %17, %Node %18, i1 true, %Node* %19) - call void @dtor.462(%"Vector[LocString]"* %ids) +if_end3: ; preds = %if_end7, %if_block1 + %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %11 = load i1, i1* %topLevel.addr + %12 = call %Node @parseStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %10, i1 %11) + store %Node %12, %Node* %"$tmpForRef10" + call void @ctor.545(%Node* %body, %Node* %"$tmpForRef10") + %13 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %14 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %13, i32 0, i32 1 + %15 = getelementptr inbounds %Token, %Token* %14, i32 0, i32 0 + call void @copyEnd(%Location* %loc, %Location* %15) + %16 = load %Node*, %Node** %res.addr + %17 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %18 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %17, i32 0, i32 3 + %19 = load %Node, %Node* %expr + %20 = load %Node, %Node* %stepAction + %21 = load %Node, %Node* %body + %22 = call %Node @mkWhileStmt(%AstBuilder* %18, %Location* %loc, %Node %19, %Node %20, %Node %21) + store %Node %22, %Node* %"$tmpForRef11" + call void @"=.554"(%Node* %16, %Node* %"$tmpForRef11") ret i1 true if_block5: ; preds = %if_then2 - %20 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this8, i32 35) - %21 = load %TokenType, %TokenType* %tmp.this8 - %22 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %20, %TokenType %21) - br i1 %22, label %if_then6, label %if_end7 + %23 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %24 = call i1 @parseExprOpt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %23, %Node* %stepAction, i1 true) + %25 = xor i1 true, %24 + br i1 %25, label %cond.true, label %cond.false -if_then6: ; preds = %if_block5 - %23 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseExpr(%Node* %"$tmpC9", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %23, i1 true) - call void @"=.430"(%Node* %init, %Node* %"$tmpC9") +if_then6: ; preds = %cond.end + %26 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %27 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 0 + %28 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 1 + store i8* getelementptr inbounds ([26 x i8], [26 x i8]* @str.105, i32 0, i32 0), i8** %27 + store i8* getelementptr inbounds ([26 x i8], [26 x i8]* @str.105, i32 0, i32 25), i8** %28 + %29 = load %StringRef, %StringRef* %tmp.StringRef + %30 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %31 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %30, i32 0, i32 0 + call void @"pre_*.543"(%Token* %"$tmpC8", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %31) + %32 = getelementptr inbounds %Token, %Token* %"$tmpC8", i32 0, i32 1 + %33 = load %TokenType, %TokenType* %32 + %34 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef9, i32 0, i32 0 + %35 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef9, i32 0, i32 1 + store i8* getelementptr inbounds ([42 x i8], [42 x i8]* @str.106, i32 0, i32 0), i8** %34 + store i8* getelementptr inbounds ([42 x i8], [42 x i8]* @str.106, i32 0, i32 41), i8** %35 + %36 = load %StringRef, %StringRef* %tmp.StringRef9 + call void @toString.597(%String* %"$tmpC", %StringRef %29, %TokenType %33, %StringRef %36) + call void @reportError.548(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %26, %String* %"$tmpC") + call void @dtor.261(%String* %"$tmpC") + call void @dtor.260(%Token* %"$tmpC8") br label %if_end7 -if_end7: ; preds = %if_then6, %if_block5 +if_end7: ; preds = %if_then6, %cond.end br label %if_end3 -dumy_block13: ; No predecessors! - call void @dtor.462(%"Vector[LocString]"* %ids) - unreachable +cond.true: ; preds = %if_block5 + %37 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %38 = load i1, i1* %topLevel.addr + %39 = call i1 @parseBlockStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %37, %Node* %stepAction, i1 %38) + %40 = xor i1 true, %39 + br label %cond.end + +cond.false: ; preds = %if_block5 + br label %cond.end + +cond.end: ; preds = %cond.false, %cond.true + %cond.res = phi i1 [ %40, %cond.true ], [ false, %cond.false ] + br i1 %cond.res, label %if_then6, label %if_end7 + +dumy_block: ; No predecessors! + br label %if_end +} + +; Function Attrs: inlinehint nounwind +define internal %Node @mkWhileStmt(%AstBuilder* %obj, %Location* %loc, %Node %expr, %Node %stepAction, %Node %body) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %expr.addr = alloca %Node + store %Node %expr, %Node* %expr.addr + %stepAction.addr = alloca %Node + store %Node %stepAction, %Node* %stepAction.addr + %body.addr = alloca %Node + store %Node %body, %Node* %body.addr + br label %code + +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 36 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load %Node, %Node* %expr.addr + %8 = load %Node, %Node* %stepAction.addr + %9 = load %Node, %Node* %body.addr + %10 = call %Node @"().616"(%"FunctionPtr5[Node, UntypedPtr, @Location, Node, Node, Node]"* %2, %UntypedPtr %5, %Location* %6, %Node %7, %Node %8, %Node %9) + ret %Node %10 } ; Function Attrs: inlinehint nounwind -define internal i1 @parseFunDecl(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %Node* %res) #4 { - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal i1 @parseBreakStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %Node* %res) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %res.addr = alloca %Node* store %Node* %res, %Node** %res.addr %tmp.this = alloca %TokenType %loc = alloca %Location - %id = alloca %String - %formals = alloca %Node - %retType = alloca %Node - %body = alloca %Node - %bodyExp = alloca %Node - %ifClause = alloca %Node - %tmp.this4 = alloca %TokenType - %"$tmpC" = alloca %Node - %"$tmpC5" = alloca %Node - %tmp.this6 = alloca %TokenType - %"$tmpC7" = alloca %Node - %"$tmpC8" = alloca %Node + %tmp.this1 = alloca %TokenType %"$tmpForRef" = alloca %Node br label %code @@ -25461,1894 +31041,2090 @@ code: ; preds = %0 br label %if_block if_block: ; preds = %code - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 6) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 10) %2 = load %TokenType, %TokenType* %tmp.this - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) - %4 = xor i1 true, %3 - br i1 %4, label %if_then, label %if_end + %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, %TokenType %2) + br i1 %3, label %if_then, label %if_end if_then: ; preds = %if_block - ret i1 false + %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %5 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %4, i32 0, i32 1 + %6 = getelementptr inbounds %Token, %Token* %5, i32 0, i32 0 + call void @ctor.182(%Location* %loc, %Location* %6) + %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this1, i32 31) + %8 = load %TokenType, %TokenType* %tmp.this1 + %9 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %7, %TokenType %8) + %10 = load %Node*, %Node** %res.addr + %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %12 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %11, i32 0, i32 3 + %13 = call %Node @mkBreakStmt(%AstBuilder* %12, %Location* %loc) + store %Node %13, %Node* %"$tmpForRef" + call void @"=.554"(%Node* %10, %Node* %"$tmpForRef") + ret i1 true if_end: ; preds = %dumy_block, %if_block - %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %6 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i32 0, i32 1 - %7 = getelementptr inbounds %Token, %Token* %6, i32 0, i32 0 - call void @ctor.171(%Location* %loc, %Location* %7) - %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseFunNameString(%String* %id, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8) - %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseFormalsOpt(%Node* %formals, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9, i1 false) - %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseTypeNode(%Node* %retType, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %10) - call void @ctor.432(%Node* %body) - call void @ctor.432(%Node* %bodyExp) - call void @ctor.432(%Node* %ifClause) - br label %if_block1 + ret i1 false dumy_block: ; No predecessors! br label %if_end +} -if_block1: ; preds = %if_end - %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this4, i32 35) - %12 = load %TokenType, %TokenType* %tmp.this4 - %13 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11, %TokenType %12) - br i1 %13, label %if_then2, label %if_else - -if_then2: ; preds = %if_block1 - %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseExpr(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %14, i1 true) - call void @"=.430"(%Node* %bodyExp, %Node* %"$tmpC") - %15 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseIfClauseOpt(%Node* %"$tmpC5", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %15) - call void @"=.430"(%Node* %ifClause, %Node* %"$tmpC5") - %16 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this6, i32 31) - %17 = load %TokenType, %TokenType* %tmp.this6 - %18 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %16, %TokenType %17) - br label %if_end3 - -if_else: ; preds = %if_block1 - %19 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseIfClauseOpt(%Node* %"$tmpC7", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %19) - call void @"=.430"(%Node* %ifClause, %Node* %"$tmpC7") - %20 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseFunBody(%Node* %"$tmpC8", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %20) - call void @"=.430"(%Node* %body, %Node* %"$tmpC8") - br label %if_end3 - -if_end3: ; preds = %if_else, %if_then2 - %21 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %22 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %21, i32 0, i32 1 - %23 = getelementptr inbounds %Token, %Token* %22, i32 0, i32 0 - call void @copyEnd(%Location* %loc, %Location* %23) - %24 = load %Node*, %Node** %res.addr - %25 = call %StringRef @asStringRef(%String* %id) - %26 = load %Node, %Node* %formals - %27 = load %Node, %Node* %retType - %28 = load %Node, %Node* %body - %29 = load %Node, %Node* %bodyExp - %30 = load %Node, %Node* %ifClause - %31 = call %Node @comp_parser_mkFun(%Location* %loc, %StringRef %25, %Node %26, %Node %27, %Node %28, %Node %29, %Node %30) - store %Node %31, %Node* %"$tmpForRef" - call void @"=.430"(%Node* %24, %Node* %"$tmpForRef") - call void @dtor.218(%String* %id) - ret i1 true +; Function Attrs: inlinehint nounwind +define internal %Node @mkBreakStmt(%AstBuilder* %obj, %Location* %loc) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + br label %code -dumy_block9: ; No predecessors! - call void @dtor.218(%String* %id) - unreachable +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 37 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = call %Node @"().600"(%"FunctionPtr2[Node, UntypedPtr, @Location]"* %2, %UntypedPtr %5, %Location* %6) + ret %Node %7 } ; Function Attrs: inlinehint nounwind -define internal void @parseFunNameString(%String* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this) #4 { - %_result.addr = alloca %String* - store %String* %_result, %String** %_result.addr - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal i1 @parseContinueStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %Node* %res) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %res.addr = alloca %Node* + store %Node* %res, %Node** %res.addr %tmp.this = alloca %TokenType - %"$tmpForRef" = alloca %StringRef - %tmp.StringRef = alloca %StringRef - %tmp.this4 = alloca %TokenType - %tmp.this5 = alloca %TokenType - %"$tmpForRef6" = alloca %StringRef - %tmp.StringRef7 = alloca %StringRef + %loc = alloca %Location + %tmp.this1 = alloca %TokenType + %"$tmpForRef" = alloca %Node br label %code code: ; preds = %0 br label %if_block if_block: ; preds = %code - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 33) + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 12) %2 = load %TokenType, %TokenType* %tmp.this - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_end if_then: ; preds = %if_block - %4 = load %String*, %String** %_result.addr - %5 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 0 - %6 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 1 - store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.102, i32 0, i32 0), i8** %5 - store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.102, i32 0, i32 1), i8** %6 - %7 = load %StringRef, %StringRef* %tmp.StringRef - store %StringRef %7, %StringRef* %"$tmpForRef" - call void @ctor.364(%String* %4, %StringRef* %"$tmpForRef") - ret void + %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %5 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %4, i32 0, i32 1 + %6 = getelementptr inbounds %Token, %Token* %5, i32 0, i32 0 + call void @ctor.182(%Location* %loc, %Location* %6) + %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this1, i32 31) + %8 = load %TokenType, %TokenType* %tmp.this1 + %9 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %7, %TokenType %8) + %10 = load %Node*, %Node** %res.addr + %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %12 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %11, i32 0, i32 3 + %13 = call %Node @mkContinueStmt(%AstBuilder* %12, %Location* %loc) + store %Node %13, %Node* %"$tmpForRef" + call void @"=.554"(%Node* %10, %Node* %"$tmpForRef") + ret i1 true if_end: ; preds = %dumy_block, %if_block - br label %if_block1 + ret i1 false dumy_block: ; No predecessors! br label %if_end - -if_block1: ; preds = %if_end - %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this4, i32 28) - %9 = load %TokenType, %TokenType* %tmp.this4 - %10 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8, %TokenType %9) - br i1 %10, label %if_then2, label %if_end3 - -if_then2: ; preds = %if_block1 - %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this5, i32 29) - %12 = load %TokenType, %TokenType* %tmp.this5 - %13 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11, %TokenType %12) - %14 = load %String*, %String** %_result.addr - %15 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef7, i32 0, i32 0 - %16 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef7, i32 0, i32 1 - store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @str.103, i32 0, i32 0), i8** %15 - store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @str.103, i32 0, i32 2), i8** %16 - %17 = load %StringRef, %StringRef* %tmp.StringRef7 - store %StringRef %17, %StringRef* %"$tmpForRef6" - call void @ctor.364(%String* %14, %StringRef* %"$tmpForRef6") - ret void - -if_end3: ; preds = %dumy_block8, %if_block1 - %18 = load %String*, %String** %_result.addr - %19 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseIdOrOper(%String* %18, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %19, i1 true) - ret void - -dumy_block8: ; No predecessors! - br label %if_end3 } -declare %Node @comp_parser_mkFun(%Location*, %StringRef, %Node, %Node, %Node, %Node, %Node) - ; Function Attrs: inlinehint nounwind -define internal i1 @parseExprStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %Node* %res) #4 { - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %res.addr = alloca %Node* - store %Node* %res, %Node** %res.addr +define internal %Node @mkContinueStmt(%AstBuilder* %obj, %Location* %loc) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr br label %code code: ; preds = %0 - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %2 = load %Node*, %Node** %res.addr - %3 = call i1 @parseExprOpt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %Node* %2, i1 true) - ret i1 %3 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 38 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = call %Node @"().600"(%"FunctionPtr2[Node, UntypedPtr, @Location]"* %2, %UntypedPtr %5, %Location* %6) + ret %Node %7 } ; Function Attrs: inlinehint nounwind -define internal i1 @parseIfStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %Node* %res, i1 %topLevel) #4 { - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr +define internal i1 @parseReturnStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %Node* %res) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %res.addr = alloca %Node* store %Node* %res, %Node** %res.addr - %topLevel.addr = alloca i1 - store i1 %topLevel, i1* %topLevel.addr - %loc = alloca %Location %tmp.this = alloca %TokenType + %loc = alloca %Location %expr = alloca %Node - %thenClause = alloca %Node - %elseClause = alloca %Node - %tmp.this4 = alloca %TokenType - %"$tmpC" = alloca %Node + %tmp.this3 = alloca %TokenType %"$tmpForRef" = alloca %Node + %tmp.this4 = alloca %TokenType + %"$tmpForRef5" = alloca %Node br label %code code: ; preds = %0 - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @curLoc(%Location* %loc, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1) br label %if_block if_block: ; preds = %code - %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 15) - %3 = load %TokenType, %TokenType* %tmp.this - %4 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, %TokenType %3) - br i1 %4, label %if_then, label %if_end + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 16) + %2 = load %TokenType, %TokenType* %tmp.this + %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, %TokenType %2) + br i1 %3, label %if_then, label %if_end if_then: ; preds = %if_block - %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseExpr(%Node* %expr, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i1 true) - %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %7 = load i1, i1* %topLevel.addr - call void @parseStmt(%Node* %thenClause, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %6, i1 %7) - call void @ctor.432(%Node* %elseClause) + %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %5 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %4, i32 0, i32 1 + %6 = getelementptr inbounds %Token, %Token* %5, i32 0, i32 0 + call void @ctor.182(%Location* %loc, %Location* %6) + call void @ctor.556(%Node* %expr) br label %if_block1 if_end: ; preds = %dumy_block, %if_block ret i1 false if_block1: ; preds = %if_then - %8 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this4, i32 23) - %9 = load %TokenType, %TokenType* %tmp.this4 - %10 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8, %TokenType %9) - br i1 %10, label %if_then2, label %if_end3 + %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this3, i32 31) + %8 = load %TokenType, %TokenType* %tmp.this3 + %9 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %7, %TokenType %8) + br i1 %9, label %if_end2, label %if_else -if_then2: ; preds = %if_block1 - %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %12 = load i1, i1* %topLevel.addr - call void @parseStmt(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11, i1 %12) - call void @"=.430"(%Node* %elseClause, %Node* %"$tmpC") - br label %if_end3 +if_else: ; preds = %if_block1 + %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %11 = call %Node @parseExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %10, i1 true) + store %Node %11, %Node* %"$tmpForRef" + call void @"=.554"(%Node* %expr, %Node* %"$tmpForRef") + %12 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this4, i32 31) + %13 = load %TokenType, %TokenType* %tmp.this4 + %14 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %12, %TokenType %13) + br label %if_end2 -if_end3: ; preds = %if_then2, %if_block1 - %13 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %14 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %13, i32 0, i32 1 - %15 = getelementptr inbounds %Token, %Token* %14, i32 0, i32 0 - call void @copyEnd(%Location* %loc, %Location* %15) - %16 = load %Node*, %Node** %res.addr - %17 = load %Node, %Node* %expr - %18 = load %Node, %Node* %thenClause - %19 = load %Node, %Node* %elseClause - %20 = call %Node @comp_parser_mkIfStmt(%Location* %loc, %Node %17, %Node %18, %Node %19) - store %Node %20, %Node* %"$tmpForRef" - call void @"=.430"(%Node* %16, %Node* %"$tmpForRef") +if_end2: ; preds = %if_else, %if_block1 + %15 = load %Node*, %Node** %res.addr + %16 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %17 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %16, i32 0, i32 3 + %18 = load %Node, %Node* %expr + %19 = call %Node @mkReturnStmt(%AstBuilder* %17, %Location* %loc, %Node %18) + store %Node %19, %Node* %"$tmpForRef5" + call void @"=.554"(%Node* %15, %Node* %"$tmpForRef5") ret i1 true -dumy_block: ; No predecessors! - br label %if_end +dumy_block: ; No predecessors! + br label %if_end +} + +; Function Attrs: inlinehint nounwind +define internal %Node @mkReturnStmt(%AstBuilder* %obj, %Location* %loc, %Node %expr) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %expr.addr = alloca %Node + store %Node %expr, %Node* %expr.addr + br label %code + +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 39 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load %Node, %Node* %expr.addr + %8 = call %Node @"().596"(%"FunctionPtr3[Node, UntypedPtr, @Location, Node]"* %2, %UntypedPtr %5, %Location* %6, %Node %7) + ret %Node %8 +} + +; Function Attrs: inlinehint nounwind +define internal %Node @mkModifiers(%AstBuilder* %obj, %Location* %loc, %Node %main, %Node %mods) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %main.addr = alloca %Node + store %Node %main, %Node* %main.addr + %mods.addr = alloca %Node + store %Node %mods, %Node* %mods.addr + br label %code + +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 2 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load %Node, %Node* %main.addr + %8 = load %Node, %Node* %mods.addr + %9 = call %Node @"().609"(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %2, %UntypedPtr %5, %Location* %6, %Node %7, %Node %8) + ret %Node %9 +} + +; Function Attrs: inlinehint nounwind +define internal %Node @mkModule(%AstBuilder* %obj, %Location* %loc, %Node %moduleName, %Node %decls) #4 { + %obj.addr = alloca %AstBuilder* + store %AstBuilder* %obj, %AstBuilder** %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %moduleName.addr = alloca %Node + store %Node %moduleName, %Node* %moduleName.addr + %decls.addr = alloca %Node + store %Node %decls, %Node* %decls.addr + br label %code + +code: ; preds = %0 + %1 = load %AstBuilder*, %AstBuilder** %obj.addr + %2 = getelementptr inbounds %AstBuilder, %AstBuilder* %1, i32 0, i32 3 + %3 = load %AstBuilder*, %AstBuilder** %obj.addr + %4 = getelementptr inbounds %AstBuilder, %AstBuilder* %3, i32 0, i32 0 + %5 = load %UntypedPtr, %UntypedPtr* %4 + %6 = load %Location*, %Location** %loc.addr + %7 = load %Node, %Node* %moduleName.addr + %8 = load %Node, %Node* %decls.addr + %9 = call %Node @"().609"(%"FunctionPtr4[Node, UntypedPtr, @Location, Node, Node]"* %2, %UntypedPtr %5, %Location* %6, %Node %7, %Node %8) + ret %Node %9 +} + +; Function Attrs: noinline nounwind +define %Node @spr_parserIf_parseExpression(%ParserContext* %ctx) #5 { + %ctx.addr = alloca %ParserContext* + store %ParserContext* %ctx, %ParserContext** %ctx.addr + br label %code + +code: ; preds = %0 + %1 = load %ParserContext*, %ParserContext** %ctx.addr + %2 = getelementptr inbounds %ParserContext, %ParserContext* %1, i32 0, i32 2 + %3 = call %Node @parseExpression(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %2) + ret %Node %3 +} + +; Function Attrs: inlinehint nounwind +define internal %Node @parseExpression(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this) #4 { + %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* + store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %res = alloca %Node + %"$tmpForRef" = alloca %Node + %tmp.this = alloca %TokenType + %tmp.this1 = alloca %TokenType + br label %code + +code: ; preds = %0 + %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %2 = call %Node @parseExpr(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, i1 true) + store %Node %2, %Node* %"$tmpForRef" + call void @ctor.545(%Node* %res, %Node* %"$tmpForRef") + %3 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this, i32 31) + %4 = load %TokenType, %TokenType* %tmp.this + %5 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %3, %TokenType %4) + %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this1, i32 0) + %7 = load %TokenType, %TokenType* %tmp.this1 + %8 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %6, %TokenType %7) + %9 = load %Node, %Node* %res + ret %Node %9 } -declare %Node @comp_parser_mkIfStmt(%Location*, %Node, %Node, %Node) - ; Function Attrs: inlinehint nounwind -define internal i1 @parseForStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %Node* %res, i1 %topLevel) #4 { - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %res.addr = alloca %Node* - store %Node* %res, %Node** %res.addr - %topLevel.addr = alloca i1 - store i1 %topLevel, i1* %topLevel.addr - %loc = alloca %Location - %tmp.this = alloca %TokenType - %id = alloca %String - %typeNode = alloca %Node - %tmp.this4 = alloca %TokenType - %"$tmpC" = alloca %Node - %tmp.this5 = alloca %TokenType - %range = alloca %Node - %action = alloca %Node - %"$tmpForRef" = alloca %Node +define internal i1 @isOctalDigit(i8 %c) #4 { + %c.addr = alloca i8 + store i8 %c, i8* %c.addr br label %code code: ; preds = %0 - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @curLoc(%Location* %loc, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1) - br label %if_block + %1 = load i8, i8* %c.addr + %2 = icmp sle i8 48, %1 + br i1 %2, label %cond.true, label %cond.false -if_block: ; preds = %code - %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 14) - %3 = load %TokenType, %TokenType* %tmp.this - %4 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, %TokenType %3) - br i1 %4, label %if_then, label %if_end +cond.true: ; preds = %code + %3 = load i8, i8* %c.addr + %4 = icmp sle i8 %3, 55 + br label %cond.end -if_then: ; preds = %if_block - %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseId(%String* %id, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5) - call void @ctor.432(%Node* %typeNode) - br label %if_block1 +cond.false: ; preds = %code + br label %cond.end -if_end: ; preds = %dumy_block, %if_block - ret i1 false +cond.end: ; preds = %cond.false, %cond.true + %cond.res = phi i1 [ %4, %cond.true ], [ false, %cond.false ] + ret i1 %cond.res +} -if_block1: ; preds = %if_then - %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this4, i32 30) - %7 = load %TokenType, %TokenType* %tmp.this4 - %8 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %6, %TokenType %7) - br i1 %8, label %if_then2, label %if_end3 +; Function Attrs: inlinehint nounwind +define internal i1 @isBinDigit(i8 %c) #4 { + %c.addr = alloca i8 + store i8 %c, i8* %c.addr + br label %code -if_then2: ; preds = %if_block1 - %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseExpr(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9, i1 false) - call void @"=.430"(%Node* %typeNode, %Node* %"$tmpC") - br label %if_end3 +code: ; preds = %0 + %1 = load i8, i8* %c.addr + %2 = icmp eq i8 %1, 48 + br i1 %2, label %cond.true, label %cond.false -if_end3: ; preds = %if_then2, %if_block1 - %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this5, i32 35) - %11 = load %TokenType, %TokenType* %tmp.this5 - %12 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %10, %TokenType %11) - %13 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseExpr(%Node* %range, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %13, i1 true) - %14 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %15 = load i1, i1* %topLevel.addr - call void @parseStmt(%Node* %action, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %14, i1 %15) - %16 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %17 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %16, i32 0, i32 1 - %18 = getelementptr inbounds %Token, %Token* %17, i32 0, i32 0 - call void @copyEnd(%Location* %loc, %Location* %18) - %19 = load %Node*, %Node** %res.addr - %20 = call %StringRef @asStringRef(%String* %id) - %21 = load %Node, %Node* %typeNode - %22 = load %Node, %Node* %range - %23 = load %Node, %Node* %action - %24 = call %Node @comp_parser_mkForStmt(%Location* %loc, %StringRef %20, %Node %21, %Node %22, %Node %23) - store %Node %24, %Node* %"$tmpForRef" - call void @"=.430"(%Node* %19, %Node* %"$tmpForRef") - call void @dtor.218(%String* %id) - ret i1 true +cond.true: ; preds = %code + br label %cond.end -dumy_block: ; No predecessors! - call void @dtor.218(%String* %id) - br label %if_end -} +cond.false: ; preds = %code + %3 = load i8, i8* %c.addr + %4 = icmp eq i8 %3, 49 + br label %cond.end -declare %Node @comp_parser_mkForStmt(%Location*, %StringRef, %Node, %Node, %Node) +cond.end: ; preds = %cond.false, %cond.true + %cond.res = phi i1 [ true, %cond.true ], [ %4, %cond.false ] + ret i1 %cond.res +} -; Function Attrs: inlinehint nounwind -define internal i1 @parseWhileStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %Node* %res, i1 %topLevel) #4 { - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %res.addr = alloca %Node* - store %Node* %res, %Node** %res.addr - %topLevel.addr = alloca i1 - store i1 %topLevel, i1* %topLevel.addr - %loc = alloca %Location - %tmp.this = alloca %TokenType - %expr = alloca %Node - %stepAction = alloca %Node - %tmp.this4 = alloca %TokenType - %"$tmpC" = alloca %String - %tmp.StringRef = alloca %StringRef - %"$tmpC8" = alloca %Token - %tmp.StringRef9 = alloca %StringRef - %body = alloca %Node - %"$tmpForRef" = alloca %Node +; Function Attrs: alwaysinline nounwind +define internal void @ctor.617(%LocString* %this) #3 { + %this.addr = alloca %LocString* + store %LocString* %this, %LocString** %this.addr br label %code code: ; preds = %0 - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @curLoc(%Location* %loc, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1) - br label %if_block + %1 = load %LocString*, %LocString** %this.addr + %2 = getelementptr inbounds %LocString, %LocString* %1, i32 0, i32 0 + call void @ctor.618(%"Tuple[Location, String]"* %2) + ret void +} -if_block: ; preds = %code - %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 19) - %3 = load %TokenType, %TokenType* %tmp.this - %4 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, %TokenType %3) - br i1 %4, label %if_then, label %if_end +; Function Attrs: alwaysinline nounwind +define internal void @ctor.618(%"Tuple[Location, String]"* %this) #3 { + %this.addr = alloca %"Tuple[Location, String]"* + store %"Tuple[Location, String]"* %this, %"Tuple[Location, String]"** %this.addr + br label %code -if_then: ; preds = %if_block - %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseExpr(%Node* %expr, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, i1 true) - call void @ctor.432(%Node* %stepAction) - br label %if_block1 +code: ; preds = %0 + %1 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %this.addr + %2 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %1, i32 0, i32 0 + call void @ctor.130(%Location* %2) + %3 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %this.addr + %4 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %3, i32 0, i32 1 + call void @ctor.137(%String* %4) + ret void +} -if_end: ; preds = %dumy_block, %if_block - ret i1 false +; Function Attrs: alwaysinline nounwind +define internal void @"=.619"(%LocString* %this, %LocString* %other) #3 { + %this.addr = alloca %LocString* + store %LocString* %this, %LocString** %this.addr + %other.addr = alloca %LocString* + store %LocString* %other, %LocString** %other.addr + br label %code -if_block1: ; preds = %if_then - %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this4, i32 31) - %7 = load %TokenType, %TokenType* %tmp.this4 - %8 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %6, %TokenType %7) - br i1 %8, label %if_then2, label %if_end3 +code: ; preds = %0 + %1 = load %LocString*, %LocString** %this.addr + %2 = getelementptr inbounds %LocString, %LocString* %1, i32 0, i32 0 + %3 = load %LocString*, %LocString** %other.addr + %4 = getelementptr inbounds %LocString, %LocString* %3, i32 0, i32 0 + call void @"=.620"(%"Tuple[Location, String]"* %2, %"Tuple[Location, String]"* %4) + ret void +} -if_then2: ; preds = %if_block1 - br label %if_block5 +; Function Attrs: alwaysinline nounwind +define internal void @"=.620"(%"Tuple[Location, String]"* %this, %"Tuple[Location, String]"* %other) #3 { + %this.addr = alloca %"Tuple[Location, String]"* + store %"Tuple[Location, String]"* %this, %"Tuple[Location, String]"** %this.addr + %other.addr = alloca %"Tuple[Location, String]"* + store %"Tuple[Location, String]"* %other, %"Tuple[Location, String]"** %other.addr + br label %code -if_end3: ; preds = %if_end7, %if_block1 - %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %10 = load i1, i1* %topLevel.addr - call void @parseStmt(%Node* %body, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %9, i1 %10) - %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %12 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11, i32 0, i32 1 - %13 = getelementptr inbounds %Token, %Token* %12, i32 0, i32 0 - call void @copyEnd(%Location* %loc, %Location* %13) - %14 = load %Node*, %Node** %res.addr - %15 = load %Node, %Node* %expr - %16 = load %Node, %Node* %stepAction - %17 = load %Node, %Node* %body - %18 = call %Node @comp_parser_mkWhileStmt(%Location* %loc, %Node %15, %Node %16, %Node %17) - store %Node %18, %Node* %"$tmpForRef" - call void @"=.430"(%Node* %14, %Node* %"$tmpForRef") - ret i1 true +code: ; preds = %0 + %1 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %this.addr + %2 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %1, i32 0, i32 0 + %3 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %other.addr + %4 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %3, i32 0, i32 0 + call void @"=.283"(%Location* %2, %Location* %4) + %5 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %this.addr + %6 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %5, i32 0, i32 1 + %7 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %other.addr + %8 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %7, i32 0, i32 1 + %9 = call %String* @"=.290"(%String* %6, %String* %8) + ret void +} -if_block5: ; preds = %if_then2 - %19 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %20 = call i1 @parseExprOpt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %19, %Node* %stepAction, i1 true) - %21 = xor i1 true, %20 - br i1 %21, label %cond.true, label %cond.false +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.621"(%LocString* %this, %LocString* %other) #3 { + %this.addr = alloca %LocString* + store %LocString* %this, %LocString** %this.addr + %other.addr = alloca %LocString* + store %LocString* %other, %LocString** %other.addr + br label %code -if_then6: ; preds = %cond.end - %22 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %23 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 0 - %24 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef, i32 0, i32 1 - store i8* getelementptr inbounds ([26 x i8], [26 x i8]* @str.104, i32 0, i32 0), i8** %23 - store i8* getelementptr inbounds ([26 x i8], [26 x i8]* @str.104, i32 0, i32 25), i8** %24 - %25 = load %StringRef, %StringRef* %tmp.StringRef - %26 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %27 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %26, i32 0, i32 0 - call void @"pre_*.419"(%Token* %"$tmpC8", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %27) - %28 = getelementptr inbounds %Token, %Token* %"$tmpC8", i32 0, i32 1 - %29 = load %TokenType, %TokenType* %28 - %30 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef9, i32 0, i32 0 - %31 = getelementptr inbounds %StringRef, %StringRef* %tmp.StringRef9, i32 0, i32 1 - store i8* getelementptr inbounds ([42 x i8], [42 x i8]* @str.105, i32 0, i32 0), i8** %30 - store i8* getelementptr inbounds ([42 x i8], [42 x i8]* @str.105, i32 0, i32 41), i8** %31 - %32 = load %StringRef, %StringRef* %tmp.StringRef9 - call void @toString.471(%String* %"$tmpC", %StringRef %25, %TokenType %29, %StringRef %32) - call void @reportError.423(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %22, %String* %"$tmpC") - call void @dtor.218(%String* %"$tmpC") - call void @dtor.217(%Token* %"$tmpC8") - br label %if_end7 +code: ; preds = %0 + %1 = load %LocString*, %LocString** %this.addr + %2 = getelementptr inbounds %LocString, %LocString* %1, i32 0, i32 0 + %3 = load %LocString*, %LocString** %other.addr + %4 = getelementptr inbounds %LocString, %LocString* %3, i32 0, i32 0 + %5 = call i1 @"==.622"(%"Tuple[Location, String]"* %2, %"Tuple[Location, String]"* %4) + ret i1 %5 +} -if_end7: ; preds = %if_then6, %cond.end - br label %if_end3 +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.622"(%"Tuple[Location, String]"* %this, %"Tuple[Location, String]"* %other) #3 { + %this.addr = alloca %"Tuple[Location, String]"* + store %"Tuple[Location, String]"* %this, %"Tuple[Location, String]"** %this.addr + %other.addr = alloca %"Tuple[Location, String]"* + store %"Tuple[Location, String]"* %other, %"Tuple[Location, String]"** %other.addr + br label %code -cond.true: ; preds = %if_block5 - %33 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %34 = load i1, i1* %topLevel.addr - %35 = call i1 @parseBlockStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %33, %Node* %stepAction, i1 %34) - %36 = xor i1 true, %35 +code: ; preds = %0 + %1 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %this.addr + %2 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %1, i32 0, i32 0 + %3 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %other.addr + %4 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %3, i32 0, i32 0 + %5 = call i1 @"==.336"(%Location* %2, %Location* %4) + br i1 %5, label %cond.true, label %cond.false + +cond.true: ; preds = %code + %6 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %this.addr + %7 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %6, i32 0, i32 1 + %8 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %other.addr + %9 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %8, i32 0, i32 1 + %10 = call i1 @"==.343"(%String* %7, %String* %9) br label %cond.end -cond.false: ; preds = %if_block5 +cond.false: ; preds = %code br label %cond.end cond.end: ; preds = %cond.false, %cond.true - %cond.res = phi i1 [ %36, %cond.true ], [ false, %cond.false ] - br i1 %cond.res, label %if_then6, label %if_end7 - -dumy_block: ; No predecessors! - br label %if_end + %cond.res = phi i1 [ %10, %cond.true ], [ false, %cond.false ] + ret i1 %cond.res } -declare %Node @comp_parser_mkWhileStmt(%Location*, %Node, %Node, %Node) +; Function Attrs: alwaysinline nounwind +define internal void @dtor.623(%LineCol* %this) #3 { + %this.addr = alloca %LineCol* + store %LineCol* %this, %LineCol** %this.addr + br label %code -; Function Attrs: inlinehint nounwind -define internal i1 @parseBreakStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %Node* %res) #4 { - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %res.addr = alloca %Node* - store %Node* %res, %Node** %res.addr - %tmp.this = alloca %TokenType - %loc = alloca %Location - %tmp.this1 = alloca %TokenType - %"$tmpForRef" = alloca %Node +code: ; preds = %0 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.624(%SourceCode* %this, i8* %fdata) #3 { + %this.addr = alloca %SourceCode* + store %SourceCode* %this, %SourceCode** %this.addr + %fdata.addr = alloca i8* + store i8* %fdata, i8** %fdata.addr br label %code code: ; preds = %0 - br label %if_block + %1 = load i8*, i8** %fdata.addr + %2 = load %SourceCode*, %SourceCode** %this.addr + %3 = getelementptr inbounds %SourceCode, %SourceCode* %2, i32 0, i32 0 + store i8* %1, i8** %3 + ret void +} -if_block: ; preds = %code - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 10) - %2 = load %TokenType, %TokenType* %tmp.this - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) - br i1 %3, label %if_then, label %if_end +; Function Attrs: alwaysinline nounwind +define internal void @dtor.625(%SourceCode* %this) #3 { + %this.addr = alloca %SourceCode* + store %SourceCode* %this, %SourceCode** %this.addr + br label %code -if_then: ; preds = %if_block - %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %5 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %4, i32 0, i32 1 - %6 = getelementptr inbounds %Token, %Token* %5, i32 0, i32 0 - call void @ctor.171(%Location* %loc, %Location* %6) - %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this1, i32 31) - %8 = load %TokenType, %TokenType* %tmp.this1 - %9 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %7, %TokenType %8) - %10 = load %Node*, %Node** %res.addr - %11 = call %Node @comp_parser_mkBreakStmt(%Location* %loc) - store %Node %11, %Node* %"$tmpForRef" - call void @"=.430"(%Node* %10, %Node* %"$tmpForRef") - ret i1 true +code: ; preds = %0 + ret void +} -if_end: ; preds = %dumy_block, %if_block - ret i1 false +; Function Attrs: alwaysinline nounwind +define internal void @dtor.626(%Location* %this) #3 { + %this.addr = alloca %Location* + store %Location* %this, %Location** %this.addr + br label %code -dumy_block: ; No predecessors! - br label %if_end +code: ; preds = %0 + ret void } -declare %Node @comp_parser_mkBreakStmt(%Location*) - ; Function Attrs: inlinehint nounwind -define internal i1 @parseContinueStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %Node* %res) #4 { - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %res.addr = alloca %Node* - store %Node* %res, %Node** %res.addr - %tmp.this = alloca %TokenType - %loc = alloca %Location - %tmp.this1 = alloca %TokenType - %"$tmpForRef" = alloca %Node +define internal void @mkLineCol(%LineCol* sret %_result, i32 %line, i32 %col) #4 { + %_result.addr = alloca %LineCol* + store %LineCol* %_result, %LineCol** %_result.addr + %line.addr = alloca i32 + store i32 %line, i32* %line.addr + %col.addr = alloca i32 + store i32 %col, i32* %col.addr + %res = alloca %LineCol br label %code code: ; preds = %0 - br label %if_block - -if_block: ; preds = %code - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 12) - %2 = load %TokenType, %TokenType* %tmp.this - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) - br i1 %3, label %if_then, label %if_end - -if_then: ; preds = %if_block - %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %5 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %4, i32 0, i32 1 - %6 = getelementptr inbounds %Token, %Token* %5, i32 0, i32 0 - call void @ctor.171(%Location* %loc, %Location* %6) - %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this1, i32 31) - %8 = load %TokenType, %TokenType* %tmp.this1 - %9 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %7, %TokenType %8) - %10 = load %Node*, %Node** %res.addr - %11 = call %Node @comp_parser_mkContinueStmt(%Location* %loc) - store %Node %11, %Node* %"$tmpForRef" - call void @"=.430"(%Node* %10, %Node* %"$tmpForRef") - ret i1 true - -if_end: ; preds = %dumy_block, %if_block - ret i1 false - -dumy_block: ; No predecessors! - br label %if_end + call void @ctor.132(%LineCol* %res) + %1 = load i32, i32* %line.addr + %2 = getelementptr inbounds %LineCol, %LineCol* %res, i32 0, i32 0 + store i32 %1, i32* %2 + %3 = load i32, i32* %col.addr + %4 = getelementptr inbounds %LineCol, %LineCol* %res, i32 0, i32 1 + store i32 %3, i32* %4 + %5 = load %LineCol*, %LineCol** %_result.addr + call void @ctor.184(%LineCol* %5, %LineCol* %res) + ret void } -declare %Node @comp_parser_mkContinueStmt(%Location*) - ; Function Attrs: inlinehint nounwind -define internal i1 @parseReturnStmt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %Node* %res) #4 { - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %res.addr = alloca %Node* - store %Node* %res, %Node** %res.addr - %tmp.this = alloca %TokenType - %loc = alloca %Location - %expr = alloca %Node - %tmp.this3 = alloca %TokenType - %"$tmpC" = alloca %Node - %tmp.this4 = alloca %TokenType - %"$tmpForRef" = alloca %Node +define internal void @mkLocation(%Location* sret %_result) #4 { + %_result.addr = alloca %Location* + store %Location* %_result, %Location** %_result.addr + %res = alloca %Location br label %code code: ; preds = %0 - br label %if_block - -if_block: ; preds = %code - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 16) - %2 = load %TokenType, %TokenType* %tmp.this - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) - br i1 %3, label %if_then, label %if_end - -if_then: ; preds = %if_block - %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %5 = getelementptr inbounds %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %4, i32 0, i32 1 - %6 = getelementptr inbounds %Token, %Token* %5, i32 0, i32 0 - call void @ctor.171(%Location* %loc, %Location* %6) - call void @ctor.432(%Node* %expr) - br label %if_block1 - -if_end: ; preds = %dumy_block, %if_block - ret i1 false + call void @ctor.130(%Location* %res) + call void @setOne(%Location* %res) + %1 = load %Location*, %Location** %_result.addr + call void @ctor.182(%Location* %1, %Location* %res) + ret void +} -if_block1: ; preds = %if_then - %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this3, i32 31) - %8 = load %TokenType, %TokenType* %tmp.this3 - %9 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %7, %TokenType %8) - br i1 %9, label %if_end2, label %if_else +; Function Attrs: inlinehint nounwind +define internal void @setOne(%Location* %l) #4 { + %l.addr = alloca %Location* + store %Location* %l, %Location** %l.addr + %tmp.this = alloca i32 + %tmp.this1 = alloca i32 + %tmp.this2 = alloca i32 + %tmp.this3 = alloca i32 + br label %code -if_else: ; preds = %if_block1 - %10 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseExpr(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %10, i1 true) - call void @"=.430"(%Node* %expr, %Node* %"$tmpC") - %11 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this4, i32 31) - %12 = load %TokenType, %TokenType* %tmp.this4 - %13 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11, %TokenType %12) - br label %if_end2 +code: ; preds = %0 + store i32 1, i32* %tmp.this + %1 = load i32, i32* %tmp.this + %2 = load %Location*, %Location** %l.addr + %3 = getelementptr inbounds %Location, %Location* %2, i32 0, i32 1 + %4 = getelementptr inbounds %LineCol, %LineCol* %3, i32 0, i32 0 + store i32 %1, i32* %4 + store i32 1, i32* %tmp.this1 + %5 = load i32, i32* %tmp.this1 + %6 = load %Location*, %Location** %l.addr + %7 = getelementptr inbounds %Location, %Location* %6, i32 0, i32 1 + %8 = getelementptr inbounds %LineCol, %LineCol* %7, i32 0, i32 1 + store i32 %5, i32* %8 + store i32 1, i32* %tmp.this2 + %9 = load i32, i32* %tmp.this2 + %10 = load %Location*, %Location** %l.addr + %11 = getelementptr inbounds %Location, %Location* %10, i32 0, i32 2 + %12 = getelementptr inbounds %LineCol, %LineCol* %11, i32 0, i32 0 + store i32 %9, i32* %12 + store i32 1, i32* %tmp.this3 + %13 = load i32, i32* %tmp.this3 + %14 = load %Location*, %Location** %l.addr + %15 = getelementptr inbounds %Location, %Location* %14, i32 0, i32 2 + %16 = getelementptr inbounds %LineCol, %LineCol* %15, i32 0, i32 1 + store i32 %13, i32* %16 + ret void +} -if_end2: ; preds = %if_else, %if_block1 - %14 = load %Node*, %Node** %res.addr - %15 = load %Node, %Node* %expr - %16 = call %Node @comp_parser_mkReturnStmt(%Location* %loc, %Node %15) - store %Node %16, %Node* %"$tmpForRef" - call void @"=.430"(%Node* %14, %Node* %"$tmpForRef") - ret i1 true +; Function Attrs: inlinehint nounwind +define internal void @mkLocation.627(%Location* sret %_result, %SourceCode %sourceCode) #4 { + %_result.addr = alloca %Location* + store %Location* %_result, %Location** %_result.addr + %sourceCode.addr = alloca %SourceCode + store %SourceCode %sourceCode, %SourceCode* %sourceCode.addr + %res = alloca %Location + br label %code -dumy_block: ; No predecessors! - br label %if_end +code: ; preds = %0 + call void @ctor.130(%Location* %res) + %1 = getelementptr inbounds %Location, %Location* %res, i32 0, i32 0 + call void @"=.284"(%SourceCode* %1, %SourceCode* %sourceCode.addr) + call void @setOne(%Location* %res) + %2 = load %Location*, %Location** %_result.addr + call void @ctor.182(%Location* %2, %Location* %res) + ret void } -declare %Node @comp_parser_mkReturnStmt(%Location*, %Node) - -declare %Node @comp_parser_mkModifiers(%Location*, %Node, %Node) +; Function Attrs: inlinehint nounwind +define internal void @mkLocation.628(%Location* sret %_result, %SourceCode %sourceCode, %LineCol %start, %LineCol %end) #4 { + %_result.addr = alloca %Location* + store %Location* %_result, %Location** %_result.addr + %sourceCode.addr = alloca %SourceCode + store %SourceCode %sourceCode, %SourceCode* %sourceCode.addr + %start.addr = alloca %LineCol + store %LineCol %start, %LineCol* %start.addr + %end.addr = alloca %LineCol + store %LineCol %end, %LineCol* %end.addr + %res = alloca %Location + br label %code -declare %Node @comp_parser_mkModule(%Location*, %Node, %Node) +code: ; preds = %0 + call void @ctor.130(%Location* %res) + %1 = getelementptr inbounds %Location, %Location* %res, i32 0, i32 0 + call void @"=.284"(%SourceCode* %1, %SourceCode* %sourceCode.addr) + %2 = getelementptr inbounds %Location, %Location* %res, i32 0, i32 1 + call void @"=.285"(%LineCol* %2, %LineCol* %start.addr) + %3 = getelementptr inbounds %Location, %Location* %res, i32 0, i32 2 + call void @"=.285"(%LineCol* %3, %LineCol* %end.addr) + %4 = load %Location*, %Location** %_result.addr + call void @ctor.182(%Location* %4, %Location* %res) + ret void +} -; Function Attrs: alwaysinline nounwind -define internal void @dtor.472(%Node* %this) #3 { - %this.addr = alloca %Node* - store %Node* %this, %Node** %this.addr +; Function Attrs: inlinehint nounwind +define internal void @copyStart(%Location* %l, %Location* %other) #4 { + %l.addr = alloca %Location* + store %Location* %l, %Location** %l.addr + %other.addr = alloca %Location* + store %Location* %other, %Location** %other.addr br label %code code: ; preds = %0 + %1 = load %Location*, %Location** %l.addr + %2 = getelementptr inbounds %Location, %Location* %1, i32 0, i32 1 + %3 = load %Location*, %Location** %other.addr + %4 = getelementptr inbounds %Location, %Location* %3, i32 0, i32 1 + call void @"=.285"(%LineCol* %2, %LineCol* %4) ret void } -; Function Attrs: noinline nounwind -define %Node @spr_parserIf_parseExpression(%ParserContext* %ctx) #5 { - %ctx.addr = alloca %ParserContext* - store %ParserContext* %ctx, %ParserContext** %ctx.addr - %"$tmpC" = alloca %Node +; Function Attrs: inlinehint nounwind +define internal void @setAsStartOf(%Location* %l, %Location* %other) #4 { + %l.addr = alloca %Location* + store %Location* %l, %Location** %l.addr + %other.addr = alloca %Location* + store %Location* %other, %Location** %other.addr br label %code code: ; preds = %0 - %1 = load %ParserContext*, %ParserContext** %ctx.addr - %2 = getelementptr inbounds %ParserContext, %ParserContext* %1, i32 0, i32 5 - call void @parseExpression(%Node* %"$tmpC", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2) - %3 = load %Node, %Node* %"$tmpC" - ret %Node %3 + %1 = load %Location*, %Location** %l.addr + %2 = getelementptr inbounds %Location, %Location* %1, i32 0, i32 1 + %3 = load %Location*, %Location** %other.addr + %4 = getelementptr inbounds %Location, %Location* %3, i32 0, i32 1 + call void @"=.285"(%LineCol* %2, %LineCol* %4) + %5 = load %Location*, %Location** %l.addr + %6 = getelementptr inbounds %Location, %Location* %5, i32 0, i32 2 + %7 = load %Location*, %Location** %other.addr + %8 = getelementptr inbounds %Location, %Location* %7, i32 0, i32 1 + call void @"=.285"(%LineCol* %6, %LineCol* %8) + ret void } ; Function Attrs: inlinehint nounwind -define internal void @parseExpression(%Node* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this) #4 { - %_result.addr = alloca %Node* - store %Node* %_result, %Node** %_result.addr - %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* - store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - %res = alloca %Node - %tmp.this = alloca %TokenType - %tmp.this1 = alloca %TokenType +define internal void @setAsEndOf(%Location* %l, %Location* %other) #4 { + %l.addr = alloca %Location* + store %Location* %l, %Location** %l.addr + %other.addr = alloca %Location* + store %Location* %other, %Location** %other.addr br label %code code: ; preds = %0 - %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @parseExpr(%Node* %res, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, i1 true) - %2 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this, i32 31) - %3 = load %TokenType, %TokenType* %tmp.this - %4 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, %TokenType %3) - %5 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"** %this.addr - call void @ctor.313(%TokenType* %tmp.this1, i32 0) - %6 = load %TokenType, %TokenType* %tmp.this1 - %7 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, %TokenType %6) - %8 = load %Node*, %Node** %_result.addr - call void @ctor.428(%Node* %8, %Node* %res) + %1 = load %Location*, %Location** %l.addr + %2 = getelementptr inbounds %Location, %Location* %1, i32 0, i32 1 + %3 = load %Location*, %Location** %other.addr + %4 = getelementptr inbounds %Location, %Location* %3, i32 0, i32 2 + call void @"=.285"(%LineCol* %2, %LineCol* %4) + %5 = load %Location*, %Location** %l.addr + %6 = getelementptr inbounds %Location, %Location* %5, i32 0, i32 2 + %7 = load %Location*, %Location** %other.addr + %8 = getelementptr inbounds %Location, %Location* %7, i32 0, i32 2 + call void @"=.285"(%LineCol* %6, %LineCol* %8) ret void } ; Function Attrs: inlinehint nounwind -define internal i1 @isOctalDigit(i8 %c) #4 { - %c.addr = alloca i8 - store i8 %c, i8* %c.addr +define internal i1 @"<"(%Location* %lhs, %Location* %rhs) #4 { + %lhs.addr = alloca %Location* + store %Location* %lhs, %Location** %lhs.addr + %rhs.addr = alloca %Location* + store %Location* %rhs, %Location** %rhs.addr br label %code code: ; preds = %0 - %1 = load i8, i8* %c.addr - %2 = icmp sle i8 48, %1 - br i1 %2, label %cond.true, label %cond.false + br label %if_block -cond.true: ; preds = %code - %3 = load i8, i8* %c.addr - %4 = icmp sle i8 %3, 55 - br label %cond.end +if_block: ; preds = %code + %1 = load %Location*, %Location** %lhs.addr + %2 = getelementptr inbounds %Location, %Location* %1, i32 0, i32 1 + %3 = getelementptr inbounds %LineCol, %LineCol* %2, i32 0, i32 0 + %4 = load i32, i32* %3 + %5 = load %Location*, %Location** %rhs.addr + %6 = getelementptr inbounds %Location, %Location* %5, i32 0, i32 1 + %7 = getelementptr inbounds %LineCol, %LineCol* %6, i32 0, i32 0 + %8 = load i32, i32* %7 + %9 = icmp slt i32 %4, %8 + br i1 %9, label %if_then, label %if_end -cond.false: ; preds = %code - br label %cond.end +if_then: ; preds = %if_block + ret i1 true -cond.end: ; preds = %cond.false, %cond.true - %cond.res = phi i1 [ %4, %cond.true ], [ false, %cond.false ] - ret i1 %cond.res -} +if_end: ; preds = %dumy_block, %if_block + br label %if_block1 -; Function Attrs: inlinehint nounwind -define internal i1 @isBinDigit(i8 %c) #4 { - %c.addr = alloca i8 - store i8 %c, i8* %c.addr - br label %code +dumy_block: ; No predecessors! + br label %if_end + +if_block1: ; preds = %if_end + %10 = load %Location*, %Location** %lhs.addr + %11 = getelementptr inbounds %Location, %Location* %10, i32 0, i32 1 + %12 = getelementptr inbounds %LineCol, %LineCol* %11, i32 0, i32 0 + %13 = load i32, i32* %12 + %14 = load %Location*, %Location** %rhs.addr + %15 = getelementptr inbounds %Location, %Location* %14, i32 0, i32 1 + %16 = getelementptr inbounds %LineCol, %LineCol* %15, i32 0, i32 0 + %17 = load i32, i32* %16 + %18 = icmp sgt i32 %13, %17 + br i1 %18, label %if_then2, label %if_end3 -code: ; preds = %0 - %1 = load i8, i8* %c.addr - %2 = icmp eq i8 %1, 48 - br i1 %2, label %cond.true, label %cond.false +if_then2: ; preds = %if_block1 + ret i1 false -cond.true: ; preds = %code - br label %cond.end +if_end3: ; preds = %dumy_block4, %if_block1 + br label %if_block5 -cond.false: ; preds = %code - %3 = load i8, i8* %c.addr - %4 = icmp eq i8 %3, 49 - br label %cond.end +dumy_block4: ; No predecessors! + br label %if_end3 -cond.end: ; preds = %cond.false, %cond.true - %cond.res = phi i1 [ true, %cond.true ], [ %4, %cond.false ] - ret i1 %cond.res -} +if_block5: ; preds = %if_end3 + %19 = load %Location*, %Location** %lhs.addr + %20 = getelementptr inbounds %Location, %Location* %19, i32 0, i32 1 + %21 = getelementptr inbounds %LineCol, %LineCol* %20, i32 0, i32 1 + %22 = load i32, i32* %21 + %23 = load %Location*, %Location** %rhs.addr + %24 = getelementptr inbounds %Location, %Location* %23, i32 0, i32 1 + %25 = getelementptr inbounds %LineCol, %LineCol* %24, i32 0, i32 1 + %26 = load i32, i32* %25 + %27 = icmp slt i32 %22, %26 + br i1 %27, label %if_then6, label %if_end7 -; Function Attrs: alwaysinline nounwind -define internal void @ctor.473(%LocString* %this) #3 { - %this.addr = alloca %LocString* - store %LocString* %this, %LocString** %this.addr - br label %code +if_then6: ; preds = %if_block5 + ret i1 true -code: ; preds = %0 - %1 = load %LocString*, %LocString** %this.addr - %2 = getelementptr inbounds %LocString, %LocString* %1, i32 0, i32 0 - call void @ctor.474(%"Tuple[Location, String]"* %2) - ret void -} +if_end7: ; preds = %dumy_block8, %if_block5 + br label %if_block9 -; Function Attrs: alwaysinline nounwind -define internal void @ctor.474(%"Tuple[Location, String]"* %this) #3 { - %this.addr = alloca %"Tuple[Location, String]"* - store %"Tuple[Location, String]"* %this, %"Tuple[Location, String]"** %this.addr - br label %code +dumy_block8: ; No predecessors! + br label %if_end7 -code: ; preds = %0 - %1 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %this.addr - %2 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %1, i32 0, i32 0 - call void @ctor.149(%Location* %2) - %3 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %this.addr - %4 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %3, i32 0, i32 1 - call void @ctor.158(%String* %4) - ret void -} +if_block9: ; preds = %if_end7 + %28 = load %Location*, %Location** %lhs.addr + %29 = getelementptr inbounds %Location, %Location* %28, i32 0, i32 1 + %30 = getelementptr inbounds %LineCol, %LineCol* %29, i32 0, i32 1 + %31 = load i32, i32* %30 + %32 = load %Location*, %Location** %rhs.addr + %33 = getelementptr inbounds %Location, %Location* %32, i32 0, i32 1 + %34 = getelementptr inbounds %LineCol, %LineCol* %33, i32 0, i32 1 + %35 = load i32, i32* %34 + %36 = icmp sgt i32 %31, %35 + br i1 %36, label %if_then10, label %if_end11 -; Function Attrs: alwaysinline nounwind -define internal void @"=.475"(%LocString* %this, %LocString* %other) #3 { - %this.addr = alloca %LocString* - store %LocString* %this, %LocString** %this.addr - %other.addr = alloca %LocString* - store %LocString* %other, %LocString** %other.addr - br label %code +if_then10: ; preds = %if_block9 + ret i1 false -code: ; preds = %0 - %1 = load %LocString*, %LocString** %this.addr - %2 = getelementptr inbounds %LocString, %LocString* %1, i32 0, i32 0 - %3 = load %LocString*, %LocString** %other.addr - %4 = getelementptr inbounds %LocString, %LocString* %3, i32 0, i32 0 - call void @"=.476"(%"Tuple[Location, String]"* %2, %"Tuple[Location, String]"* %4) - ret void -} +if_end11: ; preds = %dumy_block12, %if_block9 + br label %if_block13 -; Function Attrs: alwaysinline nounwind -define internal void @"=.476"(%"Tuple[Location, String]"* %this, %"Tuple[Location, String]"* %other) #3 { - %this.addr = alloca %"Tuple[Location, String]"* - store %"Tuple[Location, String]"* %this, %"Tuple[Location, String]"** %this.addr - %other.addr = alloca %"Tuple[Location, String]"* - store %"Tuple[Location, String]"* %other, %"Tuple[Location, String]"** %other.addr - br label %code +dumy_block12: ; No predecessors! + br label %if_end11 -code: ; preds = %0 - %1 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %this.addr - %2 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %1, i32 0, i32 0 - %3 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %other.addr - %4 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %3, i32 0, i32 0 - call void @"=.242"(%Location* %2, %Location* %4) - %5 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %this.addr - %6 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %5, i32 0, i32 1 - %7 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %other.addr - %8 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %7, i32 0, i32 1 - %9 = call %String* @"=.250"(%String* %6, %String* %8) - ret void -} +if_block13: ; preds = %if_end11 + %37 = load %Location*, %Location** %lhs.addr + %38 = getelementptr inbounds %Location, %Location* %37, i32 0, i32 2 + %39 = getelementptr inbounds %LineCol, %LineCol* %38, i32 0, i32 0 + %40 = load i32, i32* %39 + %41 = load %Location*, %Location** %rhs.addr + %42 = getelementptr inbounds %Location, %Location* %41, i32 0, i32 2 + %43 = getelementptr inbounds %LineCol, %LineCol* %42, i32 0, i32 0 + %44 = load i32, i32* %43 + %45 = icmp slt i32 %40, %44 + br i1 %45, label %if_then14, label %if_end15 -; Function Attrs: alwaysinline nounwind -define internal i1 @"==.477"(%LocString* %this, %LocString* %other) #3 { - %this.addr = alloca %LocString* - store %LocString* %this, %LocString** %this.addr - %other.addr = alloca %LocString* - store %LocString* %other, %LocString** %other.addr - br label %code +if_then14: ; preds = %if_block13 + ret i1 true -code: ; preds = %0 - %1 = load %LocString*, %LocString** %this.addr - %2 = getelementptr inbounds %LocString, %LocString* %1, i32 0, i32 0 - %3 = load %LocString*, %LocString** %other.addr - %4 = getelementptr inbounds %LocString, %LocString* %3, i32 0, i32 0 - %5 = call i1 @"==.478"(%"Tuple[Location, String]"* %2, %"Tuple[Location, String]"* %4) - ret i1 %5 -} +if_end15: ; preds = %dumy_block16, %if_block13 + br label %if_block17 -; Function Attrs: alwaysinline nounwind -define internal i1 @"==.478"(%"Tuple[Location, String]"* %this, %"Tuple[Location, String]"* %other) #3 { - %this.addr = alloca %"Tuple[Location, String]"* - store %"Tuple[Location, String]"* %this, %"Tuple[Location, String]"** %this.addr - %other.addr = alloca %"Tuple[Location, String]"* - store %"Tuple[Location, String]"* %other, %"Tuple[Location, String]"** %other.addr - br label %code +dumy_block16: ; No predecessors! + br label %if_end15 -code: ; preds = %0 - %1 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %this.addr - %2 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %1, i32 0, i32 0 - %3 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %other.addr - %4 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %3, i32 0, i32 0 - %5 = call i1 @"==.265"(%Location* %2, %Location* %4) - br i1 %5, label %cond.true, label %cond.false +if_block17: ; preds = %if_end15 + %46 = load %Location*, %Location** %lhs.addr + %47 = getelementptr inbounds %Location, %Location* %46, i32 0, i32 2 + %48 = getelementptr inbounds %LineCol, %LineCol* %47, i32 0, i32 0 + %49 = load i32, i32* %48 + %50 = load %Location*, %Location** %rhs.addr + %51 = getelementptr inbounds %Location, %Location* %50, i32 0, i32 2 + %52 = getelementptr inbounds %LineCol, %LineCol* %51, i32 0, i32 0 + %53 = load i32, i32* %52 + %54 = icmp sgt i32 %49, %53 + br i1 %54, label %if_then18, label %if_end19 -cond.true: ; preds = %code - %6 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %this.addr - %7 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %6, i32 0, i32 1 - %8 = load %"Tuple[Location, String]"*, %"Tuple[Location, String]"** %other.addr - %9 = getelementptr inbounds %"Tuple[Location, String]", %"Tuple[Location, String]"* %8, i32 0, i32 1 - %10 = call i1 @"==.274"(%String* %7, %String* %9) - br label %cond.end +if_then18: ; preds = %if_block17 + ret i1 false -cond.false: ; preds = %code - br label %cond.end +if_end19: ; preds = %dumy_block20, %if_block17 + %55 = load %Location*, %Location** %lhs.addr + %56 = getelementptr inbounds %Location, %Location* %55, i32 0, i32 2 + %57 = getelementptr inbounds %LineCol, %LineCol* %56, i32 0, i32 1 + %58 = load i32, i32* %57 + %59 = load %Location*, %Location** %rhs.addr + %60 = getelementptr inbounds %Location, %Location* %59, i32 0, i32 2 + %61 = getelementptr inbounds %LineCol, %LineCol* %60, i32 0, i32 1 + %62 = load i32, i32* %61 + %63 = icmp slt i32 %58, %62 + ret i1 %63 -cond.end: ; preds = %cond.false, %cond.true - %cond.res = phi i1 [ %10, %cond.true ], [ false, %cond.false ] - ret i1 %cond.res +dumy_block20: ; No predecessors! + br label %if_end19 } -; Function Attrs: alwaysinline nounwind -define internal void @ctor.479(%Node* %this, %UntypedPtr %fdata) #3 { - %this.addr = alloca %Node* - store %Node* %this, %Node** %this.addr - %fdata.addr = alloca %UntypedPtr - store %UntypedPtr %fdata, %UntypedPtr* %fdata.addr +; Function Attrs: inlinehint nounwind +define internal void @ctor.629(%String* %this, i64 %count, i8 %ch) #4 { + %this.addr = alloca %String* + store %String* %this, %String** %this.addr + %count.addr = alloca i64 + store i64 %count, i64* %count.addr + %ch.addr = alloca i8 + store i8 %ch, i8* %ch.addr br label %code code: ; preds = %0 - %1 = load %Node*, %Node** %this.addr - %2 = getelementptr inbounds %Node, %Node* %1, i32 0, i32 0 - call void @ctor.429(%UntypedPtr* %2, %UntypedPtr* %fdata.addr) + %1 = load %String*, %String** %this.addr + %2 = load i64, i64* %count.addr + call void @ctor.191(%String* %1, i64 %2) + %3 = load %String*, %String** %this.addr + %4 = getelementptr inbounds %String, %String* %3, i32 0, i32 0 + %5 = load %"RawPtr[Char]", %"RawPtr[Char]"* %4 + %6 = call i8* @bytePtr(%"RawPtr[Char]" %5) + %7 = load i8, i8* %ch.addr + %8 = load i64, i64* %count.addr + call void @_spr_memset(i8* %6, i8 %7, i64 %8) ret void } -; Function Attrs: alwaysinline nounwind -define internal i1 @"==.480"(%Node* %this, %Node* %other) #3 { - %this.addr = alloca %Node* - store %Node* %this, %Node** %this.addr - %other.addr = alloca %Node* - store %Node* %other, %Node** %other.addr - br label %code - -code: ; preds = %0 - %1 = load %Node*, %Node** %this.addr - %2 = getelementptr inbounds %Node, %Node* %1, i32 0, i32 0 - %3 = load %Node*, %Node** %other.addr - %4 = getelementptr inbounds %Node, %Node* %3, i32 0, i32 0 - %5 = call i1 @"==.481"(%UntypedPtr* %2, %UntypedPtr* %4) - ret i1 %5 -} - -; Function Attrs: alwaysinline nounwind -define internal i1 @"==.481"(%UntypedPtr* %this, %UntypedPtr* %other) #3 { - %this.addr = alloca %UntypedPtr* - store %UntypedPtr* %this, %UntypedPtr** %this.addr - %other.addr = alloca %UntypedPtr* - store %UntypedPtr* %other, %UntypedPtr** %other.addr +; Function Attrs: inlinehint nounwind +define internal void @ctor.630(%String* %this, %"RawPtr[Char]" %_begin, %"RawPtr[Char]" %_end) #4 { + %this.addr = alloca %String* + store %String* %this, %String** %this.addr + %_begin.addr = alloca %"RawPtr[Char]" + store %"RawPtr[Char]" %_begin, %"RawPtr[Char]"* %_begin.addr + %_end.addr = alloca %"RawPtr[Char]" + store %"RawPtr[Char]" %_end, %"RawPtr[Char]"* %_end.addr + %size = alloca i64 + %tmp.this = alloca i64 + %tmp.this1 = alloca i64 br label %code code: ; preds = %0 - %1 = load %UntypedPtr*, %UntypedPtr** %this.addr - %2 = getelementptr inbounds %UntypedPtr, %UntypedPtr* %1, i32 0, i32 0 - %3 = load i8*, i8** %2 - %4 = load %UntypedPtr*, %UntypedPtr** %other.addr - %5 = getelementptr inbounds %UntypedPtr, %UntypedPtr* %4, i32 0, i32 0 - %6 = load i8*, i8** %5 - %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) - ret i1 %7 + %1 = load %"RawPtr[Char]", %"RawPtr[Char]"* %_end.addr + %2 = load %"RawPtr[Char]", %"RawPtr[Char]"* %_begin.addr + %3 = call i64 @diff(%"RawPtr[Char]" %1, %"RawPtr[Char]" %2) + store i64 %3, i64* %size + %4 = load %String*, %String** %this.addr + %5 = load i64, i64* %size + store i64 %5, i64* %tmp.this + %6 = load i64, i64* %tmp.this + call void @ctor.191(%String* %4, i64 %6) + %7 = load %String*, %String** %this.addr + %8 = getelementptr inbounds %String, %String* %7, i32 0, i32 0 + %9 = load %"RawPtr[Char]", %"RawPtr[Char]"* %8 + %10 = call i8* @bytePtr(%"RawPtr[Char]" %9) + %11 = load %"RawPtr[Char]", %"RawPtr[Char]"* %_begin.addr + %12 = call i8* @bytePtr(%"RawPtr[Char]" %11) + %13 = load i64, i64* %size + store i64 %13, i64* %tmp.this1 + %14 = load i64, i64* %tmp.this1 + call void @_spr_memcpy(i8* %10, i8* %12, i64 %14) + ret void } -; Function Attrs: alwaysinline nounwind -define internal void @dtor.482(%LineCol* %this) #3 { - %this.addr = alloca %LineCol* - store %LineCol* %this, %LineCol** %this.addr +; Function Attrs: inlinehint nounwind +define internal i1 @"!="(%String* %this, %String* %other) #4 { + %this.addr = alloca %String* + store %String* %this, %String** %this.addr + %other.addr = alloca %String* + store %String* %other, %String** %other.addr br label %code code: ; preds = %0 - ret void + %1 = load %String*, %String** %this.addr + %2 = load %String*, %String** %other.addr + %3 = call i1 @"==.343"(%String* %1, %String* %2) + %4 = xor i1 true, %3 + ret i1 %4 } -; Function Attrs: alwaysinline nounwind -define internal void @ctor.483(%SourceCode* %this, i8* %fdata) #3 { - %this.addr = alloca %SourceCode* - store %SourceCode* %this, %SourceCode** %this.addr - %fdata.addr = alloca i8* - store i8* %fdata, i8** %fdata.addr +; Function Attrs: inlinehint nounwind +define internal i8* @at.631(%String* %this, i64 %index) #4 { + %this.addr = alloca %String* + store %String* %this, %String** %this.addr + %index.addr = alloca i64 + store i64 %index, i64* %index.addr + %"$tmpC" = alloca %"RawPtr[Char]" + %tmp.this = alloca i64 br label %code code: ; preds = %0 - %1 = load i8*, i8** %fdata.addr - %2 = load %SourceCode*, %SourceCode** %this.addr - %3 = getelementptr inbounds %SourceCode, %SourceCode* %2, i32 0, i32 0 - store i8* %1, i8** %3 - ret void + %1 = load %String*, %String** %this.addr + %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 0 + %3 = load %"RawPtr[Char]", %"RawPtr[Char]"* %2 + %4 = load i64, i64* %index.addr + store i64 %4, i64* %tmp.this + %5 = load i64, i64* %tmp.this + call void @advance(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %3, i64 %5) + %6 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC" + %7 = call i8* @value(%"RawPtr[Char]" %6) + ret i8* %7 } -; Function Attrs: alwaysinline nounwind -define internal void @dtor.484(%SourceCode* %this) #3 { - %this.addr = alloca %SourceCode* - store %SourceCode* %this, %SourceCode** %this.addr +; Function Attrs: inlinehint nounwind +define internal i8* @front.632(%String* %this) #4 { + %this.addr = alloca %String* + store %String* %this, %String** %this.addr br label %code code: ; preds = %0 - ret void + %1 = load %String*, %String** %this.addr + %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 0 + %3 = load %"RawPtr[Char]", %"RawPtr[Char]"* %2 + %4 = call i8* @value(%"RawPtr[Char]" %3) + ret i8* %4 } -; Function Attrs: alwaysinline nounwind -define internal void @dtor.485(%Location* %this) #3 { - %this.addr = alloca %Location* - store %Location* %this, %Location** %this.addr +; Function Attrs: inlinehint nounwind +define internal i8* @back.633(%String* %this) #4 { + %this.addr = alloca %String* + store %String* %this, %String** %this.addr + %"$tmpC" = alloca %"RawPtr[Char]" + %tmp.this = alloca i64 br label %code code: ; preds = %0 - ret void + %1 = load %String*, %String** %this.addr + %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 1 + %3 = load %"RawPtr[Char]", %"RawPtr[Char]"* %2 + store i64 -1, i64* %tmp.this + %4 = load i64, i64* %tmp.this + call void @advance(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %3, i64 %4) + %5 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC" + %6 = call i8* @value(%"RawPtr[Char]" %5) + ret i8* %6 } ; Function Attrs: inlinehint nounwind -define internal void @mkLineCol(%LineCol* sret %_result, i32 %line, i32 %col) #4 { - %_result.addr = alloca %LineCol* - store %LineCol* %_result, %LineCol** %_result.addr - %line.addr = alloca i32 - store i32 %line, i32* %line.addr - %col.addr = alloca i32 - store i32 %col, i32* %col.addr - %res = alloca %LineCol +define internal %StringRef @subrange(%String* %this, i64 %index, i64 %num) #4 { + %this.addr = alloca %String* + store %String* %this, %String** %this.addr + %index.addr = alloca i64 + store i64 %index, i64* %index.addr + %num.addr = alloca i64 + store i64 %num, i64* %num.addr + %tmp.this = alloca %StringRef + %"$tmpC" = alloca %"RawPtr[Char]" + %tmp.this1 = alloca i64 + %"$tmpC2" = alloca %"RawPtr[Char]" + %tmp.this3 = alloca i64 br label %code code: ; preds = %0 - call void @ctor.151(%LineCol* %res) - %1 = load i32, i32* %line.addr - %2 = getelementptr inbounds %LineCol, %LineCol* %res, i32 0, i32 0 - store i32 %1, i32* %2 - %3 = load i32, i32* %col.addr - %4 = getelementptr inbounds %LineCol, %LineCol* %res, i32 0, i32 1 - store i32 %3, i32* %4 - %5 = load %LineCol*, %LineCol** %_result.addr - call void @ctor.173(%LineCol* %5, %LineCol* %res) - ret void + %1 = load %String*, %String** %this.addr + %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 0 + %3 = load %"RawPtr[Char]", %"RawPtr[Char]"* %2 + %4 = load i64, i64* %index.addr + store i64 %4, i64* %tmp.this1 + %5 = load i64, i64* %tmp.this1 + call void @advance(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %3, i64 %5) + %6 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC" + %7 = call i8* @bytePtr(%"RawPtr[Char]" %6) + %8 = load %String*, %String** %this.addr + %9 = getelementptr inbounds %String, %String* %8, i32 0, i32 0 + %10 = load %"RawPtr[Char]", %"RawPtr[Char]"* %9 + %11 = load i64, i64* %index.addr + %12 = load i64, i64* %num.addr + %13 = add i64 %11, %12 + store i64 %13, i64* %tmp.this3 + %14 = load i64, i64* %tmp.this3 + call void @advance(%"RawPtr[Char]"* %"$tmpC2", %"RawPtr[Char]" %10, i64 %14) + %15 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC2" + %16 = call i8* @bytePtr(%"RawPtr[Char]" %15) + call void @ctor.57(%StringRef* %tmp.this, i8* %7, i8* %16) + %17 = load %StringRef, %StringRef* %tmp.this + ret %StringRef %17 } ; Function Attrs: inlinehint nounwind -define internal void @mkLocation(%Location* sret %_result) #4 { - %_result.addr = alloca %Location* - store %Location* %_result, %Location** %_result.addr - %res = alloca %Location +define internal void @resize(%String* %this, i64 %n) #4 { + %this.addr = alloca %String* + store %String* %this, %String** %this.addr + %n.addr = alloca i64 + store i64 %n, i64* %n.addr + %oldSize = alloca i64 + %newEnd = alloca %"RawPtr[Char]" + %tmp.this = alloca i64 + %"$tmpC" = alloca %"RawPtr[Char]" + %tmp.this4 = alloca i64 + %newEnd5 = alloca %"RawPtr[Char]" + %tmp.this6 = alloca i64 + %"$tmpC11" = alloca %"RawPtr[Char]" br label %code code: ; preds = %0 - call void @ctor.149(%Location* %res) - call void @setOne(%Location* %res) - %1 = load %Location*, %Location** %_result.addr - call void @ctor.171(%Location* %1, %Location* %res) + %1 = load %String*, %String** %this.addr + %2 = call i64 @size.190(%String* %1) + store i64 %2, i64* %oldSize + br label %if_block + +if_block: ; preds = %code + %3 = load i64, i64* %n.addr + %4 = load i64, i64* %oldSize + %5 = icmp eq i64 %3, %4 + br i1 %5, label %if_then, label %if_end + +if_then: ; preds = %if_block ret void -} -; Function Attrs: inlinehint nounwind -define internal void @setOne(%Location* %l) #4 { - %l.addr = alloca %Location* - store %Location* %l, %Location** %l.addr - %tmp.this = alloca i32 - %tmp.this1 = alloca i32 - %tmp.this2 = alloca i32 - %tmp.this3 = alloca i32 - br label %code +if_end: ; preds = %dumy_block, %if_block + br label %if_block1 -code: ; preds = %0 - store i32 1, i32* %tmp.this - %1 = load i32, i32* %tmp.this - %2 = load %Location*, %Location** %l.addr - %3 = getelementptr inbounds %Location, %Location* %2, i32 0, i32 1 - %4 = getelementptr inbounds %LineCol, %LineCol* %3, i32 0, i32 0 - store i32 %1, i32* %4 - store i32 1, i32* %tmp.this1 - %5 = load i32, i32* %tmp.this1 - %6 = load %Location*, %Location** %l.addr - %7 = getelementptr inbounds %Location, %Location* %6, i32 0, i32 1 - %8 = getelementptr inbounds %LineCol, %LineCol* %7, i32 0, i32 1 - store i32 %5, i32* %8 - store i32 1, i32* %tmp.this2 - %9 = load i32, i32* %tmp.this2 - %10 = load %Location*, %Location** %l.addr - %11 = getelementptr inbounds %Location, %Location* %10, i32 0, i32 2 - %12 = getelementptr inbounds %LineCol, %LineCol* %11, i32 0, i32 0 - store i32 %9, i32* %12 - store i32 1, i32* %tmp.this3 - %13 = load i32, i32* %tmp.this3 - %14 = load %Location*, %Location** %l.addr - %15 = getelementptr inbounds %Location, %Location* %14, i32 0, i32 2 - %16 = getelementptr inbounds %LineCol, %LineCol* %15, i32 0, i32 1 - store i32 %13, i32* %16 +dumy_block: ; No predecessors! + br label %if_end + +if_block1: ; preds = %if_end + %6 = load i64, i64* %n.addr + %7 = load i64, i64* %oldSize + %8 = icmp slt i64 %6, %7 + br i1 %8, label %if_then2, label %if_else + +if_then2: ; preds = %if_block1 + %9 = load %String*, %String** %this.addr + %10 = getelementptr inbounds %String, %String* %9, i32 0, i32 0 + %11 = load %"RawPtr[Char]", %"RawPtr[Char]"* %10 + %12 = load i64, i64* %n.addr + store i64 %12, i64* %tmp.this + %13 = load i64, i64* %tmp.this + call void @advance(%"RawPtr[Char]"* %newEnd, %"RawPtr[Char]" %11, i64 %13) + br label %while_block + +if_else: ; preds = %if_block1 + %14 = load %String*, %String** %this.addr + %15 = load i64, i64* %n.addr + call void @reserve(%String* %14, i64 %15) + %16 = load %String*, %String** %this.addr + %17 = getelementptr inbounds %String, %String* %16, i32 0, i32 0 + %18 = load %"RawPtr[Char]", %"RawPtr[Char]"* %17 + %19 = load i64, i64* %n.addr + store i64 %19, i64* %tmp.this6 + %20 = load i64, i64* %tmp.this6 + call void @advance(%"RawPtr[Char]"* %newEnd5, %"RawPtr[Char]" %18, i64 %20) + br label %while_block7 + +if_end3: ; preds = %while_end10, %while_end ret void -} -; Function Attrs: inlinehint nounwind -define internal void @mkLocation.486(%Location* sret %_result, %SourceCode %sourceCode) #4 { - %_result.addr = alloca %Location* - store %Location* %_result, %Location** %_result.addr - %sourceCode.addr = alloca %SourceCode - store %SourceCode %sourceCode, %SourceCode* %sourceCode.addr - %res = alloca %Location - br label %code +while_block: ; preds = %while_step, %if_then2 + %21 = load %String*, %String** %this.addr + %22 = getelementptr inbounds %String, %String* %21, i32 0, i32 1 + %23 = call i1 @"==.268"(%"RawPtr[Char]"* %22, %"RawPtr[Char]"* %newEnd) + %24 = xor i1 true, %23 + br i1 %24, label %while_body, label %while_end + +while_body: ; preds = %while_block + %25 = load %String*, %String** %this.addr + %26 = getelementptr inbounds %String, %String* %25, i32 0, i32 1 + %27 = load %String*, %String** %this.addr + %28 = getelementptr inbounds %String, %String* %27, i32 0, i32 1 + %29 = load %"RawPtr[Char]", %"RawPtr[Char]"* %28 + store i64 -1, i64* %tmp.this4 + %30 = load i64, i64* %tmp.this4 + call void @advance(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %29, i64 %30) + call void @"=.200"(%"RawPtr[Char]"* %26, %"RawPtr[Char]"* %"$tmpC") + %31 = load %String*, %String** %this.addr + %32 = getelementptr inbounds %String, %String* %31, i32 0, i32 1 + %33 = load %"RawPtr[Char]", %"RawPtr[Char]"* %32 + %34 = call i8* @value(%"RawPtr[Char]" %33) + %35 = load i8, i8* %34 + br label %while_step + +while_step: ; preds = %while_body + br label %while_block + +while_end: ; preds = %while_block + br label %if_end3 + +while_block7: ; preds = %while_step9, %if_else + %36 = load %String*, %String** %this.addr + %37 = getelementptr inbounds %String, %String* %36, i32 0, i32 1 + %38 = call i1 @"==.268"(%"RawPtr[Char]"* %37, %"RawPtr[Char]"* %newEnd5) + %39 = xor i1 true, %38 + br i1 %39, label %while_body8, label %while_end10 + +while_body8: ; preds = %while_block7 + %40 = load %String*, %String** %this.addr + %41 = getelementptr inbounds %String, %String* %40, i32 0, i32 1 + %42 = load %"RawPtr[Char]", %"RawPtr[Char]"* %41 + %43 = call i8* @value(%"RawPtr[Char]" %42) + store i8 0, i8* %43 + %44 = load %String*, %String** %this.addr + %45 = getelementptr inbounds %String, %String* %44, i32 0, i32 1 + %46 = load %String*, %String** %this.addr + %47 = getelementptr inbounds %String, %String* %46, i32 0, i32 1 + %48 = load %"RawPtr[Char]", %"RawPtr[Char]"* %47 + call void @advance.269(%"RawPtr[Char]"* %"$tmpC11", %"RawPtr[Char]" %48) + call void @"=.200"(%"RawPtr[Char]"* %45, %"RawPtr[Char]"* %"$tmpC11") + br label %while_step9 -code: ; preds = %0 - call void @ctor.149(%Location* %res) - %1 = getelementptr inbounds %Location, %Location* %res, i32 0, i32 0 - call void @"=.243"(%SourceCode* %1, %SourceCode* %sourceCode.addr) - call void @setOne(%Location* %res) - %2 = load %Location*, %Location** %_result.addr - call void @ctor.171(%Location* %2, %Location* %res) - ret void +while_step9: ; preds = %while_body8 + br label %while_block7 + +while_end10: ; preds = %while_block7 + br label %if_end3 } ; Function Attrs: inlinehint nounwind -define internal void @mkLocation.487(%Location* sret %_result, %SourceCode %sourceCode, %LineCol %start, %LineCol %end) #4 { - %_result.addr = alloca %Location* - store %Location* %_result, %Location** %_result.addr - %sourceCode.addr = alloca %SourceCode - store %SourceCode %sourceCode, %SourceCode* %sourceCode.addr - %start.addr = alloca %LineCol - store %LineCol %start, %LineCol* %start.addr - %end.addr = alloca %LineCol - store %LineCol %end, %LineCol* %end.addr - %res = alloca %Location +define internal void @insertAfter(%String* %this, i8 %value, %StringRef %pos) #4 { + %this.addr = alloca %String* + store %String* %this, %String** %this.addr + %value.addr = alloca i8 + store i8 %value, i8* %value.addr + %pos.addr = alloca %StringRef + store %StringRef %pos, %StringRef* %pos.addr + %tmp.this = alloca %StringRef + %"$tmpC" = alloca %"RawPtr[Char]" br label %code code: ; preds = %0 - call void @ctor.149(%Location* %res) - %1 = getelementptr inbounds %Location, %Location* %res, i32 0, i32 0 - call void @"=.243"(%SourceCode* %1, %SourceCode* %sourceCode.addr) - %2 = getelementptr inbounds %Location, %Location* %res, i32 0, i32 1 - call void @"=.244"(%LineCol* %2, %LineCol* %start.addr) - %3 = getelementptr inbounds %Location, %Location* %res, i32 0, i32 2 - call void @"=.244"(%LineCol* %3, %LineCol* %end.addr) - %4 = load %Location*, %Location** %_result.addr - call void @ctor.171(%Location* %4, %Location* %res) + %1 = load %String*, %String** %this.addr + %2 = load i8, i8* %value.addr + %3 = load %StringRef, %StringRef* %pos.addr + call void @_backPtr(%"RawPtr[Char]"* %"$tmpC", %StringRef %3) + %4 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC" + %5 = call i8* @bytePtr(%"RawPtr[Char]" %4) + %6 = load %String*, %String** %this.addr + %7 = getelementptr inbounds %String, %String* %6, i32 0, i32 1 + %8 = load %"RawPtr[Char]", %"RawPtr[Char]"* %7 + %9 = call i8* @bytePtr(%"RawPtr[Char]" %8) + call void @ctor.57(%StringRef* %tmp.this, i8* %5, i8* %9) + %10 = load %StringRef, %StringRef* %tmp.this + call void @insertBefore.482(%String* %1, i8 %2, %StringRef %10) ret void } ; Function Attrs: inlinehint nounwind -define internal void @copyStart(%Location* %l, %Location* %other) #4 { - %l.addr = alloca %Location* - store %Location* %l, %Location** %l.addr - %other.addr = alloca %Location* - store %Location* %other, %Location** %other.addr +define internal void @_backPtr(%"RawPtr[Char]"* sret %_result, %StringRef %s) #4 { + %_result.addr = alloca %"RawPtr[Char]"* + store %"RawPtr[Char]"* %_result, %"RawPtr[Char]"** %_result.addr + %s.addr = alloca %StringRef + store %StringRef %s, %StringRef* %s.addr br label %code code: ; preds = %0 - %1 = load %Location*, %Location** %l.addr - %2 = getelementptr inbounds %Location, %Location* %1, i32 0, i32 1 - %3 = load %Location*, %Location** %other.addr - %4 = getelementptr inbounds %Location, %Location* %3, i32 0, i32 1 - call void @"=.244"(%LineCol* %2, %LineCol* %4) + %1 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %_result.addr + %2 = getelementptr inbounds %StringRef, %StringRef* %s.addr, i32 0, i32 1 + %3 = load i8*, i8** %2 + call void @ctor.194(%"RawPtr[Char]"* %1, i8* %3) ret void } ; Function Attrs: inlinehint nounwind -define internal void @setAsStartOf(%Location* %l, %Location* %other) #4 { - %l.addr = alloca %Location* - store %Location* %l, %Location** %l.addr - %other.addr = alloca %Location* - store %Location* %other, %Location** %other.addr +define internal void @remove.634(%String* %this, i64 %index) #4 { + %this.addr = alloca %String* + store %String* %this, %String** %this.addr + %index.addr = alloca i64 + store i64 %index, i64* %index.addr + %r = alloca %StringRef + %tmp.this = alloca i64 br label %code code: ; preds = %0 - %1 = load %Location*, %Location** %l.addr - %2 = getelementptr inbounds %Location, %Location* %1, i32 0, i32 1 - %3 = load %Location*, %Location** %other.addr - %4 = getelementptr inbounds %Location, %Location* %3, i32 0, i32 1 - call void @"=.244"(%LineCol* %2, %LineCol* %4) - %5 = load %Location*, %Location** %l.addr - %6 = getelementptr inbounds %Location, %Location* %5, i32 0, i32 2 - %7 = load %Location*, %Location** %other.addr - %8 = getelementptr inbounds %Location, %Location* %7, i32 0, i32 1 - call void @"=.244"(%LineCol* %6, %LineCol* %8) + %1 = load %String*, %String** %this.addr + %2 = call %StringRef @all.485(%String* %1) + call void @ctor.56(%StringRef* %r, %StringRef %2) + %3 = load i64, i64* %index.addr + call void @popFront.60(%StringRef* %r, i64 %3) + %4 = load %String*, %String** %this.addr + %5 = call i64 @size.190(%String* %4) + %6 = load i64, i64* %index.addr + %7 = call i64 @_SizeType_opMinus(i64 %5, i64 %6) + store i64 1, i64* %tmp.this + %8 = load i64, i64* %tmp.this + %9 = call i64 @_SizeType_opMinus(i64 %7, i64 %8) + call void @popBack.61(%StringRef* %r, i64 %9) + %10 = load %String*, %String** %this.addr + %11 = load %StringRef, %StringRef* %r + call void @remove(%String* %10, %StringRef %11) ret void } ; Function Attrs: inlinehint nounwind -define internal void @setAsEndOf(%Location* %l, %Location* %other) #4 { - %l.addr = alloca %Location* - store %Location* %l, %Location** %l.addr - %other.addr = alloca %Location* - store %Location* %other, %Location** %other.addr +define internal void @"+.635"(%String* sret %_result, %String %x, %String %y) #4 { + %_result.addr = alloca %String* + store %String* %_result, %String** %_result.addr + %x.addr = alloca %String + store %String %x, %String* %x.addr + %y.addr = alloca %String + store %String %y, %String* %y.addr + %sz1 = alloca i64 + %sz2 = alloca i64 + %res = alloca %String + %"$tmpC" = alloca %"RawPtr[Char]" br label %code code: ; preds = %0 - %1 = load %Location*, %Location** %l.addr - %2 = getelementptr inbounds %Location, %Location* %1, i32 0, i32 1 - %3 = load %Location*, %Location** %other.addr - %4 = getelementptr inbounds %Location, %Location* %3, i32 0, i32 2 - call void @"=.244"(%LineCol* %2, %LineCol* %4) - %5 = load %Location*, %Location** %l.addr - %6 = getelementptr inbounds %Location, %Location* %5, i32 0, i32 2 - %7 = load %Location*, %Location** %other.addr - %8 = getelementptr inbounds %Location, %Location* %7, i32 0, i32 2 - call void @"=.244"(%LineCol* %6, %LineCol* %8) + %1 = call i64 @size.190(%String* %x.addr) + store i64 %1, i64* %sz1 + %2 = call i64 @size.190(%String* %y.addr) + store i64 %2, i64* %sz2 + %3 = load i64, i64* %sz1 + %4 = load i64, i64* %sz2 + %5 = add i64 %3, %4 + call void @ctor.191(%String* %res, i64 %5) + %6 = getelementptr inbounds %String, %String* %res, i32 0, i32 0 + %7 = load %"RawPtr[Char]", %"RawPtr[Char]"* %6 + %8 = call i8* @bytePtr(%"RawPtr[Char]" %7) + %9 = getelementptr inbounds %String, %String* %x.addr, i32 0, i32 0 + %10 = load %"RawPtr[Char]", %"RawPtr[Char]"* %9 + %11 = call i8* @bytePtr(%"RawPtr[Char]" %10) + %12 = load i64, i64* %sz1 + call void @_spr_memcpy(i8* %8, i8* %11, i64 %12) + %13 = getelementptr inbounds %String, %String* %res, i32 0, i32 0 + %14 = load %"RawPtr[Char]", %"RawPtr[Char]"* %13 + %15 = load i64, i64* %sz1 + call void @advance.201(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %14, i64 %15) + %16 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC" + %17 = call i8* @bytePtr(%"RawPtr[Char]" %16) + %18 = getelementptr inbounds %String, %String* %y.addr, i32 0, i32 0 + %19 = load %"RawPtr[Char]", %"RawPtr[Char]"* %18 + %20 = call i8* @bytePtr(%"RawPtr[Char]" %19) + %21 = load i64, i64* %sz2 + call void @_spr_memcpy(i8* %17, i8* %20, i64 %21) + %22 = load %String*, %String** %_result.addr + call void @ctor.189(%String* %22, %String* %res) + call void @dtor.261(%String* %res) + ret void + +dumy_block: ; No predecessors! + call void @dtor.261(%String* %res) ret void } ; Function Attrs: inlinehint nounwind -define internal i1 @"<"(%Location* %lhs, %Location* %rhs) #4 { - %lhs.addr = alloca %Location* - store %Location* %lhs, %Location** %lhs.addr - %rhs.addr = alloca %Location* - store %Location* %rhs, %Location** %rhs.addr +define internal void @"+.636"(%String* sret %_result, %String %x, %StringRef %y) #4 { + %_result.addr = alloca %String* + store %String* %_result, %String** %_result.addr + %x.addr = alloca %String + store %String %x, %String* %x.addr + %y.addr = alloca %StringRef + store %StringRef %y, %StringRef* %y.addr + %sz1 = alloca i64 + %sz2 = alloca i64 + %res = alloca %String + %"$tmpC" = alloca %"RawPtr[Char]" br label %code code: ; preds = %0 - br label %if_block - -if_block: ; preds = %code - %1 = load %Location*, %Location** %lhs.addr - %2 = getelementptr inbounds %Location, %Location* %1, i32 0, i32 1 - %3 = getelementptr inbounds %LineCol, %LineCol* %2, i32 0, i32 0 - %4 = load i32, i32* %3 - %5 = load %Location*, %Location** %rhs.addr - %6 = getelementptr inbounds %Location, %Location* %5, i32 0, i32 1 - %7 = getelementptr inbounds %LineCol, %LineCol* %6, i32 0, i32 0 - %8 = load i32, i32* %7 - %9 = icmp slt i32 %4, %8 - br i1 %9, label %if_then, label %if_end - -if_then: ; preds = %if_block - ret i1 true - -if_end: ; preds = %dumy_block, %if_block - br label %if_block1 + %1 = call i64 @size.190(%String* %x.addr) + store i64 %1, i64* %sz1 + %2 = call i64 @size(%StringRef* %y.addr) + store i64 %2, i64* %sz2 + %3 = load i64, i64* %sz1 + %4 = load i64, i64* %sz2 + %5 = add i64 %3, %4 + call void @ctor.191(%String* %res, i64 %5) + %6 = getelementptr inbounds %String, %String* %res, i32 0, i32 0 + %7 = load %"RawPtr[Char]", %"RawPtr[Char]"* %6 + %8 = call i8* @bytePtr(%"RawPtr[Char]" %7) + %9 = getelementptr inbounds %String, %String* %x.addr, i32 0, i32 0 + %10 = load %"RawPtr[Char]", %"RawPtr[Char]"* %9 + %11 = call i8* @bytePtr(%"RawPtr[Char]" %10) + %12 = load i64, i64* %sz1 + call void @_spr_memcpy(i8* %8, i8* %11, i64 %12) + %13 = getelementptr inbounds %String, %String* %res, i32 0, i32 0 + %14 = load %"RawPtr[Char]", %"RawPtr[Char]"* %13 + %15 = load i64, i64* %sz1 + call void @advance.201(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %14, i64 %15) + %16 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC" + %17 = call i8* @bytePtr(%"RawPtr[Char]" %16) + %18 = getelementptr inbounds %StringRef, %StringRef* %y.addr, i32 0, i32 0 + %19 = load i8*, i8** %18 + %20 = load i64, i64* %sz2 + call void @_spr_memcpy(i8* %17, i8* %19, i64 %20) + %21 = load %String*, %String** %_result.addr + call void @ctor.189(%String* %21, %String* %res) + call void @dtor.261(%String* %res) + ret void dumy_block: ; No predecessors! - br label %if_end - -if_block1: ; preds = %if_end - %10 = load %Location*, %Location** %lhs.addr - %11 = getelementptr inbounds %Location, %Location* %10, i32 0, i32 1 - %12 = getelementptr inbounds %LineCol, %LineCol* %11, i32 0, i32 0 - %13 = load i32, i32* %12 - %14 = load %Location*, %Location** %rhs.addr - %15 = getelementptr inbounds %Location, %Location* %14, i32 0, i32 1 - %16 = getelementptr inbounds %LineCol, %LineCol* %15, i32 0, i32 0 - %17 = load i32, i32* %16 - %18 = icmp sgt i32 %13, %17 - br i1 %18, label %if_then2, label %if_end3 - -if_then2: ; preds = %if_block1 - ret i1 false - -if_end3: ; preds = %dumy_block4, %if_block1 - br label %if_block5 - -dumy_block4: ; No predecessors! - br label %if_end3 - -if_block5: ; preds = %if_end3 - %19 = load %Location*, %Location** %lhs.addr - %20 = getelementptr inbounds %Location, %Location* %19, i32 0, i32 1 - %21 = getelementptr inbounds %LineCol, %LineCol* %20, i32 0, i32 1 - %22 = load i32, i32* %21 - %23 = load %Location*, %Location** %rhs.addr - %24 = getelementptr inbounds %Location, %Location* %23, i32 0, i32 1 - %25 = getelementptr inbounds %LineCol, %LineCol* %24, i32 0, i32 1 - %26 = load i32, i32* %25 - %27 = icmp slt i32 %22, %26 - br i1 %27, label %if_then6, label %if_end7 + call void @dtor.261(%String* %res) + ret void +} -if_then6: ; preds = %if_block5 - ret i1 true +; Function Attrs: alwaysinline nounwind +define internal void @ctor.637(%StringOutputStream* %this, %StringOutputStream* %other) #3 { + %this.addr = alloca %StringOutputStream* + store %StringOutputStream* %this, %StringOutputStream** %this.addr + %other.addr = alloca %StringOutputStream* + store %StringOutputStream* %other, %StringOutputStream** %other.addr + br label %code -if_end7: ; preds = %dumy_block8, %if_block5 - br label %if_block9 +code: ; preds = %0 + %1 = load %StringOutputStream*, %StringOutputStream** %this.addr + %2 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %1, i32 0, i32 0 + %3 = load %StringOutputStream*, %StringOutputStream** %other.addr + %4 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %3, i32 0, i32 0 + call void @ctor.189(%String* %2, %String* %4) + ret void +} -dumy_block8: ; No predecessors! - br label %if_end7 +; Function Attrs: alwaysinline nounwind +define internal void @"=.638"(%StringOutputStream* %this, %StringOutputStream* %other) #3 { + %this.addr = alloca %StringOutputStream* + store %StringOutputStream* %this, %StringOutputStream** %this.addr + %other.addr = alloca %StringOutputStream* + store %StringOutputStream* %other, %StringOutputStream** %other.addr + br label %code -if_block9: ; preds = %if_end7 - %28 = load %Location*, %Location** %lhs.addr - %29 = getelementptr inbounds %Location, %Location* %28, i32 0, i32 1 - %30 = getelementptr inbounds %LineCol, %LineCol* %29, i32 0, i32 1 - %31 = load i32, i32* %30 - %32 = load %Location*, %Location** %rhs.addr - %33 = getelementptr inbounds %Location, %Location* %32, i32 0, i32 1 - %34 = getelementptr inbounds %LineCol, %LineCol* %33, i32 0, i32 1 - %35 = load i32, i32* %34 - %36 = icmp sgt i32 %31, %35 - br i1 %36, label %if_then10, label %if_end11 +code: ; preds = %0 + %1 = load %StringOutputStream*, %StringOutputStream** %this.addr + %2 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %1, i32 0, i32 0 + %3 = load %StringOutputStream*, %StringOutputStream** %other.addr + %4 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %3, i32 0, i32 0 + %5 = call %String* @"=.290"(%String* %2, %String* %4) + ret void +} -if_then10: ; preds = %if_block9 - ret i1 false +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.639"(%StringOutputStream* %this, %StringOutputStream* %other) #3 { + %this.addr = alloca %StringOutputStream* + store %StringOutputStream* %this, %StringOutputStream** %this.addr + %other.addr = alloca %StringOutputStream* + store %StringOutputStream* %other, %StringOutputStream** %other.addr + br label %code -if_end11: ; preds = %dumy_block12, %if_block9 - br label %if_block13 +code: ; preds = %0 + %1 = load %StringOutputStream*, %StringOutputStream** %this.addr + %2 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %1, i32 0, i32 0 + %3 = load %StringOutputStream*, %StringOutputStream** %other.addr + %4 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %3, i32 0, i32 0 + %5 = call i1 @"==.343"(%String* %2, %String* %4) + ret i1 %5 +} -dumy_block12: ; No predecessors! - br label %if_end11 +; Function Attrs: alwaysinline nounwind +define internal void @"<<<.640"(%StringOutputStream* %this, %String* %s) #3 { + %this.addr = alloca %StringOutputStream* + store %StringOutputStream* %this, %StringOutputStream** %this.addr + %s.addr = alloca %String* + store %String* %s, %String** %s.addr + br label %code -if_block13: ; preds = %if_end11 - %37 = load %Location*, %Location** %lhs.addr - %38 = getelementptr inbounds %Location, %Location* %37, i32 0, i32 2 - %39 = getelementptr inbounds %LineCol, %LineCol* %38, i32 0, i32 0 - %40 = load i32, i32* %39 - %41 = load %Location*, %Location** %rhs.addr - %42 = getelementptr inbounds %Location, %Location* %41, i32 0, i32 2 - %43 = getelementptr inbounds %LineCol, %LineCol* %42, i32 0, i32 0 - %44 = load i32, i32* %43 - %45 = icmp slt i32 %40, %44 - br i1 %45, label %if_then14, label %if_end15 +code: ; preds = %0 + %1 = load %StringOutputStream*, %StringOutputStream** %this.addr + %2 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %1, i32 0, i32 0 + %3 = load %String*, %String** %s.addr + %4 = call %StringRef @all.485(%String* %3) + call void @append(%String* %2, %StringRef %4) + ret void +} -if_then14: ; preds = %if_block13 - ret i1 true +; Function Attrs: alwaysinline nounwind +define internal void @"<<<.641"(%StringOutputStream* %this, double %x) #3 { + %this.addr = alloca %StringOutputStream* + store %StringOutputStream* %this, %StringOutputStream** %this.addr + %x.addr = alloca double + store double %x, double* %x.addr + %"$tmpC" = alloca %String + %tmp.this = alloca i64 + br label %code -if_end15: ; preds = %dumy_block16, %if_block13 - br label %if_block17 +code: ; preds = %0 + %1 = load %StringOutputStream*, %StringOutputStream** %this.addr + %2 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %1, i32 0, i32 0 + %3 = load double, double* %x.addr + %4 = fptoui double %3 to i64 + store i64 %4, i64* %tmp.this + %5 = load i64, i64* %tmp.this + call void @ulongToString(%String* %"$tmpC", i64 %5) + %6 = call %StringRef @all.485(%String* %"$tmpC") + call void @append(%String* %2, %StringRef %6) + call void @dtor.261(%String* %"$tmpC") + ret void +} -dumy_block16: ; No predecessors! - br label %if_end15 +; Function Attrs: inlinehint nounwind +define internal void @toString.642(%String* sret %_result) #4 { + %_result.addr = alloca %String* + store %String* %_result, %String** %_result.addr + br label %code -if_block17: ; preds = %if_end15 - %46 = load %Location*, %Location** %lhs.addr - %47 = getelementptr inbounds %Location, %Location* %46, i32 0, i32 2 - %48 = getelementptr inbounds %LineCol, %LineCol* %47, i32 0, i32 0 - %49 = load i32, i32* %48 - %50 = load %Location*, %Location** %rhs.addr - %51 = getelementptr inbounds %Location, %Location* %50, i32 0, i32 2 - %52 = getelementptr inbounds %LineCol, %LineCol* %51, i32 0, i32 0 - %53 = load i32, i32* %52 - %54 = icmp sgt i32 %49, %53 - br i1 %54, label %if_then18, label %if_end19 +code: ; preds = %0 + %1 = load %String*, %String** %_result.addr + call void @ctor.137(%String* %1) + ret void +} -if_then18: ; preds = %if_block17 - ret i1 false +; Function Attrs: alwaysinline nounwind +define internal void @ctor.643(%"ContiguousMemoryRange[LocString]"* %this) #3 { + %this.addr = alloca %"ContiguousMemoryRange[LocString]"* + store %"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"** %this.addr + br label %code -if_end19: ; preds = %dumy_block20, %if_block17 - %55 = load %Location*, %Location** %lhs.addr - %56 = getelementptr inbounds %Location, %Location* %55, i32 0, i32 2 - %57 = getelementptr inbounds %LineCol, %LineCol* %56, i32 0, i32 1 - %58 = load i32, i32* %57 - %59 = load %Location*, %Location** %rhs.addr - %60 = getelementptr inbounds %Location, %Location* %59, i32 0, i32 2 - %61 = getelementptr inbounds %LineCol, %LineCol* %60, i32 0, i32 1 - %62 = load i32, i32* %61 - %63 = icmp slt i32 %58, %62 - ret i1 %63 +code: ; preds = %0 + %1 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %this.addr + %2 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %1, i32 0, i32 0 + call void @ctor.561(%"RawPtr[LocString]"* %2) + %3 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %this.addr + %4 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %3, i32 0, i32 1 + call void @ctor.561(%"RawPtr[LocString]"* %4) + ret void +} -dumy_block20: ; No predecessors! - br label %if_end19 +; Function Attrs: alwaysinline nounwind +define internal void @ctor.644(%"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"* %other) #3 { + %this.addr = alloca %"ContiguousMemoryRange[LocString]"* + store %"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"** %this.addr + %other.addr = alloca %"ContiguousMemoryRange[LocString]"* + store %"ContiguousMemoryRange[LocString]"* %other, %"ContiguousMemoryRange[LocString]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %this.addr + %2 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %1, i32 0, i32 0 + %3 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %other.addr + %4 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %3, i32 0, i32 0 + call void @ctor.585(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %4) + %5 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %this.addr + %6 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %5, i32 0, i32 1 + %7 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %other.addr + %8 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %7, i32 0, i32 1 + call void @ctor.585(%"RawPtr[LocString]"* %6, %"RawPtr[LocString]"* %8) + ret void } -; Function Attrs: inlinehint nounwind -define internal void @ctor.488(%String* %this, i64 %count, i8 %ch) #4 { - %this.addr = alloca %String* - store %String* %this, %String** %this.addr - %count.addr = alloca i64 - store i64 %count, i64* %count.addr - %ch.addr = alloca i8 - store i8 %ch, i8* %ch.addr +; Function Attrs: alwaysinline nounwind +define internal void @dtor.645(%"ContiguousMemoryRange[LocString]"* %this) #3 { + %this.addr = alloca %"ContiguousMemoryRange[LocString]"* + store %"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"** %this.addr br label %code code: ; preds = %0 - %1 = load %String*, %String** %this.addr - %2 = load i64, i64* %count.addr - call void @ctor.186(%String* %1, i64 %2) - %3 = load %String*, %String** %this.addr - %4 = getelementptr inbounds %String, %String* %3, i32 0, i32 0 - %5 = load %"RawPtr[Char]", %"RawPtr[Char]"* %4 - %6 = call i8* @bytePtr(%"RawPtr[Char]" %5) - %7 = load i8, i8* %ch.addr - %8 = load i64, i64* %count.addr - call void @_spr_memset(i8* %6, i8 %7, i64 %8) ret void } -; Function Attrs: inlinehint nounwind -define internal void @ctor.489(%String* %this, %"RawPtr[Char]" %_begin, %"RawPtr[Char]" %_end) #4 { - %this.addr = alloca %String* - store %String* %this, %String** %this.addr - %_begin.addr = alloca %"RawPtr[Char]" - store %"RawPtr[Char]" %_begin, %"RawPtr[Char]"* %_begin.addr - %_end.addr = alloca %"RawPtr[Char]" - store %"RawPtr[Char]" %_end, %"RawPtr[Char]"* %_end.addr - %size = alloca i64 - %tmp.this = alloca i64 - %tmp.this1 = alloca i64 +; Function Attrs: alwaysinline nounwind +define internal void @"=.646"(%"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"* %other) #3 { + %this.addr = alloca %"ContiguousMemoryRange[LocString]"* + store %"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"** %this.addr + %other.addr = alloca %"ContiguousMemoryRange[LocString]"* + store %"ContiguousMemoryRange[LocString]"* %other, %"ContiguousMemoryRange[LocString]"** %other.addr br label %code code: ; preds = %0 - %1 = load %"RawPtr[Char]", %"RawPtr[Char]"* %_end.addr - %2 = load %"RawPtr[Char]", %"RawPtr[Char]"* %_begin.addr - %3 = call i64 @diff(%"RawPtr[Char]" %1, %"RawPtr[Char]" %2) - store i64 %3, i64* %size - %4 = load %String*, %String** %this.addr - %5 = load i64, i64* %size - store i64 %5, i64* %tmp.this - %6 = load i64, i64* %tmp.this - call void @ctor.186(%String* %4, i64 %6) - %7 = load %String*, %String** %this.addr - %8 = getelementptr inbounds %String, %String* %7, i32 0, i32 0 - %9 = load %"RawPtr[Char]", %"RawPtr[Char]"* %8 - %10 = call i8* @bytePtr(%"RawPtr[Char]" %9) - %11 = load %"RawPtr[Char]", %"RawPtr[Char]"* %_begin.addr - %12 = call i8* @bytePtr(%"RawPtr[Char]" %11) - %13 = load i64, i64* %size - store i64 %13, i64* %tmp.this1 - %14 = load i64, i64* %tmp.this1 - call void @_spr_memcpy(i8* %10, i8* %12, i64 %14) + %1 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %this.addr + %2 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %1, i32 0, i32 0 + %3 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %other.addr + %4 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %3, i32 0, i32 0 + call void @"=.571"(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %4) + %5 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %this.addr + %6 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %5, i32 0, i32 1 + %7 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %other.addr + %8 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %7, i32 0, i32 1 + call void @"=.571"(%"RawPtr[LocString]"* %6, %"RawPtr[LocString]"* %8) ret void } -; Function Attrs: inlinehint nounwind -define internal i1 @"!="(%String* %this, %String* %other) #4 { - %this.addr = alloca %String* - store %String* %this, %String** %this.addr - %other.addr = alloca %String* - store %String* %other, %String** %other.addr +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.647"(%"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"* %other) #3 { + %this.addr = alloca %"ContiguousMemoryRange[LocString]"* + store %"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"** %this.addr + %other.addr = alloca %"ContiguousMemoryRange[LocString]"* + store %"ContiguousMemoryRange[LocString]"* %other, %"ContiguousMemoryRange[LocString]"** %other.addr + br label %code + +code: ; preds = %0 + %1 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %this.addr + %2 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %1, i32 0, i32 0 + %3 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %other.addr + %4 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %3, i32 0, i32 0 + %5 = call i1 @"==.564"(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %4) + br i1 %5, label %cond.true, label %cond.false + +cond.true: ; preds = %code + %6 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %this.addr + %7 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %6, i32 0, i32 1 + %8 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %other.addr + %9 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %8, i32 0, i32 1 + %10 = call i1 @"==.564"(%"RawPtr[LocString]"* %7, %"RawPtr[LocString]"* %9) + br label %cond.end + +cond.false: ; preds = %code + br label %cond.end + +cond.end: ; preds = %cond.false, %cond.true + %cond.res = phi i1 [ %10, %cond.true ], [ false, %cond.false ] + ret i1 %cond.res +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.648(%"ContiguousMemoryRange[Char]"* %this) #3 { + %this.addr = alloca %"ContiguousMemoryRange[Char]"* + store %"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"** %this.addr br label %code code: ; preds = %0 - %1 = load %String*, %String** %this.addr - %2 = load %String*, %String** %other.addr - %3 = call i1 @"==.274"(%String* %1, %String* %2) - %4 = xor i1 true, %3 - ret i1 %4 + %1 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %this.addr + %2 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %1, i32 0, i32 0 + call void @ctor.138(%"RawPtr[Char]"* %2) + %3 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %this.addr + %4 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %3, i32 0, i32 1 + call void @ctor.138(%"RawPtr[Char]"* %4) + ret void } -; Function Attrs: inlinehint nounwind -define internal i8* @at.490(%String* %this, i64 %index) #4 { - %this.addr = alloca %String* - store %String* %this, %String** %this.addr - %index.addr = alloca i64 - store i64 %index, i64* %index.addr - %"$tmpC" = alloca %"RawPtr[Char]" - %tmp.this = alloca i64 +; Function Attrs: alwaysinline nounwind +define internal void @dtor.649(%"ContiguousMemoryRange[Char]"* %this) #3 { + %this.addr = alloca %"ContiguousMemoryRange[Char]"* + store %"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"** %this.addr br label %code code: ; preds = %0 - %1 = load %String*, %String** %this.addr - %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 0 - %3 = load %"RawPtr[Char]", %"RawPtr[Char]"* %2 - %4 = load i64, i64* %index.addr - store i64 %4, i64* %tmp.this - %5 = load i64, i64* %tmp.this - call void @advance.187(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %3, i64 %5) - %6 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC" - %7 = call i8* @value(%"RawPtr[Char]" %6) - ret i8* %7 + ret void } -; Function Attrs: inlinehint nounwind -define internal i8* @front.491(%String* %this) #4 { - %this.addr = alloca %String* - store %String* %this, %String** %this.addr +; Function Attrs: alwaysinline nounwind +define internal void @"=.650"(%"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"* %other) #3 { + %this.addr = alloca %"ContiguousMemoryRange[Char]"* + store %"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"** %this.addr + %other.addr = alloca %"ContiguousMemoryRange[Char]"* + store %"ContiguousMemoryRange[Char]"* %other, %"ContiguousMemoryRange[Char]"** %other.addr br label %code code: ; preds = %0 - %1 = load %String*, %String** %this.addr - %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 0 - %3 = load %"RawPtr[Char]", %"RawPtr[Char]"* %2 - %4 = call i8* @value(%"RawPtr[Char]" %3) - ret i8* %4 + %1 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %this.addr + %2 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %1, i32 0, i32 0 + %3 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %other.addr + %4 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %3, i32 0, i32 0 + call void @"=.200"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) + %5 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %this.addr + %6 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %5, i32 0, i32 1 + %7 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %other.addr + %8 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %7, i32 0, i32 1 + call void @"=.200"(%"RawPtr[Char]"* %6, %"RawPtr[Char]"* %8) + ret void } -; Function Attrs: inlinehint nounwind -define internal i8* @back.492(%String* %this) #4 { - %this.addr = alloca %String* - store %String* %this, %String** %this.addr - %"$tmpC" = alloca %"RawPtr[Char]" - %tmp.this = alloca i64 +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.651"(%"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"* %other) #3 { + %this.addr = alloca %"ContiguousMemoryRange[Char]"* + store %"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"** %this.addr + %other.addr = alloca %"ContiguousMemoryRange[Char]"* + store %"ContiguousMemoryRange[Char]"* %other, %"ContiguousMemoryRange[Char]"** %other.addr br label %code code: ; preds = %0 - %1 = load %String*, %String** %this.addr - %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 1 - %3 = load %"RawPtr[Char]", %"RawPtr[Char]"* %2 - store i64 -1, i64* %tmp.this - %4 = load i64, i64* %tmp.this - call void @advance.187(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %3, i64 %4) - %5 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC" - %6 = call i8* @value(%"RawPtr[Char]" %5) - ret i8* %6 + %1 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %this.addr + %2 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %1, i32 0, i32 0 + %3 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %other.addr + %4 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %3, i32 0, i32 0 + %5 = call i1 @"==.268"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) + br i1 %5, label %cond.true, label %cond.false + +cond.true: ; preds = %code + %6 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %this.addr + %7 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %6, i32 0, i32 1 + %8 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %other.addr + %9 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %8, i32 0, i32 1 + %10 = call i1 @"==.268"(%"RawPtr[Char]"* %7, %"RawPtr[Char]"* %9) + br label %cond.end + +cond.false: ; preds = %code + br label %cond.end + +cond.end: ; preds = %cond.false, %cond.true + %cond.res = phi i1 [ %10, %cond.true ], [ false, %cond.false ] + ret i1 %cond.res } -; Function Attrs: inlinehint nounwind -define internal %StringRef @subrange(%String* %this, i64 %index, i64 %num) #4 { - %this.addr = alloca %String* - store %String* %this, %String** %this.addr - %index.addr = alloca i64 - store i64 %index, i64* %index.addr - %num.addr = alloca i64 - store i64 %num, i64* %num.addr - %tmp.this = alloca %StringRef - %"$tmpC" = alloca %"RawPtr[Char]" - %tmp.this1 = alloca i64 - %"$tmpC2" = alloca %"RawPtr[Char]" - %tmp.this3 = alloca i64 +; Function Attrs: alwaysinline nounwind +define internal void @ctor.652(%"ContiguousMemoryRange[Token]"* %this) #3 { + %this.addr = alloca %"ContiguousMemoryRange[Token]"* + store %"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"** %this.addr br label %code code: ; preds = %0 - %1 = load %String*, %String** %this.addr - %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 0 - %3 = load %"RawPtr[Char]", %"RawPtr[Char]"* %2 - %4 = load i64, i64* %index.addr - store i64 %4, i64* %tmp.this1 - %5 = load i64, i64* %tmp.this1 - call void @advance.187(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %3, i64 %5) - %6 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC" - %7 = call i8* @bytePtr(%"RawPtr[Char]" %6) - %8 = load %String*, %String** %this.addr - %9 = getelementptr inbounds %String, %String* %8, i32 0, i32 0 - %10 = load %"RawPtr[Char]", %"RawPtr[Char]"* %9 - %11 = load i64, i64* %index.addr - %12 = load i64, i64* %num.addr - %13 = add i64 %11, %12 - store i64 %13, i64* %tmp.this3 - %14 = load i64, i64* %tmp.this3 - call void @advance.187(%"RawPtr[Char]"* %"$tmpC2", %"RawPtr[Char]" %10, i64 %14) - %15 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC2" - %16 = call i8* @bytePtr(%"RawPtr[Char]" %15) - call void @ctor.57(%StringRef* %tmp.this, i8* %7, i8* %16) - %17 = load %StringRef, %StringRef* %tmp.this - ret %StringRef %17 + %1 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %this.addr + %2 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %1, i32 0, i32 0 + call void @ctor.150(%"RawPtr[Token]"* %2) + %3 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %this.addr + %4 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %3, i32 0, i32 1 + call void @ctor.150(%"RawPtr[Token]"* %4) + ret void } -; Function Attrs: inlinehint nounwind -define internal void @resize(%String* %this, i64 %n) #4 { - %this.addr = alloca %String* - store %String* %this, %String** %this.addr - %n.addr = alloca i64 - store i64 %n, i64* %n.addr - %oldSize = alloca i64 - %newEnd = alloca %"RawPtr[Char]" - %tmp.this = alloca i64 - %"$tmpC" = alloca %"RawPtr[Char]" - %tmp.this4 = alloca i64 - %newEnd5 = alloca %"RawPtr[Char]" - %tmp.this6 = alloca i64 - %"$tmpC11" = alloca %"RawPtr[Char]" +; Function Attrs: alwaysinline nounwind +define internal void @dtor.653(%"ContiguousMemoryRange[Token]"* %this) #3 { + %this.addr = alloca %"ContiguousMemoryRange[Token]"* + store %"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"** %this.addr br label %code code: ; preds = %0 - %1 = load %String*, %String** %this.addr - %2 = call i64 @size.185(%String* %1) - store i64 %2, i64* %oldSize - br label %if_block - -if_block: ; preds = %code - %3 = load i64, i64* %n.addr - %4 = load i64, i64* %oldSize - %5 = icmp eq i64 %3, %4 - br i1 %5, label %if_then, label %if_end - -if_then: ; preds = %if_block ret void +} -if_end: ; preds = %dumy_block, %if_block - br label %if_block1 - -dumy_block: ; No predecessors! - br label %if_end - -if_block1: ; preds = %if_end - %6 = load i64, i64* %n.addr - %7 = load i64, i64* %oldSize - %8 = icmp slt i64 %6, %7 - br i1 %8, label %if_then2, label %if_else - -if_then2: ; preds = %if_block1 - %9 = load %String*, %String** %this.addr - %10 = getelementptr inbounds %String, %String* %9, i32 0, i32 0 - %11 = load %"RawPtr[Char]", %"RawPtr[Char]"* %10 - %12 = load i64, i64* %n.addr - store i64 %12, i64* %tmp.this - %13 = load i64, i64* %tmp.this - call void @advance.187(%"RawPtr[Char]"* %newEnd, %"RawPtr[Char]" %11, i64 %13) - br label %while_block - -if_else: ; preds = %if_block1 - %14 = load %String*, %String** %this.addr - %15 = load i64, i64* %n.addr - call void @reserve(%String* %14, i64 %15) - %16 = load %String*, %String** %this.addr - %17 = getelementptr inbounds %String, %String* %16, i32 0, i32 0 - %18 = load %"RawPtr[Char]", %"RawPtr[Char]"* %17 - %19 = load i64, i64* %n.addr - store i64 %19, i64* %tmp.this6 - %20 = load i64, i64* %tmp.this6 - call void @advance.187(%"RawPtr[Char]"* %newEnd5, %"RawPtr[Char]" %18, i64 %20) - br label %while_block7 +; Function Attrs: alwaysinline nounwind +define internal void @"=.654"(%"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"* %other) #3 { + %this.addr = alloca %"ContiguousMemoryRange[Token]"* + store %"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"** %this.addr + %other.addr = alloca %"ContiguousMemoryRange[Token]"* + store %"ContiguousMemoryRange[Token]"* %other, %"ContiguousMemoryRange[Token]"** %other.addr + br label %code -if_end3: ; preds = %while_end10, %while_end +code: ; preds = %0 + %1 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %this.addr + %2 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %1, i32 0, i32 0 + %3 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %other.addr + %4 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %3, i32 0, i32 0 + call void @"=.212"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %4) + %5 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %this.addr + %6 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %5, i32 0, i32 1 + %7 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %other.addr + %8 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %7, i32 0, i32 1 + call void @"=.212"(%"RawPtr[Token]"* %6, %"RawPtr[Token]"* %8) ret void +} -while_block: ; preds = %while_step, %if_then2 - %21 = load %String*, %String** %this.addr - %22 = getelementptr inbounds %String, %String* %21, i32 0, i32 1 - %23 = call i1 @"==.225"(%"RawPtr[Char]"* %22, %"RawPtr[Char]"* %newEnd) - %24 = xor i1 true, %23 - br i1 %24, label %while_body, label %while_end - -while_body: ; preds = %while_block - %25 = load %String*, %String** %this.addr - %26 = getelementptr inbounds %String, %String* %25, i32 0, i32 1 - %27 = load %String*, %String** %this.addr - %28 = getelementptr inbounds %String, %String* %27, i32 0, i32 1 - %29 = load %"RawPtr[Char]", %"RawPtr[Char]"* %28 - store i64 -1, i64* %tmp.this4 - %30 = load i64, i64* %tmp.this4 - call void @advance.187(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %29, i64 %30) - call void @"=.178"(%"RawPtr[Char]"* %26, %"RawPtr[Char]"* %"$tmpC") - %31 = load %String*, %String** %this.addr - %32 = getelementptr inbounds %String, %String* %31, i32 0, i32 1 - %33 = load %"RawPtr[Char]", %"RawPtr[Char]"* %32 - %34 = call i8* @value(%"RawPtr[Char]" %33) - %35 = load i8, i8* %34 - br label %while_step - -while_step: ; preds = %while_body - br label %while_block - -while_end: ; preds = %while_block - br label %if_end3 +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.655"(%"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"* %other) #3 { + %this.addr = alloca %"ContiguousMemoryRange[Token]"* + store %"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"** %this.addr + %other.addr = alloca %"ContiguousMemoryRange[Token]"* + store %"ContiguousMemoryRange[Token]"* %other, %"ContiguousMemoryRange[Token]"** %other.addr + br label %code -while_block7: ; preds = %while_step9, %if_else - %36 = load %String*, %String** %this.addr - %37 = getelementptr inbounds %String, %String* %36, i32 0, i32 1 - %38 = call i1 @"==.225"(%"RawPtr[Char]"* %37, %"RawPtr[Char]"* %newEnd5) - %39 = xor i1 true, %38 - br i1 %39, label %while_body8, label %while_end10 +code: ; preds = %0 + %1 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %this.addr + %2 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %1, i32 0, i32 0 + %3 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %other.addr + %4 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %3, i32 0, i32 0 + %5 = call i1 @"==.218"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %4) + br i1 %5, label %cond.true, label %cond.false -while_body8: ; preds = %while_block7 - %40 = load %String*, %String** %this.addr - %41 = getelementptr inbounds %String, %String* %40, i32 0, i32 1 - %42 = load %"RawPtr[Char]", %"RawPtr[Char]"* %41 - %43 = call i8* @value(%"RawPtr[Char]" %42) - store i8 0, i8* %43 - %44 = load %String*, %String** %this.addr - %45 = getelementptr inbounds %String, %String* %44, i32 0, i32 1 - %46 = load %String*, %String** %this.addr - %47 = getelementptr inbounds %String, %String* %46, i32 0, i32 1 - %48 = load %"RawPtr[Char]", %"RawPtr[Char]"* %47 - call void @advance.226(%"RawPtr[Char]"* %"$tmpC11", %"RawPtr[Char]" %48) - call void @"=.178"(%"RawPtr[Char]"* %45, %"RawPtr[Char]"* %"$tmpC11") - br label %while_step9 +cond.true: ; preds = %code + %6 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %this.addr + %7 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %6, i32 0, i32 1 + %8 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %other.addr + %9 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %8, i32 0, i32 1 + %10 = call i1 @"==.218"(%"RawPtr[Token]"* %7, %"RawPtr[Token]"* %9) + br label %cond.end -while_step9: ; preds = %while_body8 - br label %while_block7 +cond.false: ; preds = %code + br label %cond.end -while_end10: ; preds = %while_block7 - br label %if_end3 +cond.end: ; preds = %cond.false, %cond.true + %cond.res = phi i1 [ %10, %cond.true ], [ false, %cond.false ] + ret i1 %cond.res } -; Function Attrs: inlinehint nounwind -define internal void @insertAfter(%String* %this, i8 %value, %StringRef %pos) #4 { - %this.addr = alloca %String* - store %String* %this, %String** %this.addr - %value.addr = alloca i8 - store i8 %value, i8* %value.addr - %pos.addr = alloca %StringRef - store %StringRef %pos, %StringRef* %pos.addr - %tmp.this = alloca %StringRef - %"$tmpC" = alloca %"RawPtr[Char]" +; Function Attrs: alwaysinline nounwind +define internal void @ctor.656(%"ContiguousMemoryRange[UInt]"* %this, %"RawPtr[UInt]" %f_begin, %"RawPtr[UInt]" %f_end) #3 { + %this.addr = alloca %"ContiguousMemoryRange[UInt]"* + store %"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"** %this.addr + %f_begin.addr = alloca %"RawPtr[UInt]" + store %"RawPtr[UInt]" %f_begin, %"RawPtr[UInt]"* %f_begin.addr + %f_end.addr = alloca %"RawPtr[UInt]" + store %"RawPtr[UInt]" %f_end, %"RawPtr[UInt]"* %f_end.addr br label %code code: ; preds = %0 - %1 = load %String*, %String** %this.addr - %2 = load i8, i8* %value.addr - %3 = load %StringRef, %StringRef* %pos.addr - call void @_backPtr(%"RawPtr[Char]"* %"$tmpC", %StringRef %3) - %4 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC" - %5 = call i8* @bytePtr(%"RawPtr[Char]" %4) - %6 = load %String*, %String** %this.addr - %7 = getelementptr inbounds %String, %String* %6, i32 0, i32 1 - %8 = load %"RawPtr[Char]", %"RawPtr[Char]"* %7 - %9 = call i8* @bytePtr(%"RawPtr[Char]" %8) - call void @ctor.57(%StringRef* %tmp.this, i8* %5, i8* %9) - %10 = load %StringRef, %StringRef* %tmp.this - call void @insertBefore.376(%String* %1, i8 %2, %StringRef %10) + %1 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %this.addr + %2 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %1, i32 0, i32 0 + call void @ctor.230(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %f_begin.addr) + %3 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %this.addr + %4 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %3, i32 0, i32 1 + call void @ctor.230(%"RawPtr[UInt]"* %4, %"RawPtr[UInt]"* %f_end.addr) ret void } -; Function Attrs: inlinehint nounwind -define internal void @_backPtr(%"RawPtr[Char]"* sret %_result, %StringRef %s) #4 { - %_result.addr = alloca %"RawPtr[Char]"* - store %"RawPtr[Char]"* %_result, %"RawPtr[Char]"** %_result.addr - %s.addr = alloca %StringRef - store %StringRef %s, %StringRef* %s.addr +; Function Attrs: alwaysinline nounwind +define internal void @ctor.657(%"ContiguousMemoryRange[UInt]"* %this) #3 { + %this.addr = alloca %"ContiguousMemoryRange[UInt]"* + store %"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"** %this.addr br label %code code: ; preds = %0 - %1 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %_result.addr - %2 = getelementptr inbounds %StringRef, %StringRef* %s.addr, i32 0, i32 1 - %3 = load i8*, i8** %2 - call void @ctor.180(%"RawPtr[Char]"* %1, i8* %3) + %1 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %this.addr + %2 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %1, i32 0, i32 0 + call void @ctor.152(%"RawPtr[UInt]"* %2) + %3 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %this.addr + %4 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %3, i32 0, i32 1 + call void @ctor.152(%"RawPtr[UInt]"* %4) ret void } -; Function Attrs: inlinehint nounwind -define internal void @remove.493(%String* %this, i64 %index) #4 { - %this.addr = alloca %String* - store %String* %this, %String** %this.addr - %index.addr = alloca i64 - store i64 %index, i64* %index.addr - %r = alloca %StringRef - %tmp.this = alloca i64 +; Function Attrs: alwaysinline nounwind +define internal void @ctor.658(%"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"* %other) #3 { + %this.addr = alloca %"ContiguousMemoryRange[UInt]"* + store %"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"** %this.addr + %other.addr = alloca %"ContiguousMemoryRange[UInt]"* + store %"ContiguousMemoryRange[UInt]"* %other, %"ContiguousMemoryRange[UInt]"** %other.addr br label %code code: ; preds = %0 - %1 = load %String*, %String** %this.addr - %2 = call %StringRef @all.379(%String* %1) - call void @ctor.56(%StringRef* %r, %StringRef %2) - %3 = load i64, i64* %index.addr - call void @popFront.60(%StringRef* %r, i64 %3) - %4 = load %String*, %String** %this.addr - %5 = call i64 @size.185(%String* %4) - %6 = load i64, i64* %index.addr - %7 = call i64 @_SizeType_opMinus(i64 %5, i64 %6) - store i64 1, i64* %tmp.this - %8 = load i64, i64* %tmp.this - %9 = call i64 @_SizeType_opMinus(i64 %7, i64 %8) - call void @popBack.61(%StringRef* %r, i64 %9) - %10 = load %String*, %String** %this.addr - %11 = load %StringRef, %StringRef* %r - call void @remove(%String* %10, %StringRef %11) + %1 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %this.addr + %2 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %1, i32 0, i32 0 + %3 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %other.addr + %4 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %3, i32 0, i32 0 + call void @ctor.230(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %4) + %5 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %this.addr + %6 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %5, i32 0, i32 1 + %7 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %other.addr + %8 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %7, i32 0, i32 1 + call void @ctor.230(%"RawPtr[UInt]"* %6, %"RawPtr[UInt]"* %8) ret void } -; Function Attrs: inlinehint nounwind -define internal void @"+.494"(%String* sret %_result, %String %x, %String %y) #4 { - %_result.addr = alloca %String* - store %String* %_result, %String** %_result.addr - %x.addr = alloca %String - store %String %x, %String* %x.addr - %y.addr = alloca %String - store %String %y, %String* %y.addr - %sz1 = alloca i64 - %sz2 = alloca i64 - %res = alloca %String - %"$tmpC" = alloca %"RawPtr[Char]" +; Function Attrs: alwaysinline nounwind +define internal void @dtor.659(%"ContiguousMemoryRange[UInt]"* %this) #3 { + %this.addr = alloca %"ContiguousMemoryRange[UInt]"* + store %"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"** %this.addr br label %code code: ; preds = %0 - %1 = call i64 @size.185(%String* %x.addr) - store i64 %1, i64* %sz1 - %2 = call i64 @size.185(%String* %y.addr) - store i64 %2, i64* %sz2 - %3 = load i64, i64* %sz1 - %4 = load i64, i64* %sz2 - %5 = add i64 %3, %4 - call void @ctor.186(%String* %res, i64 %5) - %6 = getelementptr inbounds %String, %String* %res, i32 0, i32 0 - %7 = load %"RawPtr[Char]", %"RawPtr[Char]"* %6 - %8 = call i8* @bytePtr(%"RawPtr[Char]" %7) - %9 = getelementptr inbounds %String, %String* %x.addr, i32 0, i32 0 - %10 = load %"RawPtr[Char]", %"RawPtr[Char]"* %9 - %11 = call i8* @bytePtr(%"RawPtr[Char]" %10) - %12 = load i64, i64* %sz1 - call void @_spr_memcpy(i8* %8, i8* %11, i64 %12) - %13 = getelementptr inbounds %String, %String* %res, i32 0, i32 0 - %14 = load %"RawPtr[Char]", %"RawPtr[Char]"* %13 - %15 = load i64, i64* %sz1 - call void @advance(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %14, i64 %15) - %16 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC" - %17 = call i8* @bytePtr(%"RawPtr[Char]" %16) - %18 = getelementptr inbounds %String, %String* %y.addr, i32 0, i32 0 - %19 = load %"RawPtr[Char]", %"RawPtr[Char]"* %18 - %20 = call i8* @bytePtr(%"RawPtr[Char]" %19) - %21 = load i64, i64* %sz2 - call void @_spr_memcpy(i8* %17, i8* %20, i64 %21) - %22 = load %String*, %String** %_result.addr - call void @ctor.184(%String* %22, %String* %res) - call void @dtor.218(%String* %res) - ret void - -dumy_block: ; No predecessors! - call void @dtor.218(%String* %res) ret void } -; Function Attrs: inlinehint nounwind -define internal void @"+.495"(%String* sret %_result, %String %x, %StringRef %y) #4 { - %_result.addr = alloca %String* - store %String* %_result, %String** %_result.addr - %x.addr = alloca %String - store %String %x, %String* %x.addr - %y.addr = alloca %StringRef - store %StringRef %y, %StringRef* %y.addr - %sz1 = alloca i64 - %sz2 = alloca i64 - %res = alloca %String - %"$tmpC" = alloca %"RawPtr[Char]" +; Function Attrs: alwaysinline nounwind +define internal void @"=.660"(%"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"* %other) #3 { + %this.addr = alloca %"ContiguousMemoryRange[UInt]"* + store %"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"** %this.addr + %other.addr = alloca %"ContiguousMemoryRange[UInt]"* + store %"ContiguousMemoryRange[UInt]"* %other, %"ContiguousMemoryRange[UInt]"** %other.addr br label %code code: ; preds = %0 - %1 = call i64 @size.185(%String* %x.addr) - store i64 %1, i64* %sz1 - %2 = call i64 @size(%StringRef* %y.addr) - store i64 %2, i64* %sz2 - %3 = load i64, i64* %sz1 - %4 = load i64, i64* %sz2 - %5 = add i64 %3, %4 - call void @ctor.186(%String* %res, i64 %5) - %6 = getelementptr inbounds %String, %String* %res, i32 0, i32 0 - %7 = load %"RawPtr[Char]", %"RawPtr[Char]"* %6 - %8 = call i8* @bytePtr(%"RawPtr[Char]" %7) - %9 = getelementptr inbounds %String, %String* %x.addr, i32 0, i32 0 - %10 = load %"RawPtr[Char]", %"RawPtr[Char]"* %9 - %11 = call i8* @bytePtr(%"RawPtr[Char]" %10) - %12 = load i64, i64* %sz1 - call void @_spr_memcpy(i8* %8, i8* %11, i64 %12) - %13 = getelementptr inbounds %String, %String* %res, i32 0, i32 0 - %14 = load %"RawPtr[Char]", %"RawPtr[Char]"* %13 - %15 = load i64, i64* %sz1 - call void @advance(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %14, i64 %15) - %16 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC" - %17 = call i8* @bytePtr(%"RawPtr[Char]" %16) - %18 = getelementptr inbounds %StringRef, %StringRef* %y.addr, i32 0, i32 0 - %19 = load i8*, i8** %18 - %20 = load i64, i64* %sz2 - call void @_spr_memcpy(i8* %17, i8* %19, i64 %20) - %21 = load %String*, %String** %_result.addr - call void @ctor.184(%String* %21, %String* %res) - call void @dtor.218(%String* %res) - ret void - -dumy_block: ; No predecessors! - call void @dtor.218(%String* %res) + %1 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %this.addr + %2 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %1, i32 0, i32 0 + %3 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %other.addr + %4 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %3, i32 0, i32 0 + call void @"=.225"(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %4) + %5 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %this.addr + %6 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %5, i32 0, i32 1 + %7 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %other.addr + %8 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %7, i32 0, i32 1 + call void @"=.225"(%"RawPtr[UInt]"* %6, %"RawPtr[UInt]"* %8) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.496(%StringOutputStream* %this, %StringOutputStream* %other) #3 { - %this.addr = alloca %StringOutputStream* - store %StringOutputStream* %this, %StringOutputStream** %this.addr - %other.addr = alloca %StringOutputStream* - store %StringOutputStream* %other, %StringOutputStream** %other.addr +define internal i1 @"==.661"(%"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"* %other) #3 { + %this.addr = alloca %"ContiguousMemoryRange[UInt]"* + store %"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"** %this.addr + %other.addr = alloca %"ContiguousMemoryRange[UInt]"* + store %"ContiguousMemoryRange[UInt]"* %other, %"ContiguousMemoryRange[UInt]"** %other.addr br label %code code: ; preds = %0 - %1 = load %StringOutputStream*, %StringOutputStream** %this.addr - %2 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %1, i32 0, i32 0 - %3 = load %StringOutputStream*, %StringOutputStream** %other.addr - %4 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %3, i32 0, i32 0 - call void @ctor.184(%String* %2, %String* %4) - ret void + %1 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %this.addr + %2 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %1, i32 0, i32 0 + %3 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %other.addr + %4 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %3, i32 0, i32 0 + %5 = call i1 @"==.271"(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %4) + br i1 %5, label %cond.true, label %cond.false + +cond.true: ; preds = %code + %6 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %this.addr + %7 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %6, i32 0, i32 1 + %8 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %other.addr + %9 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %8, i32 0, i32 1 + %10 = call i1 @"==.271"(%"RawPtr[UInt]"* %7, %"RawPtr[UInt]"* %9) + br label %cond.end + +cond.false: ; preds = %code + br label %cond.end + +cond.end: ; preds = %cond.false, %cond.true + %cond.res = phi i1 [ %10, %cond.true ], [ false, %cond.false ] + ret i1 %cond.res } ; Function Attrs: alwaysinline nounwind -define internal void @"=.497"(%StringOutputStream* %this, %StringOutputStream* %other) #3 { - %this.addr = alloca %StringOutputStream* - store %StringOutputStream* %this, %StringOutputStream** %this.addr - %other.addr = alloca %StringOutputStream* - store %StringOutputStream* %other, %StringOutputStream** %other.addr +define internal void @dtor.662(%"RawPtr[LocString]"* %this) #3 { + %this.addr = alloca %"RawPtr[LocString]"* + store %"RawPtr[LocString]"* %this, %"RawPtr[LocString]"** %this.addr + br label %code + +code: ; preds = %0 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @dtor.663(%"RawPtr[Token]"* %this) #3 { + %this.addr = alloca %"RawPtr[Token]"* + store %"RawPtr[Token]"* %this, %"RawPtr[Token]"** %this.addr br label %code code: ; preds = %0 - %1 = load %StringOutputStream*, %StringOutputStream** %this.addr - %2 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %1, i32 0, i32 0 - %3 = load %StringOutputStream*, %StringOutputStream** %other.addr - %4 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %3, i32 0, i32 0 - %5 = call %String* @"=.250"(%String* %2, %String* %4) ret void } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.498"(%StringOutputStream* %this, %StringOutputStream* %other) #3 { - %this.addr = alloca %StringOutputStream* - store %StringOutputStream* %this, %StringOutputStream** %this.addr - %other.addr = alloca %StringOutputStream* - store %StringOutputStream* %other, %StringOutputStream** %other.addr +define internal void @dtor.664(%"RawPtr[UInt]"* %this) #3 { + %this.addr = alloca %"RawPtr[UInt]"* + store %"RawPtr[UInt]"* %this, %"RawPtr[UInt]"** %this.addr br label %code code: ; preds = %0 - %1 = load %StringOutputStream*, %StringOutputStream** %this.addr - %2 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %1, i32 0, i32 0 - %3 = load %StringOutputStream*, %StringOutputStream** %other.addr - %4 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %3, i32 0, i32 0 - %5 = call i1 @"==.274"(%String* %2, %String* %4) - ret i1 %5 + ret void } ; Function Attrs: alwaysinline nounwind -define internal void @"<<<.499"(%StringOutputStream* %this, %String* %s) #3 { - %this.addr = alloca %StringOutputStream* - store %StringOutputStream* %this, %StringOutputStream** %this.addr - %s.addr = alloca %String* - store %String* %s, %String** %s.addr +define internal void @ctor.665(%"NumericRangeInc[Int]"* %this) #3 { + %this.addr = alloca %"NumericRangeInc[Int]"* + store %"NumericRangeInc[Int]"* %this, %"NumericRangeInc[Int]"** %this.addr br label %code code: ; preds = %0 - %1 = load %StringOutputStream*, %StringOutputStream** %this.addr - %2 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %1, i32 0, i32 0 - %3 = load %String*, %String** %s.addr - %4 = call %StringRef @all.379(%String* %3) - call void @append(%String* %2, %StringRef %4) + %1 = load %"NumericRangeInc[Int]"*, %"NumericRangeInc[Int]"** %this.addr + %2 = getelementptr inbounds %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %1, i32 0, i32 0 + store i32 0, i32* %2 + %3 = load %"NumericRangeInc[Int]"*, %"NumericRangeInc[Int]"** %this.addr + %4 = getelementptr inbounds %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %3, i32 0, i32 1 + store i32 0, i32* %4 + %5 = load %"NumericRangeInc[Int]"*, %"NumericRangeInc[Int]"** %this.addr + %6 = getelementptr inbounds %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %5, i32 0, i32 2 + store i1 false, i1* %6 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @"<<<.500"(%StringOutputStream* %this, double %x) #3 { - %this.addr = alloca %StringOutputStream* - store %StringOutputStream* %this, %StringOutputStream** %this.addr - %x.addr = alloca double - store double %x, double* %x.addr - %"$tmpC" = alloca %String - %tmp.this = alloca i64 +define internal void @ctor.666(%"NumericRangeInc[Int]"* %this, %"NumericRangeInc[Int]"* %other) #3 { + %this.addr = alloca %"NumericRangeInc[Int]"* + store %"NumericRangeInc[Int]"* %this, %"NumericRangeInc[Int]"** %this.addr + %other.addr = alloca %"NumericRangeInc[Int]"* + store %"NumericRangeInc[Int]"* %other, %"NumericRangeInc[Int]"** %other.addr br label %code code: ; preds = %0 - %1 = load %StringOutputStream*, %StringOutputStream** %this.addr - %2 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %1, i32 0, i32 0 - %3 = load double, double* %x.addr - %4 = fptoui double %3 to i64 - store i64 %4, i64* %tmp.this - %5 = load i64, i64* %tmp.this - call void @ulongToString(%String* %"$tmpC", i64 %5) - %6 = call %StringRef @all.379(%String* %"$tmpC") - call void @append(%String* %2, %StringRef %6) - call void @dtor.218(%String* %"$tmpC") + %1 = load %"NumericRangeInc[Int]"*, %"NumericRangeInc[Int]"** %other.addr + %2 = getelementptr inbounds %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %1, i32 0, i32 0 + %3 = load i32, i32* %2 + %4 = load %"NumericRangeInc[Int]"*, %"NumericRangeInc[Int]"** %this.addr + %5 = getelementptr inbounds %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %4, i32 0, i32 0 + store i32 %3, i32* %5 + %6 = load %"NumericRangeInc[Int]"*, %"NumericRangeInc[Int]"** %other.addr + %7 = getelementptr inbounds %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %6, i32 0, i32 1 + %8 = load i32, i32* %7 + %9 = load %"NumericRangeInc[Int]"*, %"NumericRangeInc[Int]"** %this.addr + %10 = getelementptr inbounds %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %9, i32 0, i32 1 + store i32 %8, i32* %10 + %11 = load %"NumericRangeInc[Int]"*, %"NumericRangeInc[Int]"** %other.addr + %12 = getelementptr inbounds %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %11, i32 0, i32 2 + %13 = load i1, i1* %12 + %14 = load %"NumericRangeInc[Int]"*, %"NumericRangeInc[Int]"** %this.addr + %15 = getelementptr inbounds %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %14, i32 0, i32 2 + store i1 %13, i1* %15 ret void } -; Function Attrs: inlinehint nounwind -define internal void @toString.501(%String* sret %_result) #4 { - %_result.addr = alloca %String* - store %String* %_result, %String** %_result.addr +; Function Attrs: alwaysinline nounwind +define internal void @"=.667"(%"NumericRangeInc[Int]"* %this, %"NumericRangeInc[Int]"* %other) #3 { + %this.addr = alloca %"NumericRangeInc[Int]"* + store %"NumericRangeInc[Int]"* %this, %"NumericRangeInc[Int]"** %this.addr + %other.addr = alloca %"NumericRangeInc[Int]"* + store %"NumericRangeInc[Int]"* %other, %"NumericRangeInc[Int]"** %other.addr br label %code code: ; preds = %0 - %1 = load %String*, %String** %_result.addr - call void @ctor.158(%String* %1) + %1 = load %"NumericRangeInc[Int]"*, %"NumericRangeInc[Int]"** %other.addr + %2 = getelementptr inbounds %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %1, i32 0, i32 0 + %3 = load i32, i32* %2 + %4 = load %"NumericRangeInc[Int]"*, %"NumericRangeInc[Int]"** %this.addr + %5 = getelementptr inbounds %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %4, i32 0, i32 0 + store i32 %3, i32* %5 + %6 = load %"NumericRangeInc[Int]"*, %"NumericRangeInc[Int]"** %other.addr + %7 = getelementptr inbounds %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %6, i32 0, i32 1 + %8 = load i32, i32* %7 + %9 = load %"NumericRangeInc[Int]"*, %"NumericRangeInc[Int]"** %this.addr + %10 = getelementptr inbounds %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %9, i32 0, i32 1 + store i32 %8, i32* %10 + %11 = load %"NumericRangeInc[Int]"*, %"NumericRangeInc[Int]"** %other.addr + %12 = getelementptr inbounds %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %11, i32 0, i32 2 + %13 = load i1, i1* %12 + %14 = load %"NumericRangeInc[Int]"*, %"NumericRangeInc[Int]"** %this.addr + %15 = getelementptr inbounds %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %14, i32 0, i32 2 + store i1 %13, i1* %15 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.502(%"ContiguousMemoryRange[LocString]"* %this) #3 { - %this.addr = alloca %"ContiguousMemoryRange[LocString]"* - store %"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"** %this.addr +define internal i1 @"==.668"(%"NumericRangeInc[Int]"* %this, %"NumericRangeInc[Int]"* %other) #3 { + %this.addr = alloca %"NumericRangeInc[Int]"* + store %"NumericRangeInc[Int]"* %this, %"NumericRangeInc[Int]"** %this.addr + %other.addr = alloca %"NumericRangeInc[Int]"* + store %"NumericRangeInc[Int]"* %other, %"NumericRangeInc[Int]"** %other.addr br label %code code: ; preds = %0 - %1 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %this.addr - %2 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %1, i32 0, i32 0 - call void @ctor.437(%"RawPtr[LocString]"* %2) - %3 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %this.addr - %4 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %3, i32 0, i32 1 - call void @ctor.437(%"RawPtr[LocString]"* %4) - ret void + %1 = load %"NumericRangeInc[Int]"*, %"NumericRangeInc[Int]"** %this.addr + %2 = getelementptr inbounds %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %1, i32 0, i32 0 + %3 = load i32, i32* %2 + %4 = load %"NumericRangeInc[Int]"*, %"NumericRangeInc[Int]"** %other.addr + %5 = getelementptr inbounds %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %4, i32 0, i32 0 + %6 = load i32, i32* %5 + %7 = icmp eq i32 %3, %6 + br i1 %7, label %cond.true1, label %cond.false2 + +cond.true: ; preds = %cond.end3 + %8 = load %"NumericRangeInc[Int]"*, %"NumericRangeInc[Int]"** %this.addr + %9 = getelementptr inbounds %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %8, i32 0, i32 2 + %10 = load i1, i1* %9 + %11 = load %"NumericRangeInc[Int]"*, %"NumericRangeInc[Int]"** %other.addr + %12 = getelementptr inbounds %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %11, i32 0, i32 2 + %13 = load i1, i1* %12 + %14 = icmp eq i1 %10, %13 + br label %cond.end + +cond.false: ; preds = %cond.end3 + br label %cond.end + +cond.end: ; preds = %cond.false, %cond.true + %cond.res4 = phi i1 [ %14, %cond.true ], [ false, %cond.false ] + ret i1 %cond.res4 + +cond.true1: ; preds = %code + %15 = load %"NumericRangeInc[Int]"*, %"NumericRangeInc[Int]"** %this.addr + %16 = getelementptr inbounds %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %15, i32 0, i32 1 + %17 = load i32, i32* %16 + %18 = load %"NumericRangeInc[Int]"*, %"NumericRangeInc[Int]"** %other.addr + %19 = getelementptr inbounds %"NumericRangeInc[Int]", %"NumericRangeInc[Int]"* %18, i32 0, i32 1 + %20 = load i32, i32* %19 + %21 = icmp eq i32 %17, %20 + br label %cond.end3 + +cond.false2: ; preds = %code + br label %cond.end3 + +cond.end3: ; preds = %cond.false2, %cond.true1 + %cond.res = phi i1 [ %21, %cond.true1 ], [ false, %cond.false2 ] + br i1 %cond.res, label %cond.true, label %cond.false } +; Function Attrs: nounwind readnone speculatable +declare float @llvm.sqrt.f32(float) #6 + +; Function Attrs: nounwind readnone speculatable +declare float @llvm.sin.f32(float) #6 + +; Function Attrs: nounwind readnone speculatable +declare float @llvm.cos.f32(float) #6 + +; Function Attrs: nounwind readnone speculatable +declare float @llvm.powi.f32(float, i32) #6 + +; Function Attrs: nounwind readnone speculatable +declare float @llvm.pow.f32(float, float) #6 + +; Function Attrs: nounwind readnone speculatable +declare float @llvm.exp.f32(float) #6 + +; Function Attrs: nounwind readnone speculatable +declare float @llvm.exp2.f32(float) #6 + +; Function Attrs: nounwind readnone speculatable +declare float @llvm.log.f32(float) #6 + +; Function Attrs: nounwind readnone speculatable +declare float @llvm.log10.f32(float) #6 + +; Function Attrs: nounwind readnone speculatable +declare float @llvm.log2.f32(float) #6 + +; Function Attrs: nounwind readnone speculatable +declare float @llvm.fabs.f32(float) #6 + +; Function Attrs: nounwind readnone speculatable +declare float @llvm.floor.f32(float) #6 + +; Function Attrs: nounwind readnone speculatable +declare float @llvm.ceil.f32(float) #6 + +declare float @llvm.truc.f32(float) + +; Function Attrs: nounwind readnone speculatable +declare float @llvm.rint.f32(float) #6 + +; Function Attrs: nounwind readnone speculatable +declare double @llvm.sqrt.f64(double) #6 + +; Function Attrs: nounwind readnone speculatable +declare double @llvm.sin.f64(double) #6 + +; Function Attrs: nounwind readnone speculatable +declare double @llvm.cos.f64(double) #6 + +; Function Attrs: nounwind readnone speculatable +declare double @llvm.powi.f64(double, i32) #6 + +; Function Attrs: nounwind readnone speculatable +declare double @llvm.pow.f64(double, double) #6 + +; Function Attrs: nounwind readnone speculatable +declare double @llvm.exp.f64(double) #6 + +; Function Attrs: nounwind readnone speculatable +declare double @llvm.exp2.f64(double) #6 + +; Function Attrs: nounwind readnone speculatable +declare double @llvm.log.f64(double) #6 + +; Function Attrs: nounwind readnone speculatable +declare double @llvm.log10.f64(double) #6 + +; Function Attrs: nounwind readnone speculatable +declare double @llvm.log2.f64(double) #6 + +; Function Attrs: nounwind readnone speculatable +declare double @llvm.fabs.f64(double) #6 + +; Function Attrs: nounwind readnone speculatable +declare double @llvm.floor.f64(double) #6 + +; Function Attrs: nounwind readnone speculatable +declare double @llvm.ceil.f64(double) #6 + +declare double @llvm.truc.f64(double) + +; Function Attrs: nounwind readnone speculatable +declare double @llvm.rint.f64(double) #6 + ; Function Attrs: alwaysinline nounwind -define internal void @ctor.503(%"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"* %other) #3 { - %this.addr = alloca %"ContiguousMemoryRange[LocString]"* - store %"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"** %this.addr - %other.addr = alloca %"ContiguousMemoryRange[LocString]"* - store %"ContiguousMemoryRange[LocString]"* %other, %"ContiguousMemoryRange[LocString]"** %other.addr +define internal void @ctor.669(%"Vector[LocString]"* %this, %"Vector[LocString]"* %other) #3 { + %this.addr = alloca %"Vector[LocString]"* + store %"Vector[LocString]"* %this, %"Vector[LocString]"** %this.addr + %other.addr = alloca %"Vector[LocString]"* + store %"Vector[LocString]"* %other, %"Vector[LocString]"** %other.addr br label %code code: ; preds = %0 - %1 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %this.addr - %2 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %1, i32 0, i32 0 - %3 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %other.addr - %4 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %3, i32 0, i32 0 - call void @ctor.461(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %4) - %5 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %this.addr - %6 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %5, i32 0, i32 1 - %7 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %other.addr - %8 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %7, i32 0, i32 1 - call void @ctor.461(%"RawPtr[LocString]"* %6, %"RawPtr[LocString]"* %8) + %1 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr + %2 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %1, i32 0, i32 0 + %3 = load %"Vector[LocString]"*, %"Vector[LocString]"** %other.addr + %4 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %3, i32 0, i32 0 + call void @ctor.585(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %4) + %5 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr + %6 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %5, i32 0, i32 1 + %7 = load %"Vector[LocString]"*, %"Vector[LocString]"** %other.addr + %8 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %7, i32 0, i32 1 + call void @ctor.585(%"RawPtr[LocString]"* %6, %"RawPtr[LocString]"* %8) + %9 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr + %10 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %9, i32 0, i32 2 + %11 = load %"Vector[LocString]"*, %"Vector[LocString]"** %other.addr + %12 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %11, i32 0, i32 2 + call void @ctor.585(%"RawPtr[LocString]"* %10, %"RawPtr[LocString]"* %12) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.504(%"ContiguousMemoryRange[LocString]"* %this) #3 { - %this.addr = alloca %"ContiguousMemoryRange[LocString]"* - store %"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"** %this.addr +define internal void @dtor.670(%"Vector[LocString]"* %this) #3 { + %this.addr = alloca %"Vector[LocString]"* + store %"Vector[LocString]"* %this, %"Vector[LocString]"** %this.addr br label %code code: ; preds = %0 @@ -27356,79 +33132,110 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.505"(%"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"* %other) #3 { - %this.addr = alloca %"ContiguousMemoryRange[LocString]"* - store %"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"** %this.addr - %other.addr = alloca %"ContiguousMemoryRange[LocString]"* - store %"ContiguousMemoryRange[LocString]"* %other, %"ContiguousMemoryRange[LocString]"** %other.addr +define internal void @"=.671"(%"Vector[LocString]"* %this, %"Vector[LocString]"* %other) #3 { + %this.addr = alloca %"Vector[LocString]"* + store %"Vector[LocString]"* %this, %"Vector[LocString]"** %this.addr + %other.addr = alloca %"Vector[LocString]"* + store %"Vector[LocString]"* %other, %"Vector[LocString]"** %other.addr br label %code code: ; preds = %0 - %1 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %this.addr - %2 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %1, i32 0, i32 0 - %3 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %other.addr - %4 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %3, i32 0, i32 0 - call void @"=.447"(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %4) - %5 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %this.addr - %6 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %5, i32 0, i32 1 - %7 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %other.addr - %8 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %7, i32 0, i32 1 - call void @"=.447"(%"RawPtr[LocString]"* %6, %"RawPtr[LocString]"* %8) + %1 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr + %2 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %1, i32 0, i32 0 + %3 = load %"Vector[LocString]"*, %"Vector[LocString]"** %other.addr + %4 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %3, i32 0, i32 0 + call void @"=.571"(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %4) + %5 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr + %6 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %5, i32 0, i32 1 + %7 = load %"Vector[LocString]"*, %"Vector[LocString]"** %other.addr + %8 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %7, i32 0, i32 1 + call void @"=.571"(%"RawPtr[LocString]"* %6, %"RawPtr[LocString]"* %8) + %9 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr + %10 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %9, i32 0, i32 2 + %11 = load %"Vector[LocString]"*, %"Vector[LocString]"** %other.addr + %12 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %11, i32 0, i32 2 + call void @"=.571"(%"RawPtr[LocString]"* %10, %"RawPtr[LocString]"* %12) ret void } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.506"(%"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"* %other) #3 { - %this.addr = alloca %"ContiguousMemoryRange[LocString]"* - store %"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"** %this.addr - %other.addr = alloca %"ContiguousMemoryRange[LocString]"* - store %"ContiguousMemoryRange[LocString]"* %other, %"ContiguousMemoryRange[LocString]"** %other.addr +define internal i1 @"==.672"(%"Vector[LocString]"* %this, %"Vector[LocString]"* %other) #3 { + %this.addr = alloca %"Vector[LocString]"* + store %"Vector[LocString]"* %this, %"Vector[LocString]"** %this.addr + %other.addr = alloca %"Vector[LocString]"* + store %"Vector[LocString]"* %other, %"Vector[LocString]"** %other.addr br label %code code: ; preds = %0 - %1 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %this.addr - %2 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %1, i32 0, i32 0 - %3 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %other.addr - %4 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %3, i32 0, i32 0 - %5 = call i1 @"==.440"(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %4) - br i1 %5, label %cond.true, label %cond.false + %1 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr + %2 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %1, i32 0, i32 0 + %3 = load %"Vector[LocString]"*, %"Vector[LocString]"** %other.addr + %4 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %3, i32 0, i32 0 + %5 = call i1 @"==.564"(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %4) + br i1 %5, label %cond.true1, label %cond.false2 -cond.true: ; preds = %code - %6 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %this.addr - %7 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %6, i32 0, i32 1 - %8 = load %"ContiguousMemoryRange[LocString]"*, %"ContiguousMemoryRange[LocString]"** %other.addr - %9 = getelementptr inbounds %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %8, i32 0, i32 1 - %10 = call i1 @"==.440"(%"RawPtr[LocString]"* %7, %"RawPtr[LocString]"* %9) +cond.true: ; preds = %cond.end3 + %6 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr + %7 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %6, i32 0, i32 2 + %8 = load %"Vector[LocString]"*, %"Vector[LocString]"** %other.addr + %9 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %8, i32 0, i32 2 + %10 = call i1 @"==.564"(%"RawPtr[LocString]"* %7, %"RawPtr[LocString]"* %9) br label %cond.end -cond.false: ; preds = %code +cond.false: ; preds = %cond.end3 br label %cond.end cond.end: ; preds = %cond.false, %cond.true - %cond.res = phi i1 [ %10, %cond.true ], [ false, %cond.false ] - ret i1 %cond.res + %cond.res4 = phi i1 [ %10, %cond.true ], [ false, %cond.false ] + ret i1 %cond.res4 + +cond.true1: ; preds = %code + %11 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr + %12 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %11, i32 0, i32 1 + %13 = load %"Vector[LocString]"*, %"Vector[LocString]"** %other.addr + %14 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %13, i32 0, i32 1 + %15 = call i1 @"==.564"(%"RawPtr[LocString]"* %12, %"RawPtr[LocString]"* %14) + br label %cond.end3 + +cond.false2: ; preds = %code + br label %cond.end3 + +cond.end3: ; preds = %cond.false2, %cond.true1 + %cond.res = phi i1 [ %15, %cond.true1 ], [ false, %cond.false2 ] + br i1 %cond.res, label %cond.true, label %cond.false } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.507(%"ContiguousMemoryRange[Char]"* %this) #3 { - %this.addr = alloca %"ContiguousMemoryRange[Char]"* - store %"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"** %this.addr +define internal void @ctor.673(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #3 { + %this.addr = alloca %"Vector[Char]"* + store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr + %other.addr = alloca %"Vector[Char]"* + store %"Vector[Char]"* %other, %"Vector[Char]"** %other.addr br label %code code: ; preds = %0 - %1 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %this.addr - %2 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %1, i32 0, i32 0 - call void @ctor.155(%"RawPtr[Char]"* %2) - %3 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %this.addr - %4 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %3, i32 0, i32 1 - call void @ctor.155(%"RawPtr[Char]"* %4) + %1 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr + %2 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %1, i32 0, i32 0 + %3 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr + %4 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %3, i32 0, i32 0 + call void @ctor.192(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) + %5 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr + %6 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %5, i32 0, i32 1 + %7 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr + %8 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %7, i32 0, i32 1 + call void @ctor.192(%"RawPtr[Char]"* %6, %"RawPtr[Char]"* %8) + %9 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr + %10 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %9, i32 0, i32 2 + %11 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr + %12 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %11, i32 0, i32 2 + call void @ctor.192(%"RawPtr[Char]"* %10, %"RawPtr[Char]"* %12) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.508(%"ContiguousMemoryRange[Char]"* %this) #3 { - %this.addr = alloca %"ContiguousMemoryRange[Char]"* - store %"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"** %this.addr +define internal void @dtor.674(%"Vector[Char]"* %this) #3 { + %this.addr = alloca %"Vector[Char]"* + store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr br label %code code: ; preds = %0 @@ -27436,79 +33243,110 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.509"(%"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"* %other) #3 { - %this.addr = alloca %"ContiguousMemoryRange[Char]"* - store %"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"** %this.addr - %other.addr = alloca %"ContiguousMemoryRange[Char]"* - store %"ContiguousMemoryRange[Char]"* %other, %"ContiguousMemoryRange[Char]"** %other.addr +define internal void @"=.675"(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #3 { + %this.addr = alloca %"Vector[Char]"* + store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr + %other.addr = alloca %"Vector[Char]"* + store %"Vector[Char]"* %other, %"Vector[Char]"** %other.addr br label %code code: ; preds = %0 - %1 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %this.addr - %2 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %1, i32 0, i32 0 - %3 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %other.addr - %4 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %3, i32 0, i32 0 - call void @"=.178"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) - %5 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %this.addr - %6 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %5, i32 0, i32 1 - %7 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %other.addr - %8 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %7, i32 0, i32 1 - call void @"=.178"(%"RawPtr[Char]"* %6, %"RawPtr[Char]"* %8) + %1 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr + %2 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %1, i32 0, i32 0 + %3 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr + %4 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %3, i32 0, i32 0 + call void @"=.200"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) + %5 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr + %6 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %5, i32 0, i32 1 + %7 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr + %8 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %7, i32 0, i32 1 + call void @"=.200"(%"RawPtr[Char]"* %6, %"RawPtr[Char]"* %8) + %9 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr + %10 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %9, i32 0, i32 2 + %11 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr + %12 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %11, i32 0, i32 2 + call void @"=.200"(%"RawPtr[Char]"* %10, %"RawPtr[Char]"* %12) ret void } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.510"(%"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"* %other) #3 { - %this.addr = alloca %"ContiguousMemoryRange[Char]"* - store %"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"** %this.addr - %other.addr = alloca %"ContiguousMemoryRange[Char]"* - store %"ContiguousMemoryRange[Char]"* %other, %"ContiguousMemoryRange[Char]"** %other.addr +define internal i1 @"==.676"(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #3 { + %this.addr = alloca %"Vector[Char]"* + store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr + %other.addr = alloca %"Vector[Char]"* + store %"Vector[Char]"* %other, %"Vector[Char]"** %other.addr br label %code code: ; preds = %0 - %1 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %this.addr - %2 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %1, i32 0, i32 0 - %3 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %other.addr - %4 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %3, i32 0, i32 0 - %5 = call i1 @"==.225"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) - br i1 %5, label %cond.true, label %cond.false + %1 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr + %2 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %1, i32 0, i32 0 + %3 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr + %4 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %3, i32 0, i32 0 + %5 = call i1 @"==.268"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) + br i1 %5, label %cond.true1, label %cond.false2 -cond.true: ; preds = %code - %6 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %this.addr - %7 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %6, i32 0, i32 1 - %8 = load %"ContiguousMemoryRange[Char]"*, %"ContiguousMemoryRange[Char]"** %other.addr - %9 = getelementptr inbounds %"ContiguousMemoryRange[Char]", %"ContiguousMemoryRange[Char]"* %8, i32 0, i32 1 - %10 = call i1 @"==.225"(%"RawPtr[Char]"* %7, %"RawPtr[Char]"* %9) +cond.true: ; preds = %cond.end3 + %6 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr + %7 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %6, i32 0, i32 2 + %8 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr + %9 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %8, i32 0, i32 2 + %10 = call i1 @"==.268"(%"RawPtr[Char]"* %7, %"RawPtr[Char]"* %9) br label %cond.end -cond.false: ; preds = %code +cond.false: ; preds = %cond.end3 br label %cond.end cond.end: ; preds = %cond.false, %cond.true - %cond.res = phi i1 [ %10, %cond.true ], [ false, %cond.false ] - ret i1 %cond.res + %cond.res4 = phi i1 [ %10, %cond.true ], [ false, %cond.false ] + ret i1 %cond.res4 + +cond.true1: ; preds = %code + %11 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr + %12 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %11, i32 0, i32 1 + %13 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr + %14 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %13, i32 0, i32 1 + %15 = call i1 @"==.268"(%"RawPtr[Char]"* %12, %"RawPtr[Char]"* %14) + br label %cond.end3 + +cond.false2: ; preds = %code + br label %cond.end3 + +cond.end3: ; preds = %cond.false2, %cond.true1 + %cond.res = phi i1 [ %15, %cond.true1 ], [ false, %cond.false2 ] + br i1 %cond.res, label %cond.true, label %cond.false } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.511(%"ContiguousMemoryRange[Token]"* %this) #3 { - %this.addr = alloca %"ContiguousMemoryRange[Token]"* - store %"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"** %this.addr +define internal void @ctor.677(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #3 { + %this.addr = alloca %"Vector[Token]"* + store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr + %other.addr = alloca %"Vector[Token]"* + store %"Vector[Token]"* %other, %"Vector[Token]"** %other.addr br label %code code: ; preds = %0 - %1 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %this.addr - %2 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %1, i32 0, i32 0 - call void @ctor.162(%"RawPtr[Token]"* %2) - %3 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %this.addr - %4 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %3, i32 0, i32 1 - call void @ctor.162(%"RawPtr[Token]"* %4) + %1 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr + %2 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %1, i32 0, i32 0 + %3 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr + %4 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %3, i32 0, i32 0 + call void @ctor.217(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %4) + %5 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr + %6 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %5, i32 0, i32 1 + %7 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr + %8 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %7, i32 0, i32 1 + call void @ctor.217(%"RawPtr[Token]"* %6, %"RawPtr[Token]"* %8) + %9 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr + %10 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %9, i32 0, i32 2 + %11 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr + %12 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %11, i32 0, i32 2 + call void @ctor.217(%"RawPtr[Token]"* %10, %"RawPtr[Token]"* %12) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.512(%"ContiguousMemoryRange[Token]"* %this) #3 { - %this.addr = alloca %"ContiguousMemoryRange[Token]"* - store %"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"** %this.addr +define internal void @dtor.678(%"Vector[Token]"* %this) #3 { + %this.addr = alloca %"Vector[Token]"* + store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr br label %code code: ; preds = %0 @@ -27516,121 +33354,110 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.513"(%"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"* %other) #3 { - %this.addr = alloca %"ContiguousMemoryRange[Token]"* - store %"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"** %this.addr - %other.addr = alloca %"ContiguousMemoryRange[Token]"* - store %"ContiguousMemoryRange[Token]"* %other, %"ContiguousMemoryRange[Token]"** %other.addr +define internal void @"=.679"(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #3 { + %this.addr = alloca %"Vector[Token]"* + store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr + %other.addr = alloca %"Vector[Token]"* + store %"Vector[Token]"* %other, %"Vector[Token]"** %other.addr br label %code code: ; preds = %0 - %1 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %this.addr - %2 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %1, i32 0, i32 0 - %3 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %other.addr - %4 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %3, i32 0, i32 0 - call void @"=.194"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %4) - %5 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %this.addr - %6 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %5, i32 0, i32 1 - %7 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %other.addr - %8 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %7, i32 0, i32 1 - call void @"=.194"(%"RawPtr[Token]"* %6, %"RawPtr[Token]"* %8) + %1 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr + %2 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %1, i32 0, i32 0 + %3 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr + %4 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %3, i32 0, i32 0 + call void @"=.212"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %4) + %5 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr + %6 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %5, i32 0, i32 1 + %7 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr + %8 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %7, i32 0, i32 1 + call void @"=.212"(%"RawPtr[Token]"* %6, %"RawPtr[Token]"* %8) + %9 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr + %10 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %9, i32 0, i32 2 + %11 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr + %12 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %11, i32 0, i32 2 + call void @"=.212"(%"RawPtr[Token]"* %10, %"RawPtr[Token]"* %12) ret void } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.514"(%"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"* %other) #3 { - %this.addr = alloca %"ContiguousMemoryRange[Token]"* - store %"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"** %this.addr - %other.addr = alloca %"ContiguousMemoryRange[Token]"* - store %"ContiguousMemoryRange[Token]"* %other, %"ContiguousMemoryRange[Token]"** %other.addr +define internal i1 @"==.680"(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #3 { + %this.addr = alloca %"Vector[Token]"* + store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr + %other.addr = alloca %"Vector[Token]"* + store %"Vector[Token]"* %other, %"Vector[Token]"** %other.addr br label %code code: ; preds = %0 - %1 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %this.addr - %2 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %1, i32 0, i32 0 - %3 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %other.addr - %4 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %3, i32 0, i32 0 - %5 = call i1 @"==.200"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %4) - br i1 %5, label %cond.true, label %cond.false + %1 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr + %2 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %1, i32 0, i32 0 + %3 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr + %4 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %3, i32 0, i32 0 + %5 = call i1 @"==.218"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %4) + br i1 %5, label %cond.true1, label %cond.false2 -cond.true: ; preds = %code - %6 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %this.addr - %7 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %6, i32 0, i32 1 - %8 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %other.addr - %9 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %8, i32 0, i32 1 - %10 = call i1 @"==.200"(%"RawPtr[Token]"* %7, %"RawPtr[Token]"* %9) +cond.true: ; preds = %cond.end3 + %6 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr + %7 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %6, i32 0, i32 2 + %8 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr + %9 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %8, i32 0, i32 2 + %10 = call i1 @"==.218"(%"RawPtr[Token]"* %7, %"RawPtr[Token]"* %9) br label %cond.end -cond.false: ; preds = %code +cond.false: ; preds = %cond.end3 br label %cond.end cond.end: ; preds = %cond.false, %cond.true - %cond.res = phi i1 [ %10, %cond.true ], [ false, %cond.false ] - ret i1 %cond.res -} - -; Function Attrs: alwaysinline nounwind -define internal void @ctor.515(%"ContiguousMemoryRange[UInt]"* %this, %"RawPtr[UInt]" %f_begin, %"RawPtr[UInt]" %f_end) #3 { - %this.addr = alloca %"ContiguousMemoryRange[UInt]"* - store %"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"** %this.addr - %f_begin.addr = alloca %"RawPtr[UInt]" - store %"RawPtr[UInt]" %f_begin, %"RawPtr[UInt]"* %f_begin.addr - %f_end.addr = alloca %"RawPtr[UInt]" - store %"RawPtr[UInt]" %f_end, %"RawPtr[UInt]"* %f_end.addr - br label %code - -code: ; preds = %0 - %1 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %this.addr - %2 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %1, i32 0, i32 0 - call void @ctor.212(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %f_begin.addr) - %3 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %this.addr - %4 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %3, i32 0, i32 1 - call void @ctor.212(%"RawPtr[UInt]"* %4, %"RawPtr[UInt]"* %f_end.addr) - ret void -} + %cond.res4 = phi i1 [ %10, %cond.true ], [ false, %cond.false ] + ret i1 %cond.res4 -; Function Attrs: alwaysinline nounwind -define internal void @ctor.516(%"ContiguousMemoryRange[UInt]"* %this) #3 { - %this.addr = alloca %"ContiguousMemoryRange[UInt]"* - store %"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"** %this.addr - br label %code +cond.true1: ; preds = %code + %11 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr + %12 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %11, i32 0, i32 1 + %13 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr + %14 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %13, i32 0, i32 1 + %15 = call i1 @"==.218"(%"RawPtr[Token]"* %12, %"RawPtr[Token]"* %14) + br label %cond.end3 -code: ; preds = %0 - %1 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %this.addr - %2 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %1, i32 0, i32 0 - call void @ctor.164(%"RawPtr[UInt]"* %2) - %3 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %this.addr - %4 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %3, i32 0, i32 1 - call void @ctor.164(%"RawPtr[UInt]"* %4) - ret void +cond.false2: ; preds = %code + br label %cond.end3 + +cond.end3: ; preds = %cond.false2, %cond.true1 + %cond.res = phi i1 [ %15, %cond.true1 ], [ false, %cond.false2 ] + br i1 %cond.res, label %cond.true, label %cond.false } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.517(%"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"* %other) #3 { - %this.addr = alloca %"ContiguousMemoryRange[UInt]"* - store %"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"** %this.addr - %other.addr = alloca %"ContiguousMemoryRange[UInt]"* - store %"ContiguousMemoryRange[UInt]"* %other, %"ContiguousMemoryRange[UInt]"** %other.addr +define internal void @ctor.681(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #3 { + %this.addr = alloca %"Vector[UInt]"* + store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr + %other.addr = alloca %"Vector[UInt]"* + store %"Vector[UInt]"* %other, %"Vector[UInt]"** %other.addr br label %code code: ; preds = %0 - %1 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %this.addr - %2 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %1, i32 0, i32 0 - %3 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %other.addr - %4 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %3, i32 0, i32 0 - call void @ctor.212(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %4) - %5 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %this.addr - %6 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %5, i32 0, i32 1 - %7 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %other.addr - %8 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %7, i32 0, i32 1 - call void @ctor.212(%"RawPtr[UInt]"* %6, %"RawPtr[UInt]"* %8) + %1 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr + %2 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %1, i32 0, i32 0 + %3 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr + %4 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %3, i32 0, i32 0 + call void @ctor.230(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %4) + %5 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr + %6 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %5, i32 0, i32 1 + %7 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr + %8 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %7, i32 0, i32 1 + call void @ctor.230(%"RawPtr[UInt]"* %6, %"RawPtr[UInt]"* %8) + %9 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr + %10 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %9, i32 0, i32 2 + %11 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr + %12 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %11, i32 0, i32 2 + call void @ctor.230(%"RawPtr[UInt]"* %10, %"RawPtr[UInt]"* %12) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.518(%"ContiguousMemoryRange[UInt]"* %this) #3 { - %this.addr = alloca %"ContiguousMemoryRange[UInt]"* - store %"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"** %this.addr +define internal void @dtor.682(%"Vector[UInt]"* %this) #3 { + %this.addr = alloca %"Vector[UInt]"* + store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr br label %code code: ; preds = %0 @@ -27638,63 +33465,81 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.519"(%"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"* %other) #3 { - %this.addr = alloca %"ContiguousMemoryRange[UInt]"* - store %"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"** %this.addr - %other.addr = alloca %"ContiguousMemoryRange[UInt]"* - store %"ContiguousMemoryRange[UInt]"* %other, %"ContiguousMemoryRange[UInt]"** %other.addr +define internal void @"=.683"(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #3 { + %this.addr = alloca %"Vector[UInt]"* + store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr + %other.addr = alloca %"Vector[UInt]"* + store %"Vector[UInt]"* %other, %"Vector[UInt]"** %other.addr br label %code code: ; preds = %0 - %1 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %this.addr - %2 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %1, i32 0, i32 0 - %3 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %other.addr - %4 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %3, i32 0, i32 0 - call void @"=.207"(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %4) - %5 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %this.addr - %6 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %5, i32 0, i32 1 - %7 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %other.addr - %8 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %7, i32 0, i32 1 - call void @"=.207"(%"RawPtr[UInt]"* %6, %"RawPtr[UInt]"* %8) + %1 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr + %2 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %1, i32 0, i32 0 + %3 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr + %4 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %3, i32 0, i32 0 + call void @"=.225"(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %4) + %5 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr + %6 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %5, i32 0, i32 1 + %7 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr + %8 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %7, i32 0, i32 1 + call void @"=.225"(%"RawPtr[UInt]"* %6, %"RawPtr[UInt]"* %8) + %9 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr + %10 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %9, i32 0, i32 2 + %11 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr + %12 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %11, i32 0, i32 2 + call void @"=.225"(%"RawPtr[UInt]"* %10, %"RawPtr[UInt]"* %12) ret void } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.520"(%"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"* %other) #3 { - %this.addr = alloca %"ContiguousMemoryRange[UInt]"* - store %"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"** %this.addr - %other.addr = alloca %"ContiguousMemoryRange[UInt]"* - store %"ContiguousMemoryRange[UInt]"* %other, %"ContiguousMemoryRange[UInt]"** %other.addr +define internal i1 @"==.684"(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #3 { + %this.addr = alloca %"Vector[UInt]"* + store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr + %other.addr = alloca %"Vector[UInt]"* + store %"Vector[UInt]"* %other, %"Vector[UInt]"** %other.addr br label %code code: ; preds = %0 - %1 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %this.addr - %2 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %1, i32 0, i32 0 - %3 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %other.addr - %4 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %3, i32 0, i32 0 - %5 = call i1 @"==.228"(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %4) - br i1 %5, label %cond.true, label %cond.false + %1 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr + %2 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %1, i32 0, i32 0 + %3 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr + %4 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %3, i32 0, i32 0 + %5 = call i1 @"==.271"(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %4) + br i1 %5, label %cond.true1, label %cond.false2 -cond.true: ; preds = %code - %6 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %this.addr - %7 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %6, i32 0, i32 1 - %8 = load %"ContiguousMemoryRange[UInt]"*, %"ContiguousMemoryRange[UInt]"** %other.addr - %9 = getelementptr inbounds %"ContiguousMemoryRange[UInt]", %"ContiguousMemoryRange[UInt]"* %8, i32 0, i32 1 - %10 = call i1 @"==.228"(%"RawPtr[UInt]"* %7, %"RawPtr[UInt]"* %9) +cond.true: ; preds = %cond.end3 + %6 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr + %7 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %6, i32 0, i32 2 + %8 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr + %9 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %8, i32 0, i32 2 + %10 = call i1 @"==.271"(%"RawPtr[UInt]"* %7, %"RawPtr[UInt]"* %9) br label %cond.end -cond.false: ; preds = %code +cond.false: ; preds = %cond.end3 br label %cond.end cond.end: ; preds = %cond.false, %cond.true - %cond.res = phi i1 [ %10, %cond.true ], [ false, %cond.false ] - ret i1 %cond.res + %cond.res4 = phi i1 [ %10, %cond.true ], [ false, %cond.false ] + ret i1 %cond.res4 + +cond.true1: ; preds = %code + %11 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr + %12 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %11, i32 0, i32 1 + %13 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr + %14 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %13, i32 0, i32 1 + %15 = call i1 @"==.271"(%"RawPtr[UInt]"* %12, %"RawPtr[UInt]"* %14) + br label %cond.end3 + +cond.false2: ; preds = %code + br label %cond.end3 + +cond.end3: ; preds = %cond.false2, %cond.true1 + %cond.res = phi i1 [ %15, %cond.true1 ], [ false, %cond.false2 ] + br i1 %cond.res, label %cond.true, label %cond.false } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.521(%"RawPtr[LocString]"* %this) #3 { - %this.addr = alloca %"RawPtr[LocString]"* - store %"RawPtr[LocString]"* %this, %"RawPtr[LocString]"** %this.addr +define internal void @_returnsVoid() #3 { br label %code code: ; preds = %0 @@ -27702,912 +33547,896 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.522(%"RawPtr[Token]"* %this) #3 { - %this.addr = alloca %"RawPtr[Token]"* - store %"RawPtr[Token]"* %this, %"RawPtr[Token]"** %this.addr +define internal void @dtor.685(%ErrorReporter* %this) #3 { + %this.addr = alloca %ErrorReporter* + store %ErrorReporter* %this, %ErrorReporter** %this.addr br label %code code: ; preds = %0 ret void } -; Function Attrs: alwaysinline nounwind -define internal void @dtor.523(%"RawPtr[UInt]"* %this) #3 { - %this.addr = alloca %"RawPtr[UInt]"* - store %"RawPtr[UInt]"* %this, %"RawPtr[UInt]"** %this.addr +; Function Attrs: inlinehint nounwind +define internal void @reportError.686(%ErrorReporter %obj, %Location* %loc, %StringRef %msg) #4 { + %obj.addr = alloca %ErrorReporter + store %ErrorReporter %obj, %ErrorReporter* %obj.addr + %loc.addr = alloca %Location* + store %Location* %loc, %Location** %loc.addr + %msg.addr = alloca %StringRef + store %StringRef %msg, %StringRef* %msg.addr br label %code code: ; preds = %0 + %1 = getelementptr inbounds %ErrorReporter, %ErrorReporter* %obj.addr, i32 0, i32 1 + %2 = getelementptr inbounds %ErrorReporter, %ErrorReporter* %obj.addr, i32 0, i32 0 + %3 = load %UntypedPtr, %UntypedPtr* %2 + %4 = load %Location*, %Location** %loc.addr + %5 = load %StringRef, %StringRef* %msg.addr + call void @"().451"(%"FunctionPtr3[Void, UntypedPtr, @Location, StringRef]"* %1, %UntypedPtr %3, %Location* %4, %StringRef %5) ret void } -; Function Attrs: nounwind readnone speculatable -declare float @llvm.sqrt.f32(float) #6 +; Function Attrs: alwaysinline nounwind +define internal void @dtor.687(%AstBuilder* %this) #3 { + %this.addr = alloca %AstBuilder* + store %AstBuilder* %this, %AstBuilder** %this.addr + br label %code -; Function Attrs: nounwind readnone speculatable -declare float @llvm.sin.f32(float) #6 +code: ; preds = %0 + ret void +} -; Function Attrs: nounwind readnone speculatable -declare float @llvm.cos.f32(float) #6 +; Function Attrs: inlinehint nounwind +define internal i1 @isAlnum(i8 %c) #4 { + %c.addr = alloca i8 + store i8 %c, i8* %c.addr + %tmp.this = alloca i32 + br label %code -; Function Attrs: nounwind readnone speculatable -declare float @llvm.powi.f32(float, i32) #6 +code: ; preds = %0 + %1 = load i8, i8* %c.addr + call void @_ass_32_8z(i32* %tmp.this, i8 %1) + %2 = load i32, i32* %tmp.this + %3 = call i32 @isalnum(i32 %2) + %4 = icmp ne i32 0, %3 + ret i1 %4 +} -; Function Attrs: nounwind readnone speculatable -declare float @llvm.pow.f32(float, float) #6 +declare i32 @isalnum(i32) -; Function Attrs: nounwind readnone speculatable -declare float @llvm.exp.f32(float) #6 +; Function Attrs: inlinehint nounwind +define internal i1 @isBlank(i8 %c) #4 { + %c.addr = alloca i8 + store i8 %c, i8* %c.addr + %tmp.this = alloca i32 + br label %code -; Function Attrs: nounwind readnone speculatable -declare float @llvm.exp2.f32(float) #6 +code: ; preds = %0 + %1 = load i8, i8* %c.addr + call void @_ass_32_8z(i32* %tmp.this, i8 %1) + %2 = load i32, i32* %tmp.this + %3 = call i32 @isblank(i32 %2) + %4 = icmp ne i32 0, %3 + ret i1 %4 +} -; Function Attrs: nounwind readnone speculatable -declare float @llvm.log.f32(float) #6 +declare i32 @isblank(i32) -; Function Attrs: nounwind readnone speculatable -declare float @llvm.log10.f32(float) #6 +; Function Attrs: inlinehint nounwind +define internal i1 @isCntrl(i8 %c) #4 { + %c.addr = alloca i8 + store i8 %c, i8* %c.addr + %tmp.this = alloca i32 + br label %code -; Function Attrs: nounwind readnone speculatable -declare float @llvm.log2.f32(float) #6 +code: ; preds = %0 + %1 = load i8, i8* %c.addr + call void @_ass_32_8z(i32* %tmp.this, i8 %1) + %2 = load i32, i32* %tmp.this + %3 = call i32 @iscntrl(i32 %2) + %4 = icmp ne i32 0, %3 + ret i1 %4 +} -; Function Attrs: nounwind readnone speculatable -declare float @llvm.fabs.f32(float) #6 +declare i32 @iscntrl(i32) -; Function Attrs: nounwind readnone speculatable -declare float @llvm.floor.f32(float) #6 +; Function Attrs: inlinehint nounwind +define internal i1 @isGraph(i8 %c) #4 { + %c.addr = alloca i8 + store i8 %c, i8* %c.addr + %tmp.this = alloca i32 + br label %code -; Function Attrs: nounwind readnone speculatable -declare float @llvm.ceil.f32(float) #6 +code: ; preds = %0 + %1 = load i8, i8* %c.addr + call void @_ass_32_8z(i32* %tmp.this, i8 %1) + %2 = load i32, i32* %tmp.this + %3 = call i32 @isgraph(i32 %2) + %4 = icmp ne i32 0, %3 + ret i1 %4 +} -declare float @llvm.truc.f32(float) +declare i32 @isgraph(i32) -; Function Attrs: nounwind readnone speculatable -declare float @llvm.rint.f32(float) #6 +; Function Attrs: inlinehint nounwind +define internal i1 @isLower(i8 %c) #4 { + %c.addr = alloca i8 + store i8 %c, i8* %c.addr + %tmp.this = alloca i32 + br label %code -; Function Attrs: nounwind readnone speculatable -declare double @llvm.sqrt.f64(double) #6 +code: ; preds = %0 + %1 = load i8, i8* %c.addr + call void @_ass_32_8z(i32* %tmp.this, i8 %1) + %2 = load i32, i32* %tmp.this + %3 = call i32 @islower(i32 %2) + %4 = icmp ne i32 0, %3 + ret i1 %4 +} -; Function Attrs: nounwind readnone speculatable -declare double @llvm.sin.f64(double) #6 +declare i32 @islower(i32) -; Function Attrs: nounwind readnone speculatable -declare double @llvm.cos.f64(double) #6 +; Function Attrs: inlinehint nounwind +define internal i1 @isPrint(i8 %c) #4 { + %c.addr = alloca i8 + store i8 %c, i8* %c.addr + %tmp.this = alloca i32 + br label %code -; Function Attrs: nounwind readnone speculatable -declare double @llvm.powi.f64(double, i32) #6 +code: ; preds = %0 + %1 = load i8, i8* %c.addr + call void @_ass_32_8z(i32* %tmp.this, i8 %1) + %2 = load i32, i32* %tmp.this + %3 = call i32 @isprint(i32 %2) + %4 = icmp ne i32 0, %3 + ret i1 %4 +} + +declare i32 @isprint(i32) -; Function Attrs: nounwind readnone speculatable -declare double @llvm.pow.f64(double, double) #6 +; Function Attrs: inlinehint nounwind +define internal i1 @isPunct(i8 %c) #4 { + %c.addr = alloca i8 + store i8 %c, i8* %c.addr + %tmp.this = alloca i32 + br label %code -; Function Attrs: nounwind readnone speculatable -declare double @llvm.exp.f64(double) #6 +code: ; preds = %0 + %1 = load i8, i8* %c.addr + call void @_ass_32_8z(i32* %tmp.this, i8 %1) + %2 = load i32, i32* %tmp.this + %3 = call i32 @ispunct(i32 %2) + %4 = icmp ne i32 0, %3 + ret i1 %4 +} -; Function Attrs: nounwind readnone speculatable -declare double @llvm.exp2.f64(double) #6 +declare i32 @ispunct(i32) -; Function Attrs: nounwind readnone speculatable -declare double @llvm.log.f64(double) #6 +; Function Attrs: inlinehint nounwind +define internal i1 @isSpace(i8 %c) #4 { + %c.addr = alloca i8 + store i8 %c, i8* %c.addr + %tmp.this = alloca i32 + br label %code -; Function Attrs: nounwind readnone speculatable -declare double @llvm.log10.f64(double) #6 +code: ; preds = %0 + %1 = load i8, i8* %c.addr + call void @_ass_32_8z(i32* %tmp.this, i8 %1) + %2 = load i32, i32* %tmp.this + %3 = call i32 @isspace(i32 %2) + %4 = icmp ne i32 0, %3 + ret i1 %4 +} -; Function Attrs: nounwind readnone speculatable -declare double @llvm.log2.f64(double) #6 +declare i32 @isspace(i32) -; Function Attrs: nounwind readnone speculatable -declare double @llvm.fabs.f64(double) #6 +; Function Attrs: inlinehint nounwind +define internal i1 @isUpper(i8 %c) #4 { + %c.addr = alloca i8 + store i8 %c, i8* %c.addr + %tmp.this = alloca i32 + br label %code -; Function Attrs: nounwind readnone speculatable -declare double @llvm.floor.f64(double) #6 +code: ; preds = %0 + %1 = load i8, i8* %c.addr + call void @_ass_32_8z(i32* %tmp.this, i8 %1) + %2 = load i32, i32* %tmp.this + %3 = call i32 @isupper(i32 %2) + %4 = icmp ne i32 0, %3 + ret i1 %4 +} -; Function Attrs: nounwind readnone speculatable -declare double @llvm.ceil.f64(double) #6 +declare i32 @isupper(i32) -declare double @llvm.truc.f64(double) +declare void @exit(i32) -; Function Attrs: nounwind readnone speculatable -declare double @llvm.rint.f64(double) #6 +; Function Attrs: inlinehint nounwind +define internal i32 @systemCall(%StringRef %cmd) #4 { + %cmd.addr = alloca %StringRef + store %StringRef %cmd, %StringRef* %cmd.addr + br label %code + +code: ; preds = %0 + %1 = call i8* @cStr(%StringRef* %cmd.addr) + %2 = call i32 bitcast (void (i8*)* @system to i32 (i8*)*)(i8* %1) + ret i32 %2 +} ; Function Attrs: alwaysinline nounwind -define internal void @ctor.524(%"Vector[LocString]"* %this, %"Vector[LocString]"* %other) #3 { - %this.addr = alloca %"Vector[LocString]"* - store %"Vector[LocString]"* %this, %"Vector[LocString]"** %this.addr - %other.addr = alloca %"Vector[LocString]"* - store %"Vector[LocString]"* %other, %"Vector[LocString]"** %other.addr +define internal void @ctor.688(%File* %this) #3 { + %this.addr = alloca %File* + store %File* %this, %File** %this.addr br label %code code: ; preds = %0 - %1 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr - %2 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %1, i32 0, i32 0 - %3 = load %"Vector[LocString]"*, %"Vector[LocString]"** %other.addr - %4 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %3, i32 0, i32 0 - call void @ctor.461(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %4) - %5 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr - %6 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %5, i32 0, i32 1 - %7 = load %"Vector[LocString]"*, %"Vector[LocString]"** %other.addr - %8 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %7, i32 0, i32 1 - call void @ctor.461(%"RawPtr[LocString]"* %6, %"RawPtr[LocString]"* %8) - %9 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr - %10 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %9, i32 0, i32 2 - %11 = load %"Vector[LocString]"*, %"Vector[LocString]"** %other.addr - %12 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %11, i32 0, i32 2 - call void @ctor.461(%"RawPtr[LocString]"* %10, %"RawPtr[LocString]"* %12) + %1 = load %File*, %File** %this.addr + %2 = getelementptr inbounds %File, %File* %1, i32 0, i32 0 + store i8* null, i8** %2 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.525(%"Vector[LocString]"* %this) #3 { - %this.addr = alloca %"Vector[LocString]"* - store %"Vector[LocString]"* %this, %"Vector[LocString]"** %this.addr +define internal void @ctor.689(%File* %this, %File* %other) #3 { + %this.addr = alloca %File* + store %File* %this, %File** %this.addr + %other.addr = alloca %File* + store %File* %other, %File** %other.addr br label %code code: ; preds = %0 + %1 = load %File*, %File** %other.addr + %2 = getelementptr inbounds %File, %File* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %File*, %File** %this.addr + %5 = getelementptr inbounds %File, %File* %4, i32 0, i32 0 + store i8* %3, i8** %5 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @"=.526"(%"Vector[LocString]"* %this, %"Vector[LocString]"* %other) #3 { - %this.addr = alloca %"Vector[LocString]"* - store %"Vector[LocString]"* %this, %"Vector[LocString]"** %this.addr - %other.addr = alloca %"Vector[LocString]"* - store %"Vector[LocString]"* %other, %"Vector[LocString]"** %other.addr +define internal void @dtor.690(%File* %this) #3 { + %this.addr = alloca %File* + store %File* %this, %File** %this.addr br label %code code: ; preds = %0 - %1 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr - %2 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %1, i32 0, i32 0 - %3 = load %"Vector[LocString]"*, %"Vector[LocString]"** %other.addr - %4 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %3, i32 0, i32 0 - call void @"=.447"(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %4) - %5 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr - %6 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %5, i32 0, i32 1 - %7 = load %"Vector[LocString]"*, %"Vector[LocString]"** %other.addr - %8 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %7, i32 0, i32 1 - call void @"=.447"(%"RawPtr[LocString]"* %6, %"RawPtr[LocString]"* %8) - %9 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr - %10 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %9, i32 0, i32 2 - %11 = load %"Vector[LocString]"*, %"Vector[LocString]"** %other.addr - %12 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %11, i32 0, i32 2 - call void @"=.447"(%"RawPtr[LocString]"* %10, %"RawPtr[LocString]"* %12) ret void } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.527"(%"Vector[LocString]"* %this, %"Vector[LocString]"* %other) #3 { - %this.addr = alloca %"Vector[LocString]"* - store %"Vector[LocString]"* %this, %"Vector[LocString]"** %this.addr - %other.addr = alloca %"Vector[LocString]"* - store %"Vector[LocString]"* %other, %"Vector[LocString]"** %other.addr +define internal void @"=.691"(%File* %this, %File* %other) #3 { + %this.addr = alloca %File* + store %File* %this, %File** %this.addr + %other.addr = alloca %File* + store %File* %other, %File** %other.addr br label %code code: ; preds = %0 - %1 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr - %2 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %1, i32 0, i32 0 - %3 = load %"Vector[LocString]"*, %"Vector[LocString]"** %other.addr - %4 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %3, i32 0, i32 0 - %5 = call i1 @"==.440"(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %4) - br i1 %5, label %cond.true1, label %cond.false2 - -cond.true: ; preds = %cond.end3 - %6 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr - %7 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %6, i32 0, i32 2 - %8 = load %"Vector[LocString]"*, %"Vector[LocString]"** %other.addr - %9 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %8, i32 0, i32 2 - %10 = call i1 @"==.440"(%"RawPtr[LocString]"* %7, %"RawPtr[LocString]"* %9) - br label %cond.end - -cond.false: ; preds = %cond.end3 - br label %cond.end + %1 = load %File*, %File** %other.addr + %2 = getelementptr inbounds %File, %File* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %File*, %File** %this.addr + %5 = getelementptr inbounds %File, %File* %4, i32 0, i32 0 + store i8* %3, i8** %5 + ret void +} -cond.end: ; preds = %cond.false, %cond.true - %cond.res4 = phi i1 [ %10, %cond.true ], [ false, %cond.false ] - ret i1 %cond.res4 +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.692"(%File* %this, %File* %other) #3 { + %this.addr = alloca %File* + store %File* %this, %File** %this.addr + %other.addr = alloca %File* + store %File* %other, %File** %other.addr + br label %code -cond.true1: ; preds = %code - %11 = load %"Vector[LocString]"*, %"Vector[LocString]"** %this.addr - %12 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %11, i32 0, i32 1 - %13 = load %"Vector[LocString]"*, %"Vector[LocString]"** %other.addr - %14 = getelementptr inbounds %"Vector[LocString]", %"Vector[LocString]"* %13, i32 0, i32 1 - %15 = call i1 @"==.440"(%"RawPtr[LocString]"* %12, %"RawPtr[LocString]"* %14) - br label %cond.end3 +code: ; preds = %0 + %1 = load %File*, %File** %this.addr + %2 = getelementptr inbounds %File, %File* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %File*, %File** %other.addr + %5 = getelementptr inbounds %File, %File* %4, i32 0, i32 0 + %6 = load i8*, i8** %5 + %7 = call i1 @implOpRefEQ(i8* %3, i8* %6) + ret i1 %7 +} -cond.false2: ; preds = %code - br label %cond.end3 +; Function Attrs: inlinehint nounwind +define internal void @ctor.693(%File* %this) #4 { + %this.addr = alloca %File* + store %File* %this, %File** %this.addr + br label %code -cond.end3: ; preds = %cond.false2, %cond.true1 - %cond.res = phi i1 [ %15, %cond.true1 ], [ false, %cond.false2 ] - br i1 %cond.res, label %cond.true, label %cond.false +code: ; preds = %0 + %1 = load %File*, %File** %this.addr + %2 = getelementptr inbounds %File, %File* %1, i32 0, i32 0 + store i8* null, i8** %2 + %3 = load %File*, %File** %this.addr + %4 = getelementptr inbounds %File, %File* %3, i32 0, i32 0 + store i8* null, i8** %4 + ret void } -; Function Attrs: alwaysinline nounwind -define internal void @ctor.528(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #3 { - %this.addr = alloca %"Vector[Char]"* - store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr - %other.addr = alloca %"Vector[Char]"* - store %"Vector[Char]"* %other, %"Vector[Char]"** %other.addr +; Function Attrs: inlinehint nounwind +define internal void @ctor.694(%File* %this, i8* %handle) #4 { + %this.addr = alloca %File* + store %File* %this, %File** %this.addr + %handle.addr = alloca i8* + store i8* %handle, i8** %handle.addr br label %code code: ; preds = %0 - %1 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %2 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %1, i32 0, i32 0 - %3 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr - %4 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %3, i32 0, i32 0 - call void @ctor.181(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) - %5 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %6 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %5, i32 0, i32 1 - %7 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr - %8 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %7, i32 0, i32 1 - call void @ctor.181(%"RawPtr[Char]"* %6, %"RawPtr[Char]"* %8) - %9 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %10 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %9, i32 0, i32 2 - %11 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr - %12 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %11, i32 0, i32 2 - call void @ctor.181(%"RawPtr[Char]"* %10, %"RawPtr[Char]"* %12) + %1 = load %File*, %File** %this.addr + %2 = getelementptr inbounds %File, %File* %1, i32 0, i32 0 + store i8* null, i8** %2 + %3 = load i8*, i8** %handle.addr + %4 = load %File*, %File** %this.addr + %5 = getelementptr inbounds %File, %File* %4, i32 0, i32 0 + store i8* %3, i8** %5 ret void } -; Function Attrs: alwaysinline nounwind -define internal void @dtor.529(%"Vector[Char]"* %this) #3 { - %this.addr = alloca %"Vector[Char]"* - store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr +; Function Attrs: inlinehint nounwind +define internal void @ctor.695(%File* %this, %File* %other) #4 { + %this.addr = alloca %File* + store %File* %this, %File** %this.addr + %other.addr = alloca %File* + store %File* %other, %File** %other.addr br label %code code: ; preds = %0 + %1 = load %File*, %File** %this.addr + %2 = getelementptr inbounds %File, %File* %1, i32 0, i32 0 + store i8* null, i8** %2 + %3 = load %File*, %File** %other.addr + %4 = getelementptr inbounds %File, %File* %3, i32 0, i32 0 + %5 = load i8*, i8** %4 + %6 = load %File*, %File** %this.addr + %7 = getelementptr inbounds %File, %File* %6, i32 0, i32 0 + store i8* %5, i8** %7 + %8 = load %File*, %File** %other.addr + %9 = getelementptr inbounds %File, %File* %8, i32 0, i32 0 + store i8* null, i8** %9 ret void } -; Function Attrs: alwaysinline nounwind -define internal void @"=.530"(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #3 { - %this.addr = alloca %"Vector[Char]"* - store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr - %other.addr = alloca %"Vector[Char]"* - store %"Vector[Char]"* %other, %"Vector[Char]"** %other.addr +; Function Attrs: inlinehint nounwind +define internal void @dtor.696(%File* %this) #4 { + %this.addr = alloca %File* + store %File* %this, %File** %this.addr br label %code code: ; preds = %0 - %1 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %2 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %1, i32 0, i32 0 - %3 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr - %4 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %3, i32 0, i32 0 - call void @"=.178"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) - %5 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %6 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %5, i32 0, i32 1 - %7 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr - %8 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %7, i32 0, i32 1 - call void @"=.178"(%"RawPtr[Char]"* %6, %"RawPtr[Char]"* %8) - %9 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %10 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %9, i32 0, i32 2 - %11 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr - %12 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %11, i32 0, i32 2 - call void @"=.178"(%"RawPtr[Char]"* %10, %"RawPtr[Char]"* %12) + %1 = load %File*, %File** %this.addr + call void @close(%File* %1) ret void } -; Function Attrs: alwaysinline nounwind -define internal i1 @"==.531"(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #3 { - %this.addr = alloca %"Vector[Char]"* - store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr - %other.addr = alloca %"Vector[Char]"* - store %"Vector[Char]"* %other, %"Vector[Char]"** %other.addr +; Function Attrs: inlinehint nounwind +define internal void @close(%File* %this) #4 { + %this.addr = alloca %File* + store %File* %this, %File** %this.addr br label %code code: ; preds = %0 - %1 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %2 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %1, i32 0, i32 0 - %3 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr - %4 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %3, i32 0, i32 0 - %5 = call i1 @"==.225"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) - br i1 %5, label %cond.true1, label %cond.false2 - -cond.true: ; preds = %cond.end3 - %6 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %7 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %6, i32 0, i32 2 - %8 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr - %9 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %8, i32 0, i32 2 - %10 = call i1 @"==.225"(%"RawPtr[Char]"* %7, %"RawPtr[Char]"* %9) - br label %cond.end - -cond.false: ; preds = %cond.end3 - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond.res4 = phi i1 [ %10, %cond.true ], [ false, %cond.false ] - ret i1 %cond.res4 + br label %if_block -cond.true1: ; preds = %code - %11 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr - %12 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %11, i32 0, i32 1 - %13 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr - %14 = getelementptr inbounds %"Vector[Char]", %"Vector[Char]"* %13, i32 0, i32 1 - %15 = call i1 @"==.225"(%"RawPtr[Char]"* %12, %"RawPtr[Char]"* %14) - br label %cond.end3 +if_block: ; preds = %code + %1 = load %File*, %File** %this.addr + %2 = call i1 @isOpen(%File* %1) + br i1 %2, label %if_then, label %if_end -cond.false2: ; preds = %code - br label %cond.end3 +if_then: ; preds = %if_block + %3 = load %File*, %File** %this.addr + %4 = getelementptr inbounds %File, %File* %3, i32 0, i32 0 + %5 = load i8*, i8** %4 + call void @fclose(i8* %5) + br label %if_end -cond.end3: ; preds = %cond.false2, %cond.true1 - %cond.res = phi i1 [ %15, %cond.true1 ], [ false, %cond.false2 ] - br i1 %cond.res, label %cond.true, label %cond.false +if_end: ; preds = %if_then, %if_block + %6 = load %File*, %File** %this.addr + %7 = getelementptr inbounds %File, %File* %6, i32 0, i32 0 + store i8* null, i8** %7 + ret void } -; Function Attrs: alwaysinline nounwind -define internal void @ctor.532(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #3 { - %this.addr = alloca %"Vector[Token]"* - store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr - %other.addr = alloca %"Vector[Token]"* - store %"Vector[Token]"* %other, %"Vector[Token]"** %other.addr +; Function Attrs: inlinehint nounwind +define internal i1 @isOpen(%File* %this) #4 { + %this.addr = alloca %File* + store %File* %this, %File** %this.addr br label %code code: ; preds = %0 - %1 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr - %2 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %1, i32 0, i32 0 - %3 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr - %4 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %3, i32 0, i32 0 - call void @ctor.199(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %4) - %5 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr - %6 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %5, i32 0, i32 1 - %7 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr - %8 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %7, i32 0, i32 1 - call void @ctor.199(%"RawPtr[Token]"* %6, %"RawPtr[Token]"* %8) - %9 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr - %10 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %9, i32 0, i32 2 - %11 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr - %12 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %11, i32 0, i32 2 - call void @ctor.199(%"RawPtr[Token]"* %10, %"RawPtr[Token]"* %12) - ret void + %1 = load %File*, %File** %this.addr + %2 = getelementptr inbounds %File, %File* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = call i1 @implOpRefNE(i8* %3, i8* null) + ret i1 %4 } -; Function Attrs: alwaysinline nounwind -define internal void @dtor.533(%"Vector[Token]"* %this) #3 { - %this.addr = alloca %"Vector[Token]"* - store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr +declare void @fclose(i8*) + +; Function Attrs: inlinehint nounwind +define internal void @"=.697"(%File* %this, %File* %other) #4 { + %this.addr = alloca %File* + store %File* %this, %File** %this.addr + %other.addr = alloca %File* + store %File* %other, %File** %other.addr br label %code code: ; preds = %0 + %1 = load %File*, %File** %other.addr + %2 = getelementptr inbounds %File, %File* %1, i32 0, i32 0 + %3 = load i8*, i8** %2 + %4 = load %File*, %File** %this.addr + %5 = getelementptr inbounds %File, %File* %4, i32 0, i32 0 + store i8* %3, i8** %5 + %6 = load %File*, %File** %other.addr + %7 = getelementptr inbounds %File, %File* %6, i32 0, i32 0 + store i8* null, i8** %7 ret void } -; Function Attrs: alwaysinline nounwind -define internal void @"=.534"(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #3 { - %this.addr = alloca %"Vector[Token]"* - store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr - %other.addr = alloca %"Vector[Token]"* - store %"Vector[Token]"* %other, %"Vector[Token]"** %other.addr +; Function Attrs: inlinehint nounwind +define internal void @openFile(%File* sret %_result, %StringRef %filename, %StringRef %mode) #4 { + %_result.addr = alloca %File* + store %File* %_result, %File** %_result.addr + %filename.addr = alloca %StringRef + store %StringRef %filename, %StringRef* %filename.addr + %mode.addr = alloca %StringRef + store %StringRef %mode, %StringRef* %mode.addr br label %code code: ; preds = %0 - %1 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr - %2 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %1, i32 0, i32 0 - %3 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr - %4 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %3, i32 0, i32 0 - call void @"=.194"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %4) - %5 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr - %6 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %5, i32 0, i32 1 - %7 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr - %8 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %7, i32 0, i32 1 - call void @"=.194"(%"RawPtr[Token]"* %6, %"RawPtr[Token]"* %8) - %9 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr - %10 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %9, i32 0, i32 2 - %11 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr - %12 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %11, i32 0, i32 2 - call void @"=.194"(%"RawPtr[Token]"* %10, %"RawPtr[Token]"* %12) + %1 = load %File*, %File** %_result.addr + %2 = call i8* @cStr(%StringRef* %filename.addr) + %3 = call i8* @cStr(%StringRef* %mode.addr) + %4 = call i8* @fopen(i8* %2, i8* %3) + call void @ctor.694(%File* %1, i8* %4) ret void } -; Function Attrs: alwaysinline nounwind -define internal i1 @"==.535"(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #3 { - %this.addr = alloca %"Vector[Token]"* - store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr - %other.addr = alloca %"Vector[Token]"* - store %"Vector[Token]"* %other, %"Vector[Token]"** %other.addr +; Function Attrs: inlinehint nounwind +define internal i32 @flush.698(%File* %this) #4 { + %this.addr = alloca %File* + store %File* %this, %File** %this.addr br label %code code: ; preds = %0 - %1 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr - %2 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %1, i32 0, i32 0 - %3 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr - %4 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %3, i32 0, i32 0 - %5 = call i1 @"==.200"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %4) - br i1 %5, label %cond.true1, label %cond.false2 - -cond.true: ; preds = %cond.end3 - %6 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr - %7 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %6, i32 0, i32 2 - %8 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr - %9 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %8, i32 0, i32 2 - %10 = call i1 @"==.200"(%"RawPtr[Token]"* %7, %"RawPtr[Token]"* %9) - br label %cond.end - -cond.false: ; preds = %cond.end3 - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond.res4 = phi i1 [ %10, %cond.true ], [ false, %cond.false ] - ret i1 %cond.res4 + %1 = load %File*, %File** %this.addr + %2 = call i1 @isOpen(%File* %1) + br i1 %2, label %cond_alt1, label %cond_alt2 -cond.true1: ; preds = %code - %11 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr - %12 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %11, i32 0, i32 1 - %13 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr - %14 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %13, i32 0, i32 1 - %15 = call i1 @"==.200"(%"RawPtr[Token]"* %12, %"RawPtr[Token]"* %14) - br label %cond.end3 +cond_alt1: ; preds = %code + %3 = load %File*, %File** %this.addr + %4 = getelementptr inbounds %File, %File* %3, i32 0, i32 0 + %5 = load i8*, i8** %4 + %6 = call i32 bitcast (i32 (%struct._IO_FILE*)* @fflush to i32 (i8*)*)(i8* %5) + br label %cond_end -cond.false2: ; preds = %code - br label %cond.end3 +cond_alt2: ; preds = %code + br label %cond_end -cond.end3: ; preds = %cond.false2, %cond.true1 - %cond.res = phi i1 [ %15, %cond.true1 ], [ false, %cond.false2 ] - br i1 %cond.res, label %cond.true, label %cond.false +cond_end: ; preds = %cond_alt2, %cond_alt1 + %cond = phi i32 [ %6, %cond_alt1 ], [ -1, %cond_alt2 ] + ret i32 %cond } -; Function Attrs: alwaysinline nounwind -define internal void @ctor.536(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #3 { - %this.addr = alloca %"Vector[UInt]"* - store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr - %other.addr = alloca %"Vector[UInt]"* - store %"Vector[UInt]"* %other, %"Vector[UInt]"** %other.addr +; Function Attrs: inlinehint nounwind +define internal void @readLine(%String* sret %_result, %File* %this) #4 { + %_result.addr = alloca %String* + store %String* %_result, %String** %_result.addr + %this.addr = alloca %File* + store %File* %this, %File** %this.addr + %res = alloca %String + %tmp.this = alloca i64 + %cstr = alloca i8* + %tmp.this1 = alloca i64 br label %code code: ; preds = %0 - %1 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr - %2 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %1, i32 0, i32 0 - %3 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr - %4 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %3, i32 0, i32 0 - call void @ctor.212(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %4) - %5 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr - %6 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %5, i32 0, i32 1 - %7 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr - %8 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %7, i32 0, i32 1 - call void @ctor.212(%"RawPtr[UInt]"* %6, %"RawPtr[UInt]"* %8) - %9 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr - %10 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %9, i32 0, i32 2 - %11 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr - %12 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %11, i32 0, i32 2 - call void @ctor.212(%"RawPtr[UInt]"* %10, %"RawPtr[UInt]"* %12) - ret void -} + store i64 256, i64* %tmp.this + %1 = load i64, i64* %tmp.this + call void @ctor.191(%String* %res, i64 %1) + store i64 0, i64* %tmp.this1 + %2 = load i64, i64* %tmp.this1 + %3 = call i8* @"().344"(%String* %res, i64 %2) + %4 = load %File*, %File** %this.addr + %5 = getelementptr inbounds %File, %File* %4, i32 0, i32 0 + %6 = load i8*, i8** %5 + %7 = call i8* @fgets(i8* %3, i32 256, i8* %6) + store i8* %7, i8** %cstr + br label %if_block -; Function Attrs: alwaysinline nounwind -define internal void @dtor.537(%"Vector[UInt]"* %this) #3 { - %this.addr = alloca %"Vector[UInt]"* - store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr - br label %code +if_block: ; preds = %code + %8 = load i8*, i8** %cstr + %9 = call i1 @implOpRefEQ(i8* %8, i8* null) + br i1 %9, label %if_then, label %if_else + +if_then: ; preds = %if_block + call void @clear(%String* %res) + br label %if_end + +if_else: ; preds = %if_block + %10 = load i8*, i8** %cstr + %11 = call i64 @cStringLen(i8* %10) + call void @resize(%String* %res, i64 %11) + br label %if_end -code: ; preds = %0 +if_end: ; preds = %if_else, %if_then + %12 = load %String*, %String** %_result.addr + call void @ctor.189(%String* %12, %String* %res) + call void @dtor.261(%String* %res) + ret void + +dumy_block: ; No predecessors! + call void @dtor.261(%String* %res) ret void } -; Function Attrs: alwaysinline nounwind -define internal void @"=.538"(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #3 { - %this.addr = alloca %"Vector[UInt]"* - store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr - %other.addr = alloca %"Vector[UInt]"* - store %"Vector[UInt]"* %other, %"Vector[UInt]"** %other.addr +declare i8* @fgets(i8*, i32, i8*) + +; Function Attrs: inlinehint nounwind +define internal void @all.699(%FileRange* sret %_result, %File* %this) #4 { + %_result.addr = alloca %FileRange* + store %FileRange* %_result, %FileRange** %_result.addr + %this.addr = alloca %File* + store %File* %this, %File** %this.addr br label %code code: ; preds = %0 - %1 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr - %2 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %1, i32 0, i32 0 - %3 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr - %4 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %3, i32 0, i32 0 - call void @"=.207"(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %4) - %5 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr - %6 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %5, i32 0, i32 1 - %7 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr - %8 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %7, i32 0, i32 1 - call void @"=.207"(%"RawPtr[UInt]"* %6, %"RawPtr[UInt]"* %8) - %9 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr - %10 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %9, i32 0, i32 2 - %11 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr - %12 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %11, i32 0, i32 2 - call void @"=.207"(%"RawPtr[UInt]"* %10, %"RawPtr[UInt]"* %12) + %1 = load %FileRange*, %FileRange** %_result.addr + %2 = load %File*, %File** %this.addr + call void @ctor.700(%FileRange* %1, %File* %2) ret void } -; Function Attrs: alwaysinline nounwind -define internal i1 @"==.539"(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #3 { - %this.addr = alloca %"Vector[UInt]"* - store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr - %other.addr = alloca %"Vector[UInt]"* - store %"Vector[UInt]"* %other, %"Vector[UInt]"** %other.addr +; Function Attrs: inlinehint nounwind +define internal void @ctor.700(%FileRange* %this, %File* %file) #4 { + %this.addr = alloca %FileRange* + store %FileRange* %this, %FileRange** %this.addr + %file.addr = alloca %File* + store %File* %file, %File** %file.addr br label %code code: ; preds = %0 - %1 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr - %2 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %1, i32 0, i32 0 - %3 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr - %4 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %3, i32 0, i32 0 - %5 = call i1 @"==.228"(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %4) - br i1 %5, label %cond.true1, label %cond.false2 - -cond.true: ; preds = %cond.end3 - %6 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr - %7 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %6, i32 0, i32 2 - %8 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr - %9 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %8, i32 0, i32 2 - %10 = call i1 @"==.228"(%"RawPtr[UInt]"* %7, %"RawPtr[UInt]"* %9) - br label %cond.end - -cond.false: ; preds = %cond.end3 - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond.res4 = phi i1 [ %10, %cond.true ], [ false, %cond.false ] - ret i1 %cond.res4 + %1 = load %FileRange*, %FileRange** %this.addr + %2 = getelementptr inbounds %FileRange, %FileRange* %1, i32 0, i32 0 + store %File* null, %File** %2 + %3 = load %FileRange*, %FileRange** %this.addr + %4 = getelementptr inbounds %FileRange, %FileRange* %3, i32 0, i32 1 + store i1 false, i1* %4 + %5 = load %File*, %File** %file.addr + %6 = load %FileRange*, %FileRange** %this.addr + %7 = getelementptr inbounds %FileRange, %FileRange* %6, i32 0, i32 0 + store %File* %5, %File** %7 + %8 = load %FileRange*, %FileRange** %this.addr + %9 = getelementptr inbounds %FileRange, %FileRange* %8, i32 0, i32 1 + store i1 true, i1* %9 + %10 = load %FileRange*, %FileRange** %this.addr + %11 = getelementptr inbounds %FileRange, %FileRange* %10, i32 0, i32 2 + store i8 0, i8* %11 + br label %if_block -cond.true1: ; preds = %code - %11 = load %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr - %12 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %11, i32 0, i32 1 - %13 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr - %14 = getelementptr inbounds %"Vector[UInt]", %"Vector[UInt]"* %13, i32 0, i32 1 - %15 = call i1 @"==.228"(%"RawPtr[UInt]"* %12, %"RawPtr[UInt]"* %14) - br label %cond.end3 +if_block: ; preds = %code + %12 = load %FileRange*, %FileRange** %this.addr + %13 = getelementptr inbounds %FileRange, %FileRange* %12, i32 0, i32 0 + %14 = load %File*, %File** %13 + %15 = call i1 @isEof(%File* %14) + %16 = xor i1 true, %15 + br i1 %16, label %if_then, label %if_end -cond.false2: ; preds = %code - br label %cond.end3 +if_then: ; preds = %if_block + %17 = load %FileRange*, %FileRange** %this.addr + %18 = getelementptr inbounds %FileRange, %FileRange* %17, i32 0, i32 0 + %19 = load %File*, %File** %18 + %20 = call i8 @readChar(%File* %19) + %21 = load %FileRange*, %FileRange** %this.addr + %22 = getelementptr inbounds %FileRange, %FileRange* %21, i32 0, i32 2 + store i8 %20, i8* %22 + %23 = load %FileRange*, %FileRange** %this.addr + %24 = getelementptr inbounds %FileRange, %FileRange* %23, i32 0, i32 1 + store i1 false, i1* %24 + br label %if_end -cond.end3: ; preds = %cond.false2, %cond.true1 - %cond.res = phi i1 [ %15, %cond.true1 ], [ false, %cond.false2 ] - br i1 %cond.res, label %cond.true, label %cond.false +if_end: ; preds = %if_then, %if_block + ret void } -; Function Attrs: inlinehint nounwind -define internal i1 @isAlnum(i8 %c) #4 { - %c.addr = alloca i8 - store i8 %c, i8* %c.addr - %tmp.this = alloca i32 +; Function Attrs: alwaysinline nounwind +define internal void @ctor.701(%FileRange* %this) #3 { + %this.addr = alloca %FileRange* + store %FileRange* %this, %FileRange** %this.addr br label %code code: ; preds = %0 - %1 = load i8, i8* %c.addr - call void @_ass_32_8z(i32* %tmp.this, i8 %1) - %2 = load i32, i32* %tmp.this - %3 = call i32 @isalnum(i32 %2) - %4 = icmp ne i32 0, %3 - ret i1 %4 + %1 = load %FileRange*, %FileRange** %this.addr + %2 = getelementptr inbounds %FileRange, %FileRange* %1, i32 0, i32 0 + store %File* null, %File** %2 + %3 = load %FileRange*, %FileRange** %this.addr + %4 = getelementptr inbounds %FileRange, %FileRange* %3, i32 0, i32 1 + store i1 false, i1* %4 + %5 = load %FileRange*, %FileRange** %this.addr + %6 = getelementptr inbounds %FileRange, %FileRange* %5, i32 0, i32 2 + store i8 0, i8* %6 + ret void } -declare i32 @isalnum(i32) - -; Function Attrs: inlinehint nounwind -define internal i1 @isBlank(i8 %c) #4 { - %c.addr = alloca i8 - store i8 %c, i8* %c.addr - %tmp.this = alloca i32 +; Function Attrs: alwaysinline nounwind +define internal void @ctor.702(%FileRange* %this, %FileRange* %other) #3 { + %this.addr = alloca %FileRange* + store %FileRange* %this, %FileRange** %this.addr + %other.addr = alloca %FileRange* + store %FileRange* %other, %FileRange** %other.addr br label %code code: ; preds = %0 - %1 = load i8, i8* %c.addr - call void @_ass_32_8z(i32* %tmp.this, i8 %1) - %2 = load i32, i32* %tmp.this - %3 = call i32 @isblank(i32 %2) - %4 = icmp ne i32 0, %3 - ret i1 %4 + %1 = load %FileRange*, %FileRange** %other.addr + %2 = getelementptr inbounds %FileRange, %FileRange* %1, i32 0, i32 0 + %3 = load %File*, %File** %2 + %4 = load %FileRange*, %FileRange** %this.addr + %5 = getelementptr inbounds %FileRange, %FileRange* %4, i32 0, i32 0 + store %File* %3, %File** %5 + %6 = load %FileRange*, %FileRange** %other.addr + %7 = getelementptr inbounds %FileRange, %FileRange* %6, i32 0, i32 1 + %8 = load i1, i1* %7 + %9 = load %FileRange*, %FileRange** %this.addr + %10 = getelementptr inbounds %FileRange, %FileRange* %9, i32 0, i32 1 + store i1 %8, i1* %10 + %11 = load %FileRange*, %FileRange** %other.addr + %12 = getelementptr inbounds %FileRange, %FileRange* %11, i32 0, i32 2 + %13 = load i8, i8* %12 + %14 = load %FileRange*, %FileRange** %this.addr + %15 = getelementptr inbounds %FileRange, %FileRange* %14, i32 0, i32 2 + store i8 %13, i8* %15 + ret void } -declare i32 @isblank(i32) - -; Function Attrs: inlinehint nounwind -define internal i1 @isCntrl(i8 %c) #4 { - %c.addr = alloca i8 - store i8 %c, i8* %c.addr - %tmp.this = alloca i32 +; Function Attrs: alwaysinline nounwind +define internal void @dtor.703(%FileRange* %this) #3 { + %this.addr = alloca %FileRange* + store %FileRange* %this, %FileRange** %this.addr br label %code code: ; preds = %0 - %1 = load i8, i8* %c.addr - call void @_ass_32_8z(i32* %tmp.this, i8 %1) - %2 = load i32, i32* %tmp.this - %3 = call i32 @iscntrl(i32 %2) - %4 = icmp ne i32 0, %3 - ret i1 %4 + ret void } -declare i32 @iscntrl(i32) - -; Function Attrs: inlinehint nounwind -define internal i1 @isGraph(i8 %c) #4 { - %c.addr = alloca i8 - store i8 %c, i8* %c.addr - %tmp.this = alloca i32 +; Function Attrs: alwaysinline nounwind +define internal void @"=.704"(%FileRange* %this, %FileRange* %other) #3 { + %this.addr = alloca %FileRange* + store %FileRange* %this, %FileRange** %this.addr + %other.addr = alloca %FileRange* + store %FileRange* %other, %FileRange** %other.addr br label %code code: ; preds = %0 - %1 = load i8, i8* %c.addr - call void @_ass_32_8z(i32* %tmp.this, i8 %1) - %2 = load i32, i32* %tmp.this - %3 = call i32 @isgraph(i32 %2) - %4 = icmp ne i32 0, %3 - ret i1 %4 + %1 = load %FileRange*, %FileRange** %other.addr + %2 = getelementptr inbounds %FileRange, %FileRange* %1, i32 0, i32 0 + %3 = load %File*, %File** %2 + %4 = load %FileRange*, %FileRange** %this.addr + %5 = getelementptr inbounds %FileRange, %FileRange* %4, i32 0, i32 0 + store %File* %3, %File** %5 + %6 = load %FileRange*, %FileRange** %other.addr + %7 = getelementptr inbounds %FileRange, %FileRange* %6, i32 0, i32 1 + %8 = load i1, i1* %7 + %9 = load %FileRange*, %FileRange** %this.addr + %10 = getelementptr inbounds %FileRange, %FileRange* %9, i32 0, i32 1 + store i1 %8, i1* %10 + %11 = load %FileRange*, %FileRange** %other.addr + %12 = getelementptr inbounds %FileRange, %FileRange* %11, i32 0, i32 2 + %13 = load i8, i8* %12 + %14 = load %FileRange*, %FileRange** %this.addr + %15 = getelementptr inbounds %FileRange, %FileRange* %14, i32 0, i32 2 + store i8 %13, i8* %15 + ret void } -declare i32 @isgraph(i32) - -; Function Attrs: inlinehint nounwind -define internal i1 @isLower(i8 %c) #4 { - %c.addr = alloca i8 - store i8 %c, i8* %c.addr - %tmp.this = alloca i32 +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.705"(%FileRange* %this, %FileRange* %other) #3 { + %this.addr = alloca %FileRange* + store %FileRange* %this, %FileRange** %this.addr + %other.addr = alloca %FileRange* + store %FileRange* %other, %FileRange** %other.addr br label %code code: ; preds = %0 - %1 = load i8, i8* %c.addr - call void @_ass_32_8z(i32* %tmp.this, i8 %1) - %2 = load i32, i32* %tmp.this - %3 = call i32 @islower(i32 %2) - %4 = icmp ne i32 0, %3 - ret i1 %4 -} + %1 = load %FileRange*, %FileRange** %this.addr + %2 = getelementptr inbounds %FileRange, %FileRange* %1, i32 0, i32 0 + %3 = load %File*, %File** %2 + %4 = bitcast %File* %3 to i8* + %5 = load %FileRange*, %FileRange** %other.addr + %6 = getelementptr inbounds %FileRange, %FileRange* %5, i32 0, i32 0 + %7 = load %File*, %File** %6 + %8 = bitcast %File* %7 to i8* + %9 = call i1 @implOpRefEQ(i8* %4, i8* %8) + br i1 %9, label %cond.true1, label %cond.false2 -declare i32 @islower(i32) +cond.true: ; preds = %cond.end3 + %10 = load %FileRange*, %FileRange** %this.addr + %11 = getelementptr inbounds %FileRange, %FileRange* %10, i32 0, i32 2 + %12 = load i8, i8* %11 + %13 = load %FileRange*, %FileRange** %other.addr + %14 = getelementptr inbounds %FileRange, %FileRange* %13, i32 0, i32 2 + %15 = load i8, i8* %14 + %16 = icmp eq i8 %12, %15 + br label %cond.end -; Function Attrs: inlinehint nounwind -define internal i1 @isPrint(i8 %c) #4 { - %c.addr = alloca i8 - store i8 %c, i8* %c.addr - %tmp.this = alloca i32 - br label %code +cond.false: ; preds = %cond.end3 + br label %cond.end -code: ; preds = %0 - %1 = load i8, i8* %c.addr - call void @_ass_32_8z(i32* %tmp.this, i8 %1) - %2 = load i32, i32* %tmp.this - %3 = call i32 @isprint(i32 %2) - %4 = icmp ne i32 0, %3 - ret i1 %4 -} +cond.end: ; preds = %cond.false, %cond.true + %cond.res4 = phi i1 [ %16, %cond.true ], [ false, %cond.false ] + ret i1 %cond.res4 -declare i32 @isprint(i32) +cond.true1: ; preds = %code + %17 = load %FileRange*, %FileRange** %this.addr + %18 = getelementptr inbounds %FileRange, %FileRange* %17, i32 0, i32 1 + %19 = load i1, i1* %18 + %20 = load %FileRange*, %FileRange** %other.addr + %21 = getelementptr inbounds %FileRange, %FileRange* %20, i32 0, i32 1 + %22 = load i1, i1* %21 + %23 = icmp eq i1 %19, %22 + br label %cond.end3 -; Function Attrs: inlinehint nounwind -define internal i1 @isPunct(i8 %c) #4 { - %c.addr = alloca i8 - store i8 %c, i8* %c.addr - %tmp.this = alloca i32 - br label %code +cond.false2: ; preds = %code + br label %cond.end3 -code: ; preds = %0 - %1 = load i8, i8* %c.addr - call void @_ass_32_8z(i32* %tmp.this, i8 %1) - %2 = load i32, i32* %tmp.this - %3 = call i32 @ispunct(i32 %2) - %4 = icmp ne i32 0, %3 - ret i1 %4 +cond.end3: ; preds = %cond.false2, %cond.true1 + %cond.res = phi i1 [ %23, %cond.true1 ], [ false, %cond.false2 ] + br i1 %cond.res, label %cond.true, label %cond.false } -declare i32 @ispunct(i32) - ; Function Attrs: inlinehint nounwind -define internal i1 @isSpace(i8 %c) #4 { - %c.addr = alloca i8 - store i8 %c, i8* %c.addr - %tmp.this = alloca i32 +define internal i1 @isEmpty.706(%FileRange* %s) #4 { + %s.addr = alloca %FileRange* + store %FileRange* %s, %FileRange** %s.addr br label %code code: ; preds = %0 - %1 = load i8, i8* %c.addr - call void @_ass_32_8z(i32* %tmp.this, i8 %1) - %2 = load i32, i32* %tmp.this - %3 = call i32 @isspace(i32 %2) - %4 = icmp ne i32 0, %3 - ret i1 %4 + %1 = load %FileRange*, %FileRange** %s.addr + %2 = getelementptr inbounds %FileRange, %FileRange* %1, i32 0, i32 1 + %3 = load i1, i1* %2 + ret i1 %3 } -declare i32 @isspace(i32) - ; Function Attrs: inlinehint nounwind -define internal i1 @isUpper(i8 %c) #4 { - %c.addr = alloca i8 - store i8 %c, i8* %c.addr - %tmp.this = alloca i32 +define internal i8 @front.707(%FileRange* %s) #4 { + %s.addr = alloca %FileRange* + store %FileRange* %s, %FileRange** %s.addr br label %code code: ; preds = %0 - %1 = load i8, i8* %c.addr - call void @_ass_32_8z(i32* %tmp.this, i8 %1) - %2 = load i32, i32* %tmp.this - %3 = call i32 @isupper(i32 %2) - %4 = icmp ne i32 0, %3 - ret i1 %4 + %1 = load %FileRange*, %FileRange** %s.addr + %2 = getelementptr inbounds %FileRange, %FileRange* %1, i32 0, i32 2 + %3 = load i8, i8* %2 + ret i8 %3 } -declare i32 @isupper(i32) - -declare void @exit(i32) - ; Function Attrs: inlinehint nounwind -define internal i32 @systemCall(%StringRef %cmd) #4 { - %cmd.addr = alloca %StringRef - store %StringRef %cmd, %StringRef* %cmd.addr +define internal void @popFront.708(%FileRange* %s) #4 { + %s.addr = alloca %FileRange* + store %FileRange* %s, %FileRange** %s.addr br label %code code: ; preds = %0 - %1 = call i8* @cStr(%StringRef* %cmd.addr) - %2 = call i32 bitcast (void (i8*)* @system to i32 (i8*)*)(i8* %1) - ret i32 %2 -} - -; Function Attrs: alwaysinline nounwind -define internal void @ctor.540(%File* %this) #3 { - %this.addr = alloca %File* - store %File* %this, %File** %this.addr - br label %code + %1 = load %FileRange*, %FileRange** %s.addr + %2 = getelementptr inbounds %FileRange, %FileRange* %1, i32 0, i32 0 + %3 = load %File*, %File** %2 + %4 = call i8 @readChar(%File* %3) + %5 = load %FileRange*, %FileRange** %s.addr + %6 = getelementptr inbounds %FileRange, %FileRange* %5, i32 0, i32 2 + store i8 %4, i8* %6 + br label %if_block -code: ; preds = %0 - %1 = load %File*, %File** %this.addr - %2 = getelementptr inbounds %File, %File* %1, i32 0, i32 0 - store i8* null, i8** %2 - ret void -} +if_block: ; preds = %code + %7 = load %FileRange*, %FileRange** %s.addr + %8 = getelementptr inbounds %FileRange, %FileRange* %7, i32 0, i32 0 + %9 = load %File*, %File** %8 + %10 = call i1 @isEof(%File* %9) + br i1 %10, label %if_then, label %if_end -; Function Attrs: alwaysinline nounwind -define internal void @ctor.541(%File* %this, %File* %other) #3 { - %this.addr = alloca %File* - store %File* %this, %File** %this.addr - %other.addr = alloca %File* - store %File* %other, %File** %other.addr - br label %code +if_then: ; preds = %if_block + %11 = load %FileRange*, %FileRange** %s.addr + %12 = getelementptr inbounds %FileRange, %FileRange* %11, i32 0, i32 1 + store i1 true, i1* %12 + br label %if_end -code: ; preds = %0 - %1 = load %File*, %File** %other.addr - %2 = getelementptr inbounds %File, %File* %1, i32 0, i32 0 - %3 = load i8*, i8** %2 - %4 = load %File*, %File** %this.addr - %5 = getelementptr inbounds %File, %File* %4, i32 0, i32 0 - store i8* %3, i8** %5 +if_end: ; preds = %if_then, %if_block ret void } +declare i32 @fread(i8*, i32, i32, i8*) + ; Function Attrs: alwaysinline nounwind -define internal void @dtor.542(%File* %this) #3 { - %this.addr = alloca %File* - store %File* %this, %File** %this.addr +define internal void @ctor.709(%FileCharSource* %this) #3 { + %this.addr = alloca %FileCharSource* + store %FileCharSource* %this, %FileCharSource** %this.addr br label %code code: ; preds = %0 + %1 = load %FileCharSource*, %FileCharSource** %this.addr + %2 = getelementptr inbounds %FileCharSource, %FileCharSource* %1, i32 0, i32 0 + call void @ctor.693(%File* %2) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @"=.543"(%File* %this, %File* %other) #3 { - %this.addr = alloca %File* - store %File* %this, %File** %this.addr - %other.addr = alloca %File* - store %File* %other, %File** %other.addr +define internal void @ctor.710(%FileCharSource* %this, %FileCharSource* %other) #3 { + %this.addr = alloca %FileCharSource* + store %FileCharSource* %this, %FileCharSource** %this.addr + %other.addr = alloca %FileCharSource* + store %FileCharSource* %other, %FileCharSource** %other.addr br label %code code: ; preds = %0 - %1 = load %File*, %File** %other.addr - %2 = getelementptr inbounds %File, %File* %1, i32 0, i32 0 - %3 = load i8*, i8** %2 - %4 = load %File*, %File** %this.addr - %5 = getelementptr inbounds %File, %File* %4, i32 0, i32 0 - store i8* %3, i8** %5 + %1 = load %FileCharSource*, %FileCharSource** %this.addr + %2 = getelementptr inbounds %FileCharSource, %FileCharSource* %1, i32 0, i32 0 + %3 = load %FileCharSource*, %FileCharSource** %other.addr + %4 = getelementptr inbounds %FileCharSource, %FileCharSource* %3, i32 0, i32 0 + call void @ctor.695(%File* %2, %File* %4) ret void } -; Function Attrs: inlinehint nounwind -define internal void @ctor.544(%File* %this, i8* %handle) #4 { - %this.addr = alloca %File* - store %File* %this, %File** %this.addr - %handle.addr = alloca i8* - store i8* %handle, i8** %handle.addr +; Function Attrs: alwaysinline nounwind +define internal void @dtor.711(%FileCharSource* %this) #3 { + %this.addr = alloca %FileCharSource* + store %FileCharSource* %this, %FileCharSource** %this.addr br label %code code: ; preds = %0 - %1 = load %File*, %File** %this.addr - %2 = getelementptr inbounds %File, %File* %1, i32 0, i32 0 - store i8* null, i8** %2 - %3 = load i8*, i8** %handle.addr - %4 = load %File*, %File** %this.addr - %5 = getelementptr inbounds %File, %File* %4, i32 0, i32 0 - store i8* %3, i8** %5 + %1 = load %FileCharSource*, %FileCharSource** %this.addr + %2 = getelementptr inbounds %FileCharSource, %FileCharSource* %1, i32 0, i32 0 + call void @dtor.696(%File* %2) ret void } -; Function Attrs: inlinehint nounwind -define internal void @openFile(%File* sret %_result, %StringRef %filename, %StringRef %mode) #4 { - %_result.addr = alloca %File* - store %File* %_result, %File** %_result.addr - %filename.addr = alloca %StringRef - store %StringRef %filename, %StringRef* %filename.addr - %mode.addr = alloca %StringRef - store %StringRef %mode, %StringRef* %mode.addr +; Function Attrs: alwaysinline nounwind +define internal void @"=.712"(%FileCharSource* %this, %FileCharSource* %other) #3 { + %this.addr = alloca %FileCharSource* + store %FileCharSource* %this, %FileCharSource** %this.addr + %other.addr = alloca %FileCharSource* + store %FileCharSource* %other, %FileCharSource** %other.addr br label %code code: ; preds = %0 - %1 = load %File*, %File** %_result.addr - %2 = call i8* @cStr(%StringRef* %filename.addr) - %3 = call i8* @cStr(%StringRef* %mode.addr) - %4 = call i8* @fopen(i8* %2, i8* %3) - call void @ctor.544(%File* %1, i8* %4) + %1 = load %FileCharSource*, %FileCharSource** %this.addr + %2 = getelementptr inbounds %FileCharSource, %FileCharSource* %1, i32 0, i32 0 + %3 = load %FileCharSource*, %FileCharSource** %other.addr + %4 = getelementptr inbounds %FileCharSource, %FileCharSource* %3, i32 0, i32 0 + call void @"=.697"(%File* %2, %File* %4) ret void } -; Function Attrs: inlinehint nounwind -define internal i32 @flush.545(%File* %this) #4 { - %this.addr = alloca %File* - store %File* %this, %File** %this.addr +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.713"(%FileCharSource* %this, %FileCharSource* %other) #3 { + %this.addr = alloca %FileCharSource* + store %FileCharSource* %this, %FileCharSource** %this.addr + %other.addr = alloca %FileCharSource* + store %FileCharSource* %other, %FileCharSource** %other.addr br label %code code: ; preds = %0 - %1 = load %File*, %File** %this.addr - %2 = call i1 @isOpen(%File* %1) - br i1 %2, label %cond_alt1, label %cond_alt2 - -cond_alt1: ; preds = %code - %3 = load %File*, %File** %this.addr - %4 = getelementptr inbounds %File, %File* %3, i32 0, i32 0 - %5 = load i8*, i8** %4 - %6 = call i32 bitcast (i32 (%struct._IO_FILE*)* @fflush to i32 (i8*)*)(i8* %5) - br label %cond_end - -cond_alt2: ; preds = %code - br label %cond_end - -cond_end: ; preds = %cond_alt2, %cond_alt1 - %cond = phi i32 [ %6, %cond_alt1 ], [ -1, %cond_alt2 ] - ret i32 %cond + %1 = load %FileCharSource*, %FileCharSource** %this.addr + %2 = getelementptr inbounds %FileCharSource, %FileCharSource* %1, i32 0, i32 0 + %3 = load %FileCharSource*, %FileCharSource** %other.addr + %4 = getelementptr inbounds %FileCharSource, %FileCharSource* %3, i32 0, i32 0 + %5 = call i1 @"==.692"(%File* %2, %File* %4) + ret i1 %5 } ; Function Attrs: inlinehint nounwind -define internal void @readLine(%String* sret %_result, %File* %this) #4 { - %_result.addr = alloca %String* - store %String* %_result, %String** %_result.addr - %this.addr = alloca %File* - store %File* %this, %File** %this.addr - %res = alloca %String - %tmp.this = alloca i64 - %cstr = alloca i8* - %tmp.this1 = alloca i64 +define internal i1 @isValid(%FileCharSource* %this) #4 { + %this.addr = alloca %FileCharSource* + store %FileCharSource* %this, %FileCharSource** %this.addr br label %code code: ; preds = %0 - store i64 256, i64* %tmp.this - %1 = load i64, i64* %tmp.this - call void @ctor.186(%String* %res, i64 %1) - store i64 0, i64* %tmp.this1 - %2 = load i64, i64* %tmp.this1 - %3 = call i8* @"().275"(%String* %res, i64 %2) - %4 = load %File*, %File** %this.addr - %5 = getelementptr inbounds %File, %File* %4, i32 0, i32 0 - %6 = load i8*, i8** %5 - %7 = call i8* @fgets(i8* %3, i32 256, i8* %6) - store i8* %7, i8** %cstr - br label %if_block - -if_block: ; preds = %code - %8 = load i8*, i8** %cstr - %9 = call i1 @implOpRefEQ(i8* %8, i8* null) - br i1 %9, label %if_then, label %if_else - -if_then: ; preds = %if_block - call void @clear(%String* %res) - br label %if_end - -if_else: ; preds = %if_block - %10 = load i8*, i8** %cstr - %11 = call i64 @cStringLen(i8* %10) - call void @resize(%String* %res, i64 %11) - br label %if_end - -if_end: ; preds = %if_else, %if_then - %12 = load %String*, %String** %_result.addr - call void @ctor.184(%String* %12, %String* %res) - call void @dtor.218(%String* %res) - ret void - -dumy_block: ; No predecessors! - call void @dtor.218(%String* %res) - ret void + %1 = load %FileCharSource*, %FileCharSource** %this.addr + %2 = getelementptr inbounds %FileCharSource, %FileCharSource* %1, i32 0, i32 0 + %3 = call i1 @isOpen(%File* %2) + ret i1 %3 } -declare i8* @fgets(i8*, i32, i8*) - -declare i32 @fread(i8*, i32, i32, i8*) - attributes #0 = { alwaysinline } attributes #1 = { argmemonly nounwind } attributes #2 = { nounwind } diff --git a/src/SparrowFrontend/Grammar/parserIf.spr b/src/SparrowFrontend/Grammar/parserIf.spr index afcd6269..b45557e0 100644 --- a/src/SparrowFrontend/Grammar/parserIf.spr +++ b/src/SparrowFrontend/Grammar/parserIf.spr @@ -1,79 +1,36 @@ /// Interface between the parser (& scanner) and the Sparrow compiler module sparrowc.spr.grammar.parserIf -import scanner, parser, layoutDecoder, ext +import scanner, parser, layoutDecoder, bufferedCharSource, ext, fileCharSource, stringCharSource import os, std.newDelete -datatype ExternalErrorReporter - ; - -fun reportError(this: @ExternalErrorReporter, loc: Location, msg: @String) - reportErrorExternal(loc, msg.asStringRef()) - -datatype _CharSource - using RetType = Char - - fileRange: @FileRange - stringRange: StringRef - -fun ctor(this: @_CharSource, fileRange: @FileRange, code: StringRef) - this.fileRange := fileRange - this.stringRange ctor code - -fun isEmpty(this: @_CharSource): Bool = ife(fileRange !== null, fileRange.isEmpty, stringRange.isEmpty) -fun front(this: @_CharSource): Char - if ( fileRange !== null ) return fileRange.front - else return stringRange.front -fun popFront(this: @_CharSource) - if fileRange !== null - fileRange.popFront - else stringRange.popFront - - datatype ParserContext - using _ScannerType = SparrowScanner(_CharSource, ExternalErrorReporter) - using _LayoutDecoderType = SparrowLayoutDecoder(_ScannerType, ExternalErrorReporter) - using _ParserType = SparrowParser(_LayoutDecoderType, ExternalErrorReporter) + using _LayoutDecoderType = SparrowLayoutDecoder(SparrowScanner) + using _ParserType = SparrowParser(_LayoutDecoderType) - _file: File - _fileRange: FileRange - _source: _CharSource - _scanner: _ScannerType + _scanner: SparrowScanner _layoutDecoder: _LayoutDecoderType _parser: _ParserType -fun ctor(this: @ParserContext, filename, code: StringRef, loc: Location, scannerOnly: Bool = false) - var reporter = ExternalErrorReporter() - - if code.isEmpty - // Open the file, and create a scanner on top of the file - _file ctor filename - _fileRange ctor _file.all - _source.ctor(_fileRange, "") - - if !_file.isOpen - reporter.reportError(loc, toString("Cannot open file: ", filename)) - else - // Use the code as a the input - _file ctor - _fileRange ctor - _source.ctor(null, code) - - _scanner.ctor(_source, reporter, loc) - if !scannerOnly - _layoutDecoder.ctor(_scanner, reporter) - _parser.ctor(_layoutDecoder, reporter) - -// For testing only -fun createScanner(filename, code: StringRef, loc: @Location): @ParserContext - return new(ParserContext, filename, code, loc, true) +fun ctor(this: @ParserContext, chars: CharSource, loc: Location, astBuilder: @AstBuilder, reporter: ErrorReporter) + _scanner.ctor(chars, reporter, loc) + _layoutDecoder.ctor(_scanner, reporter) + _parser.ctor(_layoutDecoder, astBuilder, reporter) // Used by the compiler [noInline] [native("spr_parserIf_createParser")] - fun createParser(filename, code: StringRef, loc: @Location): @ParserContext - var res: @ParserContext = new(ParserContext, filename, code, loc) + fun createParser(chars: CharSource, loc: @Location, astBuilder: @AstBuilder, reporter: ErrorReporter): @ParserContext + var res: @ParserContext = new(ParserContext, chars, loc, astBuilder, reporter) return res + [native("spr_parserIf_createParserFile")] + fun createParserFile(filename: StringRef, loc: @Location, astBuilder: @AstBuilder, reporter: ErrorReporter): @ParserContext + var fileCharSource: @FileCharSource = new(FileCharSource, filename) + return createParser(mkCharSource(fileCharSource), loc, astBuilder, reporter) + [native("spr_parserIf_createParserStringRef")] + fun createParserStringRef(code: StringRef, loc: @Location, astBuilder: @AstBuilder, reporter: ErrorReporter): @ParserContext + var stringCharSource: @StringCharSource = new(StringCharSource, code) + return createParser(mkCharSource(stringCharSource), loc, astBuilder, reporter) [native("spr_parserIf_destroyParser")] fun destroyParser(ctx: @ParserContext) diff --git a/src/SparrowFrontend/Grammar/scanner.spr b/src/SparrowFrontend/Grammar/scanner.spr index c4f547cd..15aa000b 100644 --- a/src/SparrowFrontend/Grammar/scanner.spr +++ b/src/SparrowFrontend/Grammar/scanner.spr @@ -1,6 +1,6 @@ module sparrowc.spr.grammar.scanner -import parserDefs, rangeWithLookahead, token +import parserDefs, rangeWithLookahead, token, bufferedCharSource, ext import charType, std.ranges, std.vector import os = os @@ -40,30 +40,34 @@ package _ImplLSCR /// This behaves just like a range transformation. Given the source range, this /// will represent a range of tokens extracted from the source characters. /// -datatype SparrowScanner(sourceType, errorReporterType: Type) \ - if CharRange(#$sourceType) && ErrorReporter(#$errorReporterType) +datatype SparrowScanner using RetType = Token - using _SourceType = sourceType - using _ErrRepType = errorReporterType /// Location that we use to keep track of the source chars _curLocation: Location + /// The buffered source of chars + _bufferedSource: BufferedCharSource /// The source stream of chars (and locations) we are going to use - _src: _ImplLSCR.LocationSyncCharRange(RangeWithLookahead(sourceType)) + _src: _ImplLSCR.LocationSyncCharRange(RangeWithLookahead(BufferedCharSourceRange)) /// The current token we look at. We will reuse this object for all the /// tokens that we parse from the source stream _curToken: Token /// Indicates if '_curToken' is computed or not _tokenIsComputed: Bool /// Object used to report errors - _errorReporter: errorReporterType + _errorReporter: ErrorReporter + /// If true, also emit whitespace & comment tokens + _emitWitespace: Bool -fun ctor(this: @SparrowScanner, source: this._SourceType, errorReporter: this._ErrRepType, iniLocation: @Location) +fun ctor(this: @SparrowScanner, chars: CharSource, errorReporter: ErrorReporter, \ + iniLocation: @Location, emitWitespace: Bool = false) this._curLocation ctor iniLocation - this._src.ctor(RangeWithLookahead(_SourceType)(source), _curLocation) + this._bufferedSource ctor chars + this._src.ctor(RangeWithLookahead(BufferedCharSourceRange)(_bufferedSource.all), _curLocation) this._curToken ctor this._tokenIsComputed ctor false this._errorReporter ctor errorReporter + this._emitWitespace = emitWitespace fun isEmpty(this: @SparrowScanner) = false fun front(this: @SparrowScanner): Token @@ -147,12 +151,16 @@ package _Impl // Check for whitespace -- drop all the whitespace if ch == ' '.char _src advanceIf (fun c = c==' '.char) + if _emitWitespace + return tkWHITESPACE continue // Check for tabs -- forbidden if ch == '\t'.char this reportError toString("Tabs are not valid characters") _src advanceIf (fun c = c=='\t'.char) + if _emitWitespace + return tkWHITESPACE continue // Check for new lines @@ -164,6 +172,8 @@ package _Impl if ch == '/'.char && ch2 == '/'.char _src.popFront _src advanceIf (fun c = c!='\n'.char) + if _emitWitespace + return tkCOMMENT continue // Check for multi-line comments -- drop them @@ -178,11 +188,15 @@ package _Impl this reportError "End of file found inside comment" return tkEND _src.popFront // move past '/' + if _emitWitespace + return tkCOMMENT continue // Backslash followed by a new-line collapses if ch == '\\'.char && ch2 == '\n'.char _src advance 2 + if _emitWitespace + return tkLINECONTINUE continue // Strings diff --git a/src/SparrowFrontend/Grammar/stringCharSource.spr b/src/SparrowFrontend/Grammar/stringCharSource.spr new file mode 100644 index 00000000..e9bc9813 --- /dev/null +++ b/src/SparrowFrontend/Grammar/stringCharSource.spr @@ -0,0 +1,16 @@ +import ext +import std.ranges, std.string + +//! A char source that reads chars from a given StringRef +[initCtor] +datatype StringCharSource + _content: StringRef + +fun readChars(this: @StringCharSource, dest: @String, numChars: Int) + var sz: Int = _content.size + var toRead = ife(numChars < sz, numChars, sz) + for i = 0..sz + dest += _content.front + _content.popFront + + diff --git a/src/SparrowFrontend/Grammar/token.spr b/src/SparrowFrontend/Grammar/token.spr index 408c3a21..3182f8a6 100644 --- a/src/SparrowFrontend/Grammar/token.spr +++ b/src/SparrowFrontend/Grammar/token.spr @@ -66,6 +66,10 @@ using tkULONG_LITERAL = TokenType(43) using tkFLOAT_LITERAL = TokenType(44) using tkDOUBLE_LITERAL = TokenType(45) +using tkLINECONTINUE = TokenType(253) +using tkCOMMENT = TokenType(254) +using tkWHITESPACE = TokenType(255) + fun _asString(t: TokenType): String if t == tkEND return "end-of-file" else if t == tkEOL return "new-line" @@ -113,6 +117,9 @@ fun _asString(t: TokenType): String else if t == tkULONG_LITERAL return "ulong literal" else if t == tkFLOAT_LITERAL return "float literal" else if t == tkDOUBLE_LITERAL return "double literal" + else if t == tkLINECONTINUE return "line continue" + else if t == tkCOMMENT return "comment" + else if t == tkWHITESPACE return "whitespace" fun >>(t: TokenType, os: @OutStream) os << (t _asString) diff --git a/src/SparrowFrontend/Grammar/parserTest.spr b/tests/Frontend/parserTest.spr similarity index 55% rename from src/SparrowFrontend/Grammar/parserTest.spr rename to tests/Frontend/parserTest.spr index a49d14d7..3c262773 100644 --- a/src/SparrowFrontend/Grammar/parserTest.spr +++ b/tests/Frontend/parserTest.spr @@ -1,8 +1,8 @@ -import parserIf, parser -import parserDefs -import scanner +//!! -I../../src/SparrowFrontend/Grammar -I../../tools/ +import parserIf, parser, parserDefs, scanner, bufferedCharSource + +import formatDetails.common -import os import std.ranges import std.vector import std.newDelete @@ -52,12 +52,9 @@ fun createNode(l: Location, kind: StringRef): Node = new(NodeImpl, l, kind) toNo fun createNode(l: Location, kind: StringRef, children: Range): Node = new(NodeImpl, l, kind, children) toNode fun createNode(l: Location, kind: StringRef, children: Range, name: StringRef): Node = new(NodeImpl, l, kind, children, name) toNode -[native("comp_parser_reportError")] -fun reportErrorExternal(loc: @Location, msg: StringRef) - cout << loc << " ERROR: " << msg << endl // IGNORE-ERROR for test.py +datatype MyAstBuilder -[native("comp_parser_addToNodeList")] -fun addToNodeList(nl, newNode: Node): Node +fun addToNodeList(this: @MyAstBuilder, nl, newNode: Node): Node if nl isSet if newNode isSet (nl toImpl).children += newNode @@ -65,121 +62,83 @@ fun addToNodeList(nl, newNode: Node): Node nl = createNode((newNode toImpl).loc, "nodeList", repeat(newNode, 1)) return nl -[native("comp_parser_mkModifiers")] -fun mkModifiers(loc: @Location, main, mods: Node) \ +fun mkModifiers(this: @MyAstBuilder, loc: @Location, main, mods: Node) \ = ife(mods isSet, createNode(loc, "modifiers", values(main, mods)), main) -[native("comp_parser_mkModule")] -fun mkModule(loc: @Location, moduleName, decls: Node) \ +fun mkModule(this: @MyAstBuilder, loc: @Location, moduleName, decls: Node) \ = createNode(loc, "module", values(moduleName, decls)) -[native("comp_parser_mkImportName")] -fun mkImportName(loc: @Location, alias: StringRef, toImport, decls: Node) \ +fun mkImportName(this: @MyAstBuilder, loc: @Location, alias: StringRef, toImport, decls: Node) \ = createNode(loc, "importName", values(toImport, decls), alias) -[native("comp_parser_mkUsing")] -fun mkUsing(loc: @Location, alias: StringRef, usingNode: Node) \ +fun mkUsing(this: @MyAstBuilder, loc: @Location, alias: StringRef, usingNode: Node) \ = createNode(loc, "using", repeat(usingNode, 1), alias) -[native("comp_parser_mkPackage")] -fun mkPackage(loc: @Location, name: StringRef, children, params, ifClause: Node) \ +fun mkPackage(this: @MyAstBuilder, loc: @Location, name: StringRef, children, params, ifClause: Node) \ = createNode(loc, "package", repeat(children, 1), name) -[native("comp_parser_mkDatatype")] -fun mkDatatype(loc: @Location, name: StringRef, params, underlyingData, ifClause, children: Node) \ +fun mkDatatype(this: @MyAstBuilder, loc: @Location, name: StringRef, params, underlyingData, ifClause, children: Node) \ = createNode(loc, "datatype", values(params, underlyingData, ifClause, children), name) -[native("comp_parser_mkField")] -fun mkField(loc: @Location, name: StringRef, typeNode, init: Node): Node \ +fun mkField(this: @MyAstBuilder, loc: @Location, name: StringRef, typeNode, init: Node): Node \ = createNode(loc, "field", values(typeNode, init), name) -[native("comp_parser_mkConcept")] -fun mkConcept(loc: @Location, name, paramName: StringRef, baseConcept, ifClause: Node) \ +fun mkConcept(this: @MyAstBuilder, loc: @Location, name, paramName: StringRef, baseConcept, ifClause: Node) \ = createNode(loc, "concept", values(baseConcept, ifClause), name) -[native("comp_parser_mkVar")] -fun mkVar(loc: @Location, name: StringRef, typeNode, init: Node) \ +fun mkVar(this: @MyAstBuilder, loc: @Location, name: StringRef, typeNode, init: Node) \ = createNode(loc, "var", values(typeNode, init), name) -[native("comp_parser_mkParameter")] -fun mkParameter(loc: @Location, name: StringRef, typeNode, init: Node) \ +fun mkParameter(this: @MyAstBuilder, loc: @Location, name: StringRef, typeNode, init: Node) \ = createNode(loc, "param", values(typeNode, init), name) -[native("comp_parser_mkFun")] -fun mkFun(loc: @Location, name: StringRef, formals, retType, body, bodyExp, ifClause: Node) \ +fun mkFun(this: @MyAstBuilder, loc: @Location, name: StringRef, formals, retType, body, bodyExp, ifClause: Node) \ = createNode(loc, "fun", values(formals, retType, body, bodyExp, ifClause), name) -[native("comp_parser_mkParenthesisExpr")] -fun mkParenthesisExpr(expr: Node) \ +fun mkParenthesisExpr(this: @MyAstBuilder, expr: Node) \ = createNode((expr toImpl).loc, "paren", repeat(expr, 1)) -[native("comp_parser_mkPostfixOp")] -fun mkPostfixOp(loc: @Location, base: Node, op: StringRef) \ +fun mkPostfixOp(this: @MyAstBuilder, loc: @Location, base: Node, op: StringRef) \ = createNode(loc, "postfix", values(base, createNode(loc, op))) -[native("comp_parser_mkInfixOp")] -fun mkInfixOp(loc: @Location, lhs: Node, op: StringRef, rhs: Node) \ +fun mkInfixOp(this: @MyAstBuilder, loc: @Location, lhs: Node, op: StringRef, rhs: Node) \ = createNode(loc, "infix", values(lhs, createNode(loc, op), rhs)) -[native("comp_parser_mkPrefixOp")] -fun mkPrefixOp(loc: @Location, op: StringRef, base: Node) \ +fun mkPrefixOp(this: @MyAstBuilder, loc: @Location, op: StringRef, base: Node) \ = createNode(loc, "prefix", values(createNode(loc, op), base)) -[native("comp_parser_mkIdentifier")] -fun mkIdentifier(loc: @Location, id: StringRef) \ +fun mkIdentifier(this: @MyAstBuilder, loc: @Location, id: StringRef) \ = createNode(loc, id) -[native("comp_parser_mkCompoundExpr")] -fun mkCompoundExpr(loc: @Location, base: Node, id: StringRef) \ +fun mkCompoundExpr(this: @MyAstBuilder, loc: @Location, base: Node, id: StringRef) \ = createNode(loc, "compoundExpr", values(base, createNode(loc, id))) -[native("comp_parser_mkStarExpr")] -fun mkStarExpr(loc: @Location, base: Node, id: StringRef) \ +fun mkStarExpr(this: @MyAstBuilder, loc: @Location, base: Node, id: StringRef) \ = createNode(loc, "starExpr", values(base, createNode(loc, id))) -[native("comp_parser_mkDotExpr")] -fun mkDotExpr(loc: @Location, base: Node, id: StringRef) \ +fun mkDotExpr(this: @MyAstBuilder, loc: @Location, base: Node, id: StringRef) \ = createNode(loc, "dotExpr", values(base, createNode(loc, id))) -[native("comp_parser_mkFunAppExpr")] -fun mkFunAppExpr(loc: @Location, base, args: Node) \ +fun mkFunAppExpr(this: @MyAstBuilder, loc: @Location, base, args: Node) \ = createNode(loc, "funApp", values(base, args)) -[native("comp_parser_mkLambdaExpr")] -fun mkLambdaExpr(loc: @Location, closureParams, formals, retType, body, bodyExpr: Node) \ +fun mkLambdaExpr(this: @MyAstBuilder, loc: @Location, closureParams, formals, retType, body, bodyExpr: Node) \ = createNode(loc, "lambda", values(closureParams, formals, retType, body, bodyExpr)) -[native("comp_parser_mkNullLiteral")] -fun mkNullLiteral(loc: @Location) \ +fun mkNullLiteral(this: @MyAstBuilder, loc: @Location) \ = createNode(loc, "null") -[native("comp_parser_mkBoolLiteral")] -fun mkBoolLiteral(loc: @Location, val: Bool) \ +fun mkBoolLiteral(this: @MyAstBuilder, loc: @Location, val: Bool) \ = createNode(loc, "boolLit") -[native("comp_parser_mkIntLiteral")] -fun mkIntLiteral(loc: @Location, val: Int) \ +fun mkIntLiteral(this: @MyAstBuilder, loc: @Location, val: Int) \ = createNode(loc, "intLit") -[native("comp_parser_mkUIntLiteral")] -fun mkUIntLiteral(loc: @Location, val: UInt) \ +fun mkUIntLiteral(this: @MyAstBuilder, loc: @Location, val: UInt) \ = createNode(loc, "uintLit") -[native("comp_parser_mkLongLiteral")] -fun mkLongLiteral(loc: @Location, val: Long) \ +fun mkLongLiteral(this: @MyAstBuilder, loc: @Location, val: Long) \ = createNode(loc, "longLit") -[native("comp_parser_mkULongLiteral")] -fun mkULongLiteral(loc: @Location, val: ULong) \ +fun mkULongLiteral(this: @MyAstBuilder, loc: @Location, val: ULong) \ = createNode(loc, "ulongLit") -[native("comp_parser_mkFloatLiteral")] -fun mkFloatLiteral(loc: @Location, val: Float) \ +fun mkFloatLiteral(this: @MyAstBuilder, loc: @Location, val: Float) \ = createNode(loc, "floatLit") -[native("comp_parser_mkDoubleLiteral")] -fun mkDoubleLiteral(loc: @Location, val: Double) \ +fun mkDoubleLiteral(this: @MyAstBuilder, loc: @Location, val: Double) \ = createNode(loc, "doubleLit") -[native("comp_parser_mkCharLiteral")] -fun mkCharLiteral(loc: @Location, val: Char) \ +fun mkCharLiteral(this: @MyAstBuilder, loc: @Location, val: Char) \ = createNode(loc, "charLit") -[native("comp_parser_mkStringLiteral")] -fun mkStringLiteral(loc: @Location, data: StringRef) \ +fun mkStringLiteral(this: @MyAstBuilder, loc: @Location, data: StringRef) \ = createNode(loc, "stringLit") -[native("comp_parser_mkBlockStmt")] -fun mkBlockStmt(loc: @Location, stmts: Node) \ +fun mkBlockStmt(this: @MyAstBuilder, loc: @Location, stmts: Node) \ = createNode(loc, "block", repeat(stmts, 1)) -[native("comp_parser_mkIfStmt")] -fun mkIfStmt(loc: @Location, expr, thenClause, elseClause: Node) \ +fun mkIfStmt(this: @MyAstBuilder, loc: @Location, expr, thenClause, elseClause: Node) \ = createNode(loc, "if", values(expr, thenClause, elseClause)) -[native("comp_parser_mkForStmt")] -fun mkForStmt(loc: @Location, id: StringRef, typeNode, range, action: Node) \ +fun mkForStmt(this: @MyAstBuilder, loc: @Location, id: StringRef, typeNode, range, action: Node) \ = createNode(loc, "for", values(createNode(loc, id), typeNode, range, action)) -[native("comp_parser_mkWhileStmt")] -fun mkWhileStmt(loc: @Location, expr, stepAction, body: Node) \ +fun mkWhileStmt(this: @MyAstBuilder, loc: @Location, expr, stepAction, body: Node) \ = createNode(loc, "while", values(expr, stepAction, body)) -[native("comp_parser_mkBreakStmt")] -fun mkBreakStmt(loc: @Location) \ +fun mkBreakStmt(this: @MyAstBuilder, loc: @Location) \ = createNode(loc, "break") -[native("comp_parser_mkContinueStmt")] -fun mkContinueStmt(loc: @Location) \ +fun mkContinueStmt(this: @MyAstBuilder, loc: @Location) \ = createNode(loc, "continue") -[native("comp_parser_mkReturnStmt")] -fun mkReturnStmt(loc: @Location, expr: Node) \ +fun mkReturnStmt(this: @MyAstBuilder, loc: @Location, expr: Node) \ = createNode(loc, "return", repeat(expr, 1)) @@ -188,8 +147,8 @@ fun sprMain return var n = programArgs(1) asInt - if n == 0 ; doScan(programArgs(2), "") - else if n == 1 ; doParse(programArgs(2), "") + if n == 0 ; doScan(mkCharSource(FileCharSource(programArgs(2)))) + else if n == 1 ; doParse(mkCharSource(FileCharSource(programArgs(2)))) else if n == 2 ; test2() else if n == 3 ; test3() else if n == 4 ; test4() @@ -197,22 +156,23 @@ fun sprMain else if n == 6 ; test6() else if n == 7 ; test7() -fun doScan(filename, code: StringRef) +fun doScan(charSource: CharSource) var loc = mkLocation() - var parser: @ParserContext = createScanner(filename, code, loc) + var errorReporter: ConsoleErrorReporter + var scanner = SparrowScanner(charSource, mkErrorReporter(errorReporter), loc) var token: Token while true - nextToken(parser, token) + token = (scanner++) cout << token.type.data << " - '" << token.data << "' - " << token.loc << endl if token.type == tkEND break - parser destroyParser - -fun doParse(filename, code: StringRef) +fun doParse(charSource: CharSource) var loc = mkLocation() - var parser: @ParserContext = createParser(filename, code, loc) + var astBuilder: MyAstBuilder + var errorReporter: ConsoleErrorReporter + var parser: @ParserContext = createParser(charSource, loc, mkAstBuilder(astBuilder), mkErrorReporter(errorReporter)) var rootNode = parser parseModule cout << (rootNode toImpl) << endl @@ -220,7 +180,8 @@ fun doParse(filename, code: StringRef) parser destroyParser fun test2 - doScan("", "1 2 3 4 5 0xff, 0b101, 0777, 0789, .123 0.123 1.123 12.34e2f 123_456 1_2.3_4") + var code = "1 2 3 4 5 0xff, 0b101, 0777, 0789, .123 0.123 1.123 12.34e2f 123_456 1_2.3_4" + doScan(mkCharSource(StringCharSource(code))) /*<<>>*/ fun test3 - doScan("", "a b c d e if then else abc_def _1 _a a1 a@#$ a.b.c ab.bc.cd abc.*") + var code = "a b c d e if then else abc_def _1 _a a1 a@#$ a.b.c ab.bc.cd abc.*" + doScan(mkCharSource(StringCharSource(code))) /*<<>>*/ fun test4 - doScan("", ". .. ... !!! .* # !@#$%^&*-+=") + var code = ". .. ... !!! .* # !@#$%^&*-+=" + doScan(mkCharSource(StringCharSource(code))) /*<<>>*/ fun test5 - doScan("", "\"abcd\" 'a' <{abc\\nop}>") + var code = "\"abcd\" 'a' <{abc\\nop}>" + doScan(mkCharSource(StringCharSource(code))) /*<<>>*/ -// <<) >>>*/ fun test7 - doParse("", "import x.y.z, k, l(a,b,c);") + var code = "import x.y.z, k, l(a,b,c);" + doParse(mkCharSource(StringCharSource(code))) /*<<, nodeList(nodeList(importName(compoundExpr(compoundExpr(x, y), z), ), importName(k, ), importName(l, nodeList(a, b, c))))) >>>*/ -//<<> (n: @AstNodeImpl, os: @OutStream) + os << n.kind + if !(n.children isEmpty) + os << "(" + var first = true + for c = n.children.all + if first ; first = false + else os << ", " + os << (c _toImpl) + os << ")" + // os << "/(" << n.loc << ")" + +fun createNode(l: Location, kind: NodeKind): Node = new(AstNodeImpl, l, kind) _toNode +fun createNode(l: Location, kind: NodeKind, children: Range): Node = new(AstNodeImpl, l, kind, children) _toNode +fun createNode(l: Location, kind: NodeKind, children: Range, name: StringRef): Node = new(AstNodeImpl, l, kind, children, name) _toNode +fun createNode(l: Location, kind: NodeKind, name: StringRef): Node = new(AstNodeImpl, l, kind, name) _toNode + +var _nullAstNodeImpl: AstNodeImpl + + +//! Simple AST builder; creates AST based on AstNodeImpl objects +datatype SimpleAstBuilder + +fun addToNodeList(this: @SimpleAstBuilder, nl, newNode: Node): Node + if nl isSet + if newNode isSet + (nl _toImpl).children += newNode + (nl _toImpl).loc copyEnd (newNode location) + else if newNode isSet + nl = createNode((newNode _toImpl).loc, nkNodeList, repeat(newNode, 1)) + return nl + +fun mkModifiers(this: @SimpleAstBuilder, loc: @Location, main, mods: Node) \ + = ife(mods isSet, createNode(loc, nkModifiers, values(main, mods)), main) +fun mkModule(this: @SimpleAstBuilder, loc: @Location, moduleName, decls: Node) \ + = createNode(loc, nkModule, values(moduleName, decls)) +fun mkImportName(this: @SimpleAstBuilder, loc: @Location, alias: StringRef, toImport, decls: Node) \ + = createNode(loc, nkImportName, values(toImport, decls), alias) +fun mkUsing(this: @SimpleAstBuilder, loc: @Location, alias: StringRef, usingNode: Node) \ + = createNode(loc, nkUsing, repeat(usingNode, 1), alias) +fun mkPackage(this: @SimpleAstBuilder, loc: @Location, name: StringRef, children, params, ifClause: Node) \ + = createNode(loc, nkPackage, repeat(children, 1), name) +fun mkDatatype(this: @SimpleAstBuilder, loc: @Location, name: StringRef, params, underlyingData, ifClause, children: Node) \ + = createNode(loc, nkDatatype, values(params, underlyingData, ifClause, children), name) +fun mkField(this: @SimpleAstBuilder, loc: @Location, name: StringRef, typeNode, init: Node): Node \ + = createNode(loc, nkField, values(typeNode, init), name) +fun mkConcept(this: @SimpleAstBuilder, loc: @Location, name, paramName: StringRef, baseConcept, ifClause: Node) \ + = createNode(loc, nkConcept, values(baseConcept, ifClause), name) +fun mkVar(this: @SimpleAstBuilder, loc: @Location, name: StringRef, typeNode, init: Node) \ + = createNode(loc, nkVar, values(typeNode, init), name) +fun mkParameter(this: @SimpleAstBuilder, loc: @Location, name: StringRef, typeNode, init: Node) \ + = createNode(loc, nkParameter, values(typeNode, init), name) +fun mkFun(this: @SimpleAstBuilder, loc: @Location, name: StringRef, formals, retType, body, bodyExp, ifClause: Node) \ + = createNode(loc, nkFun, values(formals, retType, body, bodyExp, ifClause), name) + +fun mkParenthesisExpr(this: @SimpleAstBuilder, expr: Node) \ + = createNode((expr _toImpl).loc, nkParenthesisExpr, repeat(expr, 1)) +fun mkPostfixOp(this: @SimpleAstBuilder, loc: @Location, base: Node, op: StringRef) \ + = createNode(loc, nkPostfixOp, values(base, createNode(loc, nkIdentifier, op))) +fun mkInfixOp(this: @SimpleAstBuilder, loc: @Location, lhs: Node, op: StringRef, rhs: Node) \ + = createNode(loc, nkInfixOp, values(lhs, createNode(loc, nkIdentifier, op), rhs)) +fun mkPrefixOp(this: @SimpleAstBuilder, loc: @Location, op: StringRef, base: Node) \ + = createNode(loc, nkPrefixOp, values(createNode(loc, nkIdentifier, op), base)) +fun mkIdentifier(this: @SimpleAstBuilder, loc: @Location, id: StringRef) \ + = createNode(loc, nkIdentifier, id) +fun mkCompoundExpr(this: @SimpleAstBuilder, loc: @Location, base: Node, id: StringRef) \ + = createNode(loc, nkCompoundExpr, values(base, createNode(loc, nkIdentifier, id))) +fun mkStarExpr(this: @SimpleAstBuilder, loc: @Location, base: Node, id: StringRef) \ + = createNode(loc, nkStarExpr, repeat(base, 1), id) +fun mkDotExpr(this: @SimpleAstBuilder, loc: @Location, base: Node, id: StringRef) \ + = createNode(loc, nkDotExpr, repeat(base, 1), id) +fun mkFunAppExpr(this: @SimpleAstBuilder, loc: @Location, base, args: Node) \ + = createNode(loc, nkFunAppExpr, values(base, args)) +fun mkLambdaExpr(this: @SimpleAstBuilder, loc: @Location, closureParams, formals, retType, body, bodyExpr: Node) \ + = createNode(loc, nkLambdaExpr, values(closureParams, formals, retType, body, bodyExpr)) +fun mkNullLiteral(this: @SimpleAstBuilder, loc: @Location) \ + = createNode(loc, nkNullLiteral) +fun mkBoolLiteral(this: @SimpleAstBuilder, loc: @Location, val: Bool) \ + = createNode(loc, nkBoolLiteral) +fun mkIntLiteral(this: @SimpleAstBuilder, loc: @Location, val: Int) \ + = createNode(loc, nkIntLiteral) +fun mkUIntLiteral(this: @SimpleAstBuilder, loc: @Location, val: UInt) \ + = createNode(loc, nkUIntLiteral) +fun mkLongLiteral(this: @SimpleAstBuilder, loc: @Location, val: Long) \ + = createNode(loc, nkLongLiteral) +fun mkULongLiteral(this: @SimpleAstBuilder, loc: @Location, val: ULong) \ + = createNode(loc, nkULongLiteral) +fun mkFloatLiteral(this: @SimpleAstBuilder, loc: @Location, val: Float) \ + = createNode(loc, nkFloatLiteral) +fun mkDoubleLiteral(this: @SimpleAstBuilder, loc: @Location, val: Double) \ + = createNode(loc, nkDoubleLiteral) +fun mkCharLiteral(this: @SimpleAstBuilder, loc: @Location, val: Char) \ + = createNode(loc, nkCharLiteral) +fun mkStringLiteral(this: @SimpleAstBuilder, loc: @Location, data: StringRef) \ + = createNode(loc, nkStringLiteral) + +fun mkBlockStmt(this: @SimpleAstBuilder, loc: @Location, stmts: Node) \ + = createNode(loc, nkBlockStmt, repeat(stmts, 1)) +fun mkIfStmt(this: @SimpleAstBuilder, loc: @Location, expr, thenClause, elseClause: Node) \ + = createNode(loc, nkIfStmt, values(expr, thenClause, elseClause)) +fun mkForStmt(this: @SimpleAstBuilder, loc: @Location, id: StringRef, typeNode, range, action: Node) \ + = createNode(loc, nkForStmt, values(createNode(loc, nkIdentifier, id), typeNode, range, action)) +fun mkWhileStmt(this: @SimpleAstBuilder, loc: @Location, expr, stepAction, body: Node) \ + = createNode(loc, nkWhileStmt, values(expr, stepAction, body)) +fun mkBreakStmt(this: @SimpleAstBuilder, loc: @Location) \ + = createNode(loc, nkBreakStmt) +fun mkContinueStmt(this: @SimpleAstBuilder, loc: @Location) \ + = createNode(loc, nkContinueStmt) +fun mkReturnStmt(this: @SimpleAstBuilder, loc: @Location, expr: Node) \ + = createNode(loc, nkReturnStmt, repeat(expr, 1)) + diff --git a/tools/formatDetails/common.spr b/tools/formatDetails/common.spr new file mode 100644 index 00000000..f8cdef45 --- /dev/null +++ b/tools/formatDetails/common.spr @@ -0,0 +1,13 @@ +module formatTool.formatDetails.common + +import ext + +import os, std.ranges + + +//! An error reporter that prints errors to the console +datatype ConsoleErrorReporter + +fun reportError(this: @ConsoleErrorReporter, loc: @Location, msg: StringRef) + cout << loc << " ERROR: " << msg << endl // IGNORE-ERROR for test.py + exit(1) diff --git a/tools/formatDetails/fileCharSourceKeepContent.spr b/tools/formatDetails/fileCharSourceKeepContent.spr new file mode 100644 index 00000000..30b2b6fa --- /dev/null +++ b/tools/formatDetails/fileCharSourceKeepContent.spr @@ -0,0 +1,74 @@ +module formatTool.formatDetails.fileCharSourceKeepContent + +import ext + +import os, assert, std.ranges + +//! A char source that reads the content of a file; it also keeps around the content of the file. +//! This content can be queried then by location. Old content can be dropped, by specifying the +//! start location +datatype FileCharSourceKeepContent + _file: File //!< The file we are reading from + _content: String //!< The content read from the file (all file) + _contentStart: LineCol //!< The start position for the current token + _contentEnd: LineCol //!< The last position seen in the file + _contentStartIdx: Int //!< The index in the content string of the start position + +using _This = FileCharSourceKeepContent + +fun ctor(this: @_This, filename: StringRef) + _file ctor filename + _contentStart = mkLineCol(1, 1) + _contentEnd = mkLineCol(1, 1) + _contentStartIdx = 0 + +fun isValid(this: @_This) = _file.isOpen + +fun readChars(this: @_This, dest: @String, numChars: Int) + for i = 0..numChars + // Read into the given buffer + var ch = _file.readChar + if _file.isEof + break + dest += ch + + // Also keep track of the read content + _content += ch + _incrementPosition(_contentEnd, ch) + +//! Retrieves the content between the two given positions +fun getContent(this: @_This, start, end: LineCol): StringRef + assert(start >= _contentStart) + assert(end <= _contentEnd) + assert(start < end) + + // Find the start & end indices in the content string + var curPos = _contentStart + var idxStart = this._findIndexInContent(curPos, start, _contentStartIdx) + var idxEnd = this._findIndexInContent(curPos, end, idxStart) + + return _content.subrange(idxStart, idxEnd - idxStart) + +//! Update the start position in the content, for easier lookup +fun updateStartPos(this: @_This, newPos: LineCol) + assert(newPos >= _contentStart) + assert(newPos <= _contentEnd) + + // Find the start char & update start pos + _contentStartIdx = this._findIndexInContent(_contentStart, newPos, _contentStartIdx) + +//! Increments the location based on the given char +fun _incrementPosition(pos: @LineCol, ch: Char) + if ch == '\n'.char + pos.line++ + pos.col = 1 + else + pos.col++ + +fun _findIndexInContent(this: @_This, curPos: @LineCol, targetPos: LineCol, idxStart: Int): Int + var idx = idxStart + while idx < _content.size && curPos < targetPos + var ch = _content(idx) + _incrementPosition(curPos, ch) + idx++ + return idx diff --git a/tools/formatDetails/nodeKinds.spr b/tools/formatDetails/nodeKinds.spr new file mode 100644 index 00000000..b81d032e --- /dev/null +++ b/tools/formatDetails/nodeKinds.spr @@ -0,0 +1,100 @@ +module formatTool.formatDetails.nodeKinds + +import meta.location +import std.string + +//! An AST node kind; identifies the AST construct +datatype NodeKind = Int + +// The list of all node kinds +using nkNodeList = NodeKind(0) +using nkModifiers = NodeKind(1) +using nkModule = NodeKind(2) +using nkImportName = NodeKind(3) +using nkUsing = NodeKind(4) +using nkPackage = NodeKind(5) +using nkDatatype = NodeKind(6) +using nkField = NodeKind(7) +using nkConcept = NodeKind(8) +using nkVar = NodeKind(9) +using nkParameter = NodeKind(10) +using nkFun = NodeKind(11) +using nkParenthesisExpr = NodeKind(12) +using nkPostfixOp = NodeKind(13) +using nkInfixOp = NodeKind(14) +using nkPrefixOp = NodeKind(15) +using nkIdentifier = NodeKind(16) +using nkCompoundExpr = NodeKind(17) +using nkStarExpr = NodeKind(18) +using nkDotExpr = NodeKind(19) +using nkFunAppExpr = NodeKind(20) +using nkLambdaExpr = NodeKind(21) +using nkNullLiteral = NodeKind(22) +using nkBoolLiteral = NodeKind(23) +using nkIntLiteral = NodeKind(24) +using nkUIntLiteral = NodeKind(25) +using nkLongLiteral = NodeKind(26) +using nkULongLiteral = NodeKind(27) +using nkFloatLiteral = NodeKind(28) +using nkDoubleLiteral = NodeKind(29) +using nkCharLiteral = NodeKind(30) +using nkStringLiteral = NodeKind(31) +using nkBlockStmt = NodeKind(32) +using nkIfStmt = NodeKind(33) +using nkForStmt = NodeKind(34) +using nkWhileStmt = NodeKind(35) +using nkBreakStmt = NodeKind(36) +using nkContinueStmt = NodeKind(37) +using nkReturnStmt = NodeKind(38) + +// Not actually a node kind; just to represent a null node +using nkNULL = NodeKind(255) + + +fun _asString(nk: NodeKind): StringRef + if nk == nkNodeList return 'NodeList' + else if nk == nkModifiers return 'Modifiers' + else if nk == nkModule return 'Module' + else if nk == nkImportName return 'ImportName' + else if nk == nkUsing return 'Using' + else if nk == nkPackage return 'Package' + else if nk == nkDatatype return 'Datatype' + else if nk == nkField return 'Field' + else if nk == nkConcept return 'Concept' + else if nk == nkVar return 'Var' + else if nk == nkParameter return 'Parameter' + else if nk == nkFun return 'Fun' + + else if nk == nkParenthesisExpr return 'ParenthesisExpr' + else if nk == nkPostfixOp return 'PostfixOp' + else if nk == nkInfixOp return 'InfixOp' + else if nk == nkPrefixOp return 'PrefixOp' + else if nk == nkIdentifier return 'Identifier' + else if nk == nkCompoundExpr return 'CompoundExpr' + else if nk == nkStarExpr return 'StarExpr' + else if nk == nkDotExpr return 'DotExpr' + else if nk == nkFunAppExpr return 'FunAppExpr' + else if nk == nkLambdaExpr return 'LambdaExpr' + else if nk == nkNullLiteral return 'NullLiteral' + else if nk == nkBoolLiteral return 'BoolLiteral' + else if nk == nkIntLiteral return 'IntLiteral' + else if nk == nkUIntLiteral return 'UIntLiteral' + else if nk == nkLongLiteral return 'LongLiteral' + else if nk == nkULongLiteral return 'ULongLiteral' + else if nk == nkFloatLiteral return 'FloatLiteral' + else if nk == nkDoubleLiteral return 'DoubleLiteral' + else if nk == nkCharLiteral return 'CharLiteral' + else if nk == nkStringLiteral return 'StringLiteral' + + else if nk == nkBlockStmt return 'BlockStmt' + else if nk == nkIfStmt return 'IfStmt' + else if nk == nkForStmt return 'ForStmt' + else if nk == nkWhileStmt return 'WhileStmt' + else if nk == nkBreakStmt return 'BreakStmt' + else if nk == nkContinueStmt return 'ContinueStmt' + else if nk == nkReturnStmt return 'ReturnStmt' + else if nk == nkNULL return '' + +fun >>(nk: NodeKind, os: @OutStream) + os << (nk _asString) + diff --git a/tools/formatDetails/sourceData.spr b/tools/formatDetails/sourceData.spr new file mode 100644 index 00000000..31e69353 --- /dev/null +++ b/tools/formatDetails/sourceData.spr @@ -0,0 +1,93 @@ +module formatTool.formatDetails.sourceData + +import tokenData, tokenDataSource, astNodes, common +import node +import std.string + +//! Data used to represent a source file. +//! +//! This is intended to be read/transformed by the tokens vector. This will contain the full source +//! data information. By contrast, the AST tree may contain gaps in the tokens (i.e., whitespaces, +//! comments, punctuation, etc.) +datatype SourceData + //! The filename from which we read the SourceData + filename: String + //! The tokens contained in the source data + //! This set of tokens will point to AST nodes + tokens: TokenVector + //! The root node of the AST representing the syntax of the file + rootNode: Node + + +//! Load the source data from the given filename. +//! Ensures that all the tokens are link to their appropriate AST nodes +fun load(res: @SourceData, filename: StringRef) + res.filename = filename + + // Open the source filename & read the tokens + var src: TokenDataSource = filename + res.tokens assign src.all + + // Do another pass to read the AST + res.rootNode = readAst(filename) + // _printAst(res.rootNode) + + // Set the parents for the AST nodes + _setAstParents(res.rootNode) + + // Link AST nodes to the tokens + _setAstToTokens(res.tokens, res.rootNode) + +fun _setAstParents(node: @Node) + if node.isNull + return + for child = (node children) + child setParent = node + _setAstParents(child) + +fun _setAstToTokens(tokens: @TokenVector, rootNode: Node) + var startToken = 0 + if rootNode.isSet && !tokens.isEmpty + _astToTokensImpl(rootNode, tokens, startToken) + if startToken < (tokens size) + var tok = tokens(startToken) + cout << 'ERROR: Cannot assign AST node to token ' << tok.type << " at " << tok.loc << '\n' // IGNORE-ERROR for test.py + +fun _astToTokensImpl(node: Node, tokens: @TokenVector, startToken: @Int) + while startToken < tokens.size + // Basic overlap check; we have to overlap the token before our children + var tok: @TokenData = tokens(startToken) + var nodeLoc = node location + if !(nodeLoc _containsLoc tok.loc) + return + + // Try first to match the children against our current token + var origStartToken = startToken + for child = (node children) + if child.isSet + _astToTokensImpl(child, tokens, startToken) + // Check if the children couldn't match this token + if origStartToken == startToken + // I guess not; but we know the we match the token + tok.parentAst = node + startToken++ + +fun _containsLoc(bigLoc, tokenLoc: Location): Bool + return (bigLoc.start <= tokenLoc.start) && (bigLoc.end >= tokenLoc.end) + +fun _printAst(node: Node, indent: Int = 0) + for i = 0..indent + cout << ' ' + cout << '- ' + if node.isNull + cout << '\n' + return + cout << (node kind) << ' ' << (node location) + if !(node name).isEmpty + cout << ' name:"' << (node name) << '"' + if (node parent) isSet + cout << ' parent:' << ((node parent) kind) + cout << '\n' + for child = (node children) + _printAst(child, indent+1) + diff --git a/tools/formatDetails/tokenData.spr b/tools/formatDetails/tokenData.spr new file mode 100644 index 00000000..fe94a015 --- /dev/null +++ b/tools/formatDetails/tokenData.spr @@ -0,0 +1,17 @@ +module formatTool.formatDetails.tokenData + +import token, node +import meta.location +import std.vector + +//! The data used to represents the tokens of the program +//! Contains complete information of the source code, and can be used at source-code transformations +[initCtor] +datatype TokenData + type: TokenType + loc: Location + content: StringRef + parentAst: Node + +//! A vector of tokens +using TokenVector = TokenData Vector \ No newline at end of file diff --git a/tools/formatDetails/tokenDataSource.spr b/tools/formatDetails/tokenDataSource.spr new file mode 100644 index 00000000..32ce2095 --- /dev/null +++ b/tools/formatDetails/tokenDataSource.spr @@ -0,0 +1,72 @@ +module formatTool.formatDetails.tokenDataSource + +import common, fileCharSourceKeepContent, tokenData, astNodes + +// From SparrowFrontend/Grammar +import scanner, token, ext, parserIf + +import meta.location, os = os + +datatype TokenDataSource + //! Object representing the source data, with location-based content-query abilities + _source: FileCharSourceKeepContent + + //! The error reporter object used with the Sparrow scanner + _errorReporter: _Impl.ExitErrorReporter + + //! The Sparrow scanner, used to find out the tokens + _sparrowScanner: SparrowScanner + + //! Indicates if we are at the end of the range + _atEnd: Bool + //! The current token + _curToken: TokenData + +fun ctor(this: @TokenDataSource, filename: StringRef) + var loc = mkLocation() + + _source ctor filename + if !_source.isValid + _errorReporter.reportError(loc, toString("Cannot open input file: ", filename).asStringRef) + + _sparrowScanner.ctor(mkCharSource(_source), mkErrorReporter(_errorReporter), loc, true) + + this._popFront + +fun all(this: @TokenDataSource) = TokenDataSourceRange(this) + +fun _popFront(this: @TokenDataSource) + var token = (_sparrowScanner++) + var tokenData = _source.getContent(token.loc.start, token.loc.end) + _curToken = TokenData(token.type, token.loc, tokenData, Node()) + _atEnd = token.type == tkEND + _source.updateStartPos(token.loc.end) + +[initCtor] +datatype TokenDataSourceRange + using RetType = TokenData + + _data: @TokenDataSource + +fun isEmpty(this: @TokenDataSourceRange) = _data._atEnd +fun front(this: @TokenDataSourceRange) = _data._curToken +fun popFront(this: @TokenDataSourceRange) = _data._popFront + + +fun readAst(filename: StringRef): Node + var loc = mkLocation() + var astBuilder: SimpleAstBuilder + var errorReporter: _Impl.ExitErrorReporter + var fileCharSource = FileCharSource(filename) + var parser: @ParserContext = createParser(mkCharSource(fileCharSource), loc, mkAstBuilder(astBuilder), mkErrorReporter(errorReporter)) + + var rootNode = parser parseModule + return rootNode + +package _Impl + //! An error reporter that prints errors to the console then quits + datatype ExitErrorReporter + + fun reportError(this: @ExitErrorReporter, loc: @Location, msg: StringRef) + cout << loc << " ERROR: " << msg << endl // IGNORE-ERROR for test.py + os.exit(1) diff --git a/tools/formatTool.spr b/tools/formatTool.spr new file mode 100644 index 00000000..37302856 --- /dev/null +++ b/tools/formatTool.spr @@ -0,0 +1,80 @@ +//!! -I../src/SparrowFrontend/Grammar +import formatDetails.sourceData + +import os + +//! The type of a basic transformation function +using TransformFun = FunctionPtr(VoidType, @SourceData) + +fun sprMain + if programArgs.size() < 2 + _printArgsError + var cmd = programArgs(1) + var filename = programArgs(2) + + var transformFun: TransformFun + + if cmd == '-format' ; transformFun = \_defaultFormat + else if cmd == '-f=empty' ; transformFun = \_emptyTransform + else if cmd == '-f=ref-to-mut' ; transformFun = \_refToMut + else + _printArgsError + + // TODO -c == check + + doTransform(filename, transformFun) + + +fun _printArgsError + cout << 'ERROR: invalid arguments passed\n\n' // IGNORE-ERROR for test.py + cout << 'Usage:\n' + cout << ' ' << programArgs(0) << ' -format \n\n' + exit(1) + +fun doTransform(filename: StringRef, transform: TransformFun) + var sourceData: SourceData + sourceData load filename + + // Transform the tokens + transform(sourceData) + + sourceData.tokens _writeToStdout + + // Write all the tokens to file + //var destFilename = toString(filename, ".formatted") + //sourceData.tokens _writeToFile destFilename.asStringRef + +fun _writeToStdout(tokens: @TokenVector) + for token = tokens.all + cout << token.content + //cout << '<' << (token.parentAst kind) << '>' + +fun _writeToFile(tokens: @TokenVector, filename: StringRef) + var destFile = File(filename, 'w') + if !destFile.isOpen + cout << 'ERROR: cannot open output file: ' << filename << '\n' // IGNORE-ERROR for test.py + cout << 'Aborting.\n' + exit(1) + + for token = tokens.all + destFile write token.content + +fun _emptyTransform(src: @SourceData) + ; + +fun _defaultFormat(src: @SourceData) + for token: @TokenData = src.tokens.all + if token.type == tkWHITESPACE && token.content.size > 2 && token.loc.start.col > 1 + token.content = " " + +fun _refToMut(src: @SourceData) + for i = 2..src.tokens.size + var prev2 = src.tokens(i-2) + var prev1 = src.tokens(i-1) + var cur: @TokenData = src.tokens(i) + if prev2.type == tkCOLON && prev1.type == tkWHITESPACE && cur.content == '@' + cur.content = '!' + + +//<< Date: Sun, 5 May 2019 13:26:23 +0300 Subject: [PATCH 08/23] Fix filename case for tools/formatTool.spr --- tests/tests.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/tests.in b/tests/tests.in index 5ce7f114..caa22fb2 100644 --- a/tests/tests.in +++ b/tests/tests.in @@ -167,5 +167,5 @@ Frontend/PrefixPostfix.spr: Frontend - prefix & postfix operators Frontend/StringAndDsl.spr: Frontend - string and DSL Frontend/parserTest.spr: Frontend - Parser test -../Tools/formatTool.spr: Tools - Format tool +../tools/formatTool.spr: Tools - Format tool From e423dfa0810b9ead8f0275d06cf60e732287c100 Mon Sep 17 00:00:00 2001 From: Lucian Radu Teodorescu Date: Sun, 5 May 2019 14:02:16 +0300 Subject: [PATCH 09/23] Fix parsing of comments before the module decl --- src/SparrowFrontend/Grammar/parser.spr | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/SparrowFrontend/Grammar/parser.spr b/src/SparrowFrontend/Grammar/parser.spr index 7a7f49a6..8e90ac2f 100644 --- a/src/SparrowFrontend/Grammar/parser.spr +++ b/src/SparrowFrontend/Grammar/parser.spr @@ -176,6 +176,8 @@ package _Impl // fun parseModuleName(this: @SparrowParser): Node + while this accept tkSEMICOLON + ; if this accept tkMODULE var qid = parseQualifiedName(this) this expect tkSEMICOLON From 401841b5a9deb02ec217c05b0b6d40cfb36bc4de Mon Sep 17 00:00:00 2001 From: Lucian Radu Teodorescu Date: Sun, 5 May 2019 15:54:35 +0300 Subject: [PATCH 10/23] Minor refactoring for error reporting in formatTool --- tests/Frontend/parserTest.spr | 2 +- tools/formatDetails/astNodes.spr | 2 ++ tools/formatDetails/common.spr | 13 ------------ tools/formatDetails/consoleErrorReporter.spr | 20 +++++++++++++++++++ .../fileCharSourceKeepContent.spr | 3 +++ tools/formatDetails/nodeKinds.spr | 1 + tools/formatDetails/sourceData.spr | 12 ++++++----- tools/formatDetails/tokenData.spr | 1 + tools/formatDetails/tokenDataSource.spr | 15 ++++---------- tools/formatTool.spr | 4 +--- 10 files changed, 40 insertions(+), 33 deletions(-) delete mode 100644 tools/formatDetails/common.spr create mode 100644 tools/formatDetails/consoleErrorReporter.spr diff --git a/tests/Frontend/parserTest.spr b/tests/Frontend/parserTest.spr index 3c262773..50b36d02 100644 --- a/tests/Frontend/parserTest.spr +++ b/tests/Frontend/parserTest.spr @@ -1,7 +1,7 @@ //!! -I../../src/SparrowFrontend/Grammar -I../../tools/ import parserIf, parser, parserDefs, scanner, bufferedCharSource -import formatDetails.common +import formatDetails.consoleErrorReporter import std.ranges import std.vector diff --git a/tools/formatDetails/astNodes.spr b/tools/formatDetails/astNodes.spr index 88364de7..6881f322 100644 --- a/tools/formatDetails/astNodes.spr +++ b/tools/formatDetails/astNodes.spr @@ -1,3 +1,5 @@ +//! Define simple AST nodes for capturing the syntax of Sparrow source files and +//! provides an implementation for the AstBuilder interface. module formatTool.formatDetails.astNodeImpls import nodeKinds diff --git a/tools/formatDetails/common.spr b/tools/formatDetails/common.spr deleted file mode 100644 index f8cdef45..00000000 --- a/tools/formatDetails/common.spr +++ /dev/null @@ -1,13 +0,0 @@ -module formatTool.formatDetails.common - -import ext - -import os, std.ranges - - -//! An error reporter that prints errors to the console -datatype ConsoleErrorReporter - -fun reportError(this: @ConsoleErrorReporter, loc: @Location, msg: StringRef) - cout << loc << " ERROR: " << msg << endl // IGNORE-ERROR for test.py - exit(1) diff --git a/tools/formatDetails/consoleErrorReporter.spr b/tools/formatDetails/consoleErrorReporter.spr new file mode 100644 index 00000000..4a77c58e --- /dev/null +++ b/tools/formatDetails/consoleErrorReporter.spr @@ -0,0 +1,20 @@ +//! Defined the ConsoleErrorRerpoter datatype, which implements the ErrorRerporter interface. +//! Also defines how errors should be reported by the tool +module formatTool.formatDetails.consoleErrorReporter + +import ext + +import os + + +//! An error reporter that prints errors to the console +datatype ConsoleErrorReporter + +fun reportError(loc: @Location, msg: StringRef) + if loc.end.line > 1 || loc.end.col > 1 + cout << loc << ' ' + cout << 'ERROR: ' << msg << '\n' // IGNORE-ERROR for test.py + exit(1) + +fun reportError(this: @ConsoleErrorReporter, loc: @Location, msg: StringRef) + reportError(loc, msg) diff --git a/tools/formatDetails/fileCharSourceKeepContent.spr b/tools/formatDetails/fileCharSourceKeepContent.spr index 30b2b6fa..4342f3aa 100644 --- a/tools/formatDetails/fileCharSourceKeepContent.spr +++ b/tools/formatDetails/fileCharSourceKeepContent.spr @@ -1,3 +1,6 @@ +//! Definition of the FileCharSourceKeepContent datatype and associated functions. +//! This allows a CharSource to be passed to the Sparrow parser, and at the same time keep track of +//! the file content served to the scanner. It's helpful in associating source content with tokens. module formatTool.formatDetails.fileCharSourceKeepContent import ext diff --git a/tools/formatDetails/nodeKinds.spr b/tools/formatDetails/nodeKinds.spr index b81d032e..5880bcfe 100644 --- a/tools/formatDetails/nodeKinds.spr +++ b/tools/formatDetails/nodeKinds.spr @@ -1,3 +1,4 @@ +//! Defines the node kinds we extract from Sparrow parser. module formatTool.formatDetails.nodeKinds import meta.location diff --git a/tools/formatDetails/sourceData.spr b/tools/formatDetails/sourceData.spr index 31e69353..9faec428 100644 --- a/tools/formatDetails/sourceData.spr +++ b/tools/formatDetails/sourceData.spr @@ -1,6 +1,7 @@ +//! Defines the SourceData datatype and a method for loading it from a given source file. module formatTool.formatDetails.sourceData -import tokenData, tokenDataSource, astNodes, common +import tokenData, tokenDataSource, astNodes, consoleErrorReporter import node import std.string @@ -48,10 +49,11 @@ fun _setAstParents(node: @Node) fun _setAstToTokens(tokens: @TokenVector, rootNode: Node) var startToken = 0 if rootNode.isSet && !tokens.isEmpty - _astToTokensImpl(rootNode, tokens, startToken) - if startToken < (tokens size) - var tok = tokens(startToken) - cout << 'ERROR: Cannot assign AST node to token ' << tok.type << " at " << tok.loc << '\n' // IGNORE-ERROR for test.py + while startToken < (tokens size) + _astToTokensImpl(rootNode, tokens, startToken) + startToken++ + // We increase the startToken and repeat, as we might have tokens that are outside the + // whole module; i.e., initial comments fun _astToTokensImpl(node: Node, tokens: @TokenVector, startToken: @Int) while startToken < tokens.size diff --git a/tools/formatDetails/tokenData.spr b/tools/formatDetails/tokenData.spr index fe94a015..4af10460 100644 --- a/tools/formatDetails/tokenData.spr +++ b/tools/formatDetails/tokenData.spr @@ -1,3 +1,4 @@ +//! Defines the TokenData and TokenVector datatypes module formatTool.formatDetails.tokenData import token, node diff --git a/tools/formatDetails/tokenDataSource.spr b/tools/formatDetails/tokenDataSource.spr index 32ce2095..d64aa3a4 100644 --- a/tools/formatDetails/tokenDataSource.spr +++ b/tools/formatDetails/tokenDataSource.spr @@ -1,6 +1,7 @@ +//! Defines the TokenDataSource datatype, used in loading source content module formatTool.formatDetails.tokenDataSource -import common, fileCharSourceKeepContent, tokenData, astNodes +import consoleErrorReporter, fileCharSourceKeepContent, tokenData, astNodes // From SparrowFrontend/Grammar import scanner, token, ext, parserIf @@ -12,7 +13,7 @@ datatype TokenDataSource _source: FileCharSourceKeepContent //! The error reporter object used with the Sparrow scanner - _errorReporter: _Impl.ExitErrorReporter + _errorReporter: ConsoleErrorReporter //! The Sparrow scanner, used to find out the tokens _sparrowScanner: SparrowScanner @@ -56,17 +57,9 @@ fun popFront(this: @TokenDataSourceRange) = _data._popFront fun readAst(filename: StringRef): Node var loc = mkLocation() var astBuilder: SimpleAstBuilder - var errorReporter: _Impl.ExitErrorReporter + var errorReporter: ConsoleErrorReporter var fileCharSource = FileCharSource(filename) var parser: @ParserContext = createParser(mkCharSource(fileCharSource), loc, mkAstBuilder(astBuilder), mkErrorReporter(errorReporter)) var rootNode = parser parseModule return rootNode - -package _Impl - //! An error reporter that prints errors to the console then quits - datatype ExitErrorReporter - - fun reportError(this: @ExitErrorReporter, loc: @Location, msg: StringRef) - cout << loc << " ERROR: " << msg << endl // IGNORE-ERROR for test.py - os.exit(1) diff --git a/tools/formatTool.spr b/tools/formatTool.spr index 37302856..d2975c45 100644 --- a/tools/formatTool.spr +++ b/tools/formatTool.spr @@ -52,9 +52,7 @@ fun _writeToStdout(tokens: @TokenVector) fun _writeToFile(tokens: @TokenVector, filename: StringRef) var destFile = File(filename, 'w') if !destFile.isOpen - cout << 'ERROR: cannot open output file: ' << filename << '\n' // IGNORE-ERROR for test.py - cout << 'Aborting.\n' - exit(1) + reportError(Location(), toString('cannot open output file: ', filename).asStringRef) for token = tokens.all destFile write token.content From 63d600f4e2510f4d603354f7c2530d25e59990bb Mon Sep 17 00:00:00 2001 From: Lucian Radu Teodorescu Date: Sun, 5 May 2019 16:13:07 +0300 Subject: [PATCH 11/23] FormatTool: allow in-place editing Pass '-i' flag to the formatTool executable. --- tools/formatTool.spr | 55 ++++++++++++++++++++++++++++---------------- 1 file changed, 35 insertions(+), 20 deletions(-) diff --git a/tools/formatTool.spr b/tools/formatTool.spr index d2975c45..c588d268 100644 --- a/tools/formatTool.spr +++ b/tools/formatTool.spr @@ -8,42 +8,57 @@ using TransformFun = FunctionPtr(VoidType, @SourceData) fun sprMain if programArgs.size() < 2 - _printArgsError - var cmd = programArgs(1) - var filename = programArgs(2) + _printArgsError('not enough arguments') + var filename = '' + var inPlace = false var transformFun: TransformFun - if cmd == '-format' ; transformFun = \_defaultFormat - else if cmd == '-f=empty' ; transformFun = \_emptyTransform - else if cmd == '-f=ref-to-mut' ; transformFun = \_refToMut - else - _printArgsError + for i=1..programArgs.size + var arg = programArgs(i) + + if arg == '-format' ; transformFun = \_defaultFormat + else if arg == '-f=empty' ; transformFun = \_emptyTransform + else if arg == '-f=ref-to-mut' ; transformFun = \_refToMut + else if arg == '-i' ; inPlace = true + else if arg.size > 0 && arg(0) == '-'.char + // This looks like a flag, but we don't recognize it + _printArgsError(toString('invalid argument: "', arg, '"').asStringRef) + else if !filename.isEmpty + // Another filename? + _printArgsError('can only have one filename') + else + filename = arg + + if filename.isEmpty + // No filename? + _printArgsError('no filename given') // TODO -c == check - doTransform(filename, transformFun) - - -fun _printArgsError - cout << 'ERROR: invalid arguments passed\n\n' // IGNORE-ERROR for test.py - cout << 'Usage:\n' - cout << ' ' << programArgs(0) << ' -format \n\n' - exit(1) - -fun doTransform(filename: StringRef, transform: TransformFun) + // Load the source data var sourceData: SourceData sourceData load filename // Transform the tokens - transform(sourceData) + transformFun(sourceData) - sourceData.tokens _writeToStdout + // Write the output + if inPlace + sourceData.tokens _writeToFile filename + else + sourceData.tokens _writeToStdout // Write all the tokens to file //var destFilename = toString(filename, ".formatted") //sourceData.tokens _writeToFile destFilename.asStringRef +fun _printArgsError(msg: StringRef) + cout << 'ERROR: Invalid arguments passed (' << msg << ')\n\n' // IGNORE-ERROR for test.py + cout << 'Usage:\n' + cout << ' ' << programArgs(0) << ' -i -format \n\n' + exit(1) + fun _writeToStdout(tokens: @TokenVector) for token = tokens.all cout << token.content From 34f6ba57953e4f27dfe3e3d455fd05cbedfa3f99 Mon Sep 17 00:00:00 2001 From: Lucian Radu Teodorescu Date: Sun, 5 May 2019 16:54:17 +0300 Subject: [PATCH 12/23] Add option to disable formatting for marked regions Also add formatTool as an explicit check on Travis --- .travis/run.sh | 1 + SparrowImplicitLib/sprCore/basicDecls.spr | 9 ++++-- tools/formatDetails/tokenData.spr | 1 + tools/formatTool.spr | 38 ++++++++++++++++++++--- 4 files changed, 42 insertions(+), 7 deletions(-) diff --git a/.travis/run.sh b/.travis/run.sh index a89b23d2..a1b933d9 100755 --- a/.travis/run.sh +++ b/.travis/run.sh @@ -28,3 +28,4 @@ cd ../tests python test.py StdLib/RangesTest.spr --returnError python test.py --returnError +python test.py ../tools/formatTool.spr --returnError diff --git a/SparrowImplicitLib/sprCore/basicDecls.spr b/SparrowImplicitLib/sprCore/basicDecls.spr index 93e2521d..d12fcf66 100644 --- a/SparrowImplicitLib/sprCore/basicDecls.spr +++ b/SparrowImplicitLib/sprCore/basicDecls.spr @@ -653,15 +653,18 @@ datatype StringRef fun size(this: @StringRef): SizeType = ptrDiff(end, begin) fun front(this: @StringRef): @Char = reinterpretCast(@Char, begin) - fun back(this: @StringRef): @Char = reinterpretCast(@Char, ptrAdd(end, -1)) + fun back(this: @StringRef): @Char = reinterpretCast(@Char, ptrSub(end, 1)) fun ()(this: @StringRef) : @Char = reinterpretCast(@Char, begin) fun ()(this: @StringRef, index: SizeType): @Char = reinterpretCast(@Char, ptrAdd(begin, index)) fun at(this: @StringRef, index: SizeType): @Char = reinterpretCast(@Char, ptrAdd(begin, index)) fun popFront(this: @StringRef) { begin := ptrAdd(begin, 1); } - fun popBack(this: @StringRef) { end := ptrAdd(end, -1); } + fun popBack(this: @StringRef) { end := ptrSub(end, 1); } fun popFront(this: @StringRef, n: SizeType) { begin := ptrAdd(begin, n); } - fun popBack(this: @StringRef, n: SizeType) { end := ptrAdd(end, -DiffType(n)); } + fun popBack(this: @StringRef, n: SizeType) { end := ptrSub(end, n); } + + fun subrange(this: @StringRef, index: SizeType, num: SizeType): StringRef + return StringRef(ptrAdd(begin, index), ptrAdd(begin, num)) fun cStr(this: @StringRef): @Char = reinterpretCast(@Char, begin) diff --git a/tools/formatDetails/tokenData.spr b/tools/formatDetails/tokenData.spr index 4af10460..cac39691 100644 --- a/tools/formatDetails/tokenData.spr +++ b/tools/formatDetails/tokenData.spr @@ -13,6 +13,7 @@ datatype TokenData loc: Location content: StringRef parentAst: Node + canFormat: Bool = true //! A vector of tokens using TokenVector = TokenData Vector \ No newline at end of file diff --git a/tools/formatTool.spr b/tools/formatTool.spr index c588d268..42df9177 100644 --- a/tools/formatTool.spr +++ b/tools/formatTool.spr @@ -41,6 +41,7 @@ fun sprMain sourceData load filename // Transform the tokens + _checkDisableFormatting(sourceData) transformFun(sourceData) // Write the output @@ -49,10 +50,6 @@ fun sprMain else sourceData.tokens _writeToStdout - // Write all the tokens to file - //var destFilename = toString(filename, ".formatted") - //sourceData.tokens _writeToFile destFilename.asStringRef - fun _printArgsError(msg: StringRef) cout << 'ERROR: Invalid arguments passed (' << msg << ')\n\n' // IGNORE-ERROR for test.py cout << 'Usage:\n' @@ -72,11 +69,42 @@ fun _writeToFile(tokens: @TokenVector, filename: StringRef) for token = tokens.all destFile write token.content +fun _checkDisableFormatting(src: @SourceData) + var formatOffCount = 0 + for token: @TokenData = src.tokens.all + // Disable formatting if we are in a marked area + if formatOffCount > 0 + token.canFormat = false + + // Check fort star/end of the formatting-off area + if token.type == tkCOMMENT + var commentContent = _getCommentContent(token.content) + if commentContent == 'format off' + formatOffCount++ + else if commentContent == 'format on' && formatOffCount > 0 + formatOffCount-- + +fun _getCommentContent(tokenStr: StringRef): StringRef + var res = tokenStr + if res.subrange(0, 2) == '//' + res popFront 2 + else if res.subrange(0, 2) == '/*' + res popFront 2 + res popBack 2 + // Trim spaces + while !res.isEmpty && isSpace(res.front) + res popFront + while !res.isEmpty && isSpace(res.back) + res popBack + return res + fun _emptyTransform(src: @SourceData) ; fun _defaultFormat(src: @SourceData) for token: @TokenData = src.tokens.all + if !token.canFormat + continue if token.type == tkWHITESPACE && token.content.size > 2 && token.loc.start.col > 1 token.content = " " @@ -85,6 +113,8 @@ fun _refToMut(src: @SourceData) var prev2 = src.tokens(i-2) var prev1 = src.tokens(i-1) var cur: @TokenData = src.tokens(i) + if !cur.canFormat + continue if prev2.type == tkCOLON && prev1.type == tkWHITESPACE && cur.content == '@' cur.content = '!' From b8b544f3d485324969c6a83a46c449bf390ed107 Mon Sep 17 00:00:00 2001 From: Lucian Radu Teodorescu Date: Sun, 5 May 2019 17:04:24 +0300 Subject: [PATCH 13/23] Move the run of formatTool before the tests, to catch errors --- .travis/run.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis/run.sh b/.travis/run.sh index a1b933d9..1d662b0e 100755 --- a/.travis/run.sh +++ b/.travis/run.sh @@ -27,5 +27,5 @@ echo "---------- Testing ----------" cd ../tests python test.py StdLib/RangesTest.spr --returnError -python test.py --returnError python test.py ../tools/formatTool.spr --returnError +python test.py --returnError From ef929b6a8c39b986d46f20850584b93a48c6b766 Mon Sep 17 00:00:00 2001 From: Lucian Radu Teodorescu Date: Sun, 5 May 2019 20:29:42 +0300 Subject: [PATCH 14/23] Commit latest version of parserIf.ll --- src/SparrowFrontend/Grammar/parserIf.ll | 325 ++++++++++++++++-------- 1 file changed, 215 insertions(+), 110 deletions(-) diff --git a/src/SparrowFrontend/Grammar/parserIf.ll b/src/SparrowFrontend/Grammar/parserIf.ll index f9710954..e2b6e572 100644 --- a/src/SparrowFrontend/Grammar/parserIf.ll +++ b/src/SparrowFrontend/Grammar/parserIf.ll @@ -21686,38 +21686,55 @@ define internal %Node @parseModuleName(%"SparrowParser[SparrowLayoutDecoder[Spar %this.addr = alloca %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* store %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %this, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr %tmp.this = alloca %TokenType + %tmp.this1 = alloca %TokenType %qid = alloca %Node %"$tmpForRef" = alloca %Node - %tmp.this1 = alloca %TokenType - %tmp.this2 = alloca %Node + %tmp.this2 = alloca %TokenType + %tmp.this3 = alloca %Node br label %code code: ; preds = %0 - br label %if_block + br label %while_block -if_block: ; preds = %code +while_block: ; preds = %while_step, %code %1 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr - call void @ctor.417(%TokenType* %tmp.this, i32 2) + call void @ctor.417(%TokenType* %tmp.this, i32 31) %2 = load %TokenType, %TokenType* %tmp.this %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, %TokenType %2) - br i1 %3, label %if_then, label %if_end + br i1 %3, label %while_body, label %while_end -if_then: ; preds = %if_block +while_body: ; preds = %while_block + br label %while_step + +while_step: ; preds = %while_body + br label %while_block + +while_end: ; preds = %while_block + br label %if_block + +if_block: ; preds = %while_end %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr - %5 = call %Node @parseQualifiedName(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %4, i1 false) - store %Node %5, %Node* %"$tmpForRef" + call void @ctor.417(%TokenType* %tmp.this1, i32 2) + %5 = load %TokenType, %TokenType* %tmp.this1 + %6 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %4, %TokenType %5) + br i1 %6, label %if_then, label %if_end + +if_then: ; preds = %if_block + %7 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + %8 = call %Node @parseQualifiedName(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %7, i1 false) + store %Node %8, %Node* %"$tmpForRef" call void @ctor.545(%Node* %qid, %Node* %"$tmpForRef") - %6 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr - call void @ctor.417(%TokenType* %tmp.this1, i32 31) - %7 = load %TokenType, %TokenType* %tmp.this1 - %8 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %6, %TokenType %7) - %9 = load %Node, %Node* %qid - ret %Node %9 + %9 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @ctor.417(%TokenType* %tmp.this2, i32 31) + %10 = load %TokenType, %TokenType* %tmp.this2 + %11 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %9, %TokenType %10) + %12 = load %Node, %Node* %qid + ret %Node %12 if_end: ; preds = %dumy_block, %if_block - call void @ctor.556(%Node* %tmp.this2) - %10 = load %Node, %Node* %tmp.this2 - ret %Node %10 + call void @ctor.556(%Node* %tmp.this3) + %13 = load %Node, %Node* %tmp.this3 + ret %Node %13 dumy_block: ; No predecessors! br label %if_end @@ -31877,7 +31894,64 @@ dumy_block20: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal void @ctor.629(%String* %this, i64 %count, i8 %ch) #4 { +define internal i1 @"<.629"(%LineCol* %lhs, %LineCol* %rhs) #4 { + %lhs.addr = alloca %LineCol* + store %LineCol* %lhs, %LineCol** %lhs.addr + %rhs.addr = alloca %LineCol* + store %LineCol* %rhs, %LineCol** %rhs.addr + br label %code + +code: ; preds = %0 + br label %if_block + +if_block: ; preds = %code + %1 = load %LineCol*, %LineCol** %lhs.addr + %2 = getelementptr inbounds %LineCol, %LineCol* %1, i32 0, i32 0 + %3 = load i32, i32* %2 + %4 = load %LineCol*, %LineCol** %rhs.addr + %5 = getelementptr inbounds %LineCol, %LineCol* %4, i32 0, i32 0 + %6 = load i32, i32* %5 + %7 = icmp slt i32 %3, %6 + br i1 %7, label %if_then, label %if_end + +if_then: ; preds = %if_block + ret i1 true + +if_end: ; preds = %dumy_block, %if_block + br label %if_block1 + +dumy_block: ; No predecessors! + br label %if_end + +if_block1: ; preds = %if_end + %8 = load %LineCol*, %LineCol** %lhs.addr + %9 = getelementptr inbounds %LineCol, %LineCol* %8, i32 0, i32 0 + %10 = load i32, i32* %9 + %11 = load %LineCol*, %LineCol** %rhs.addr + %12 = getelementptr inbounds %LineCol, %LineCol* %11, i32 0, i32 0 + %13 = load i32, i32* %12 + %14 = icmp sgt i32 %10, %13 + br i1 %14, label %if_then2, label %if_end3 + +if_then2: ; preds = %if_block1 + ret i1 false + +if_end3: ; preds = %dumy_block4, %if_block1 + %15 = load %LineCol*, %LineCol** %lhs.addr + %16 = getelementptr inbounds %LineCol, %LineCol* %15, i32 0, i32 1 + %17 = load i32, i32* %16 + %18 = load %LineCol*, %LineCol** %rhs.addr + %19 = getelementptr inbounds %LineCol, %LineCol* %18, i32 0, i32 1 + %20 = load i32, i32* %19 + %21 = icmp slt i32 %17, %20 + ret i1 %21 + +dumy_block4: ; No predecessors! + br label %if_end3 +} + +; Function Attrs: inlinehint nounwind +define internal void @ctor.630(%String* %this, i64 %count, i8 %ch) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr %count.addr = alloca i64 @@ -31901,7 +31975,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @ctor.630(%String* %this, %"RawPtr[Char]" %_begin, %"RawPtr[Char]" %_end) #4 { +define internal void @ctor.631(%String* %this, %"RawPtr[Char]" %_begin, %"RawPtr[Char]" %_end) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr %_begin.addr = alloca %"RawPtr[Char]" @@ -31953,7 +32027,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i8* @at.631(%String* %this, i64 %index) #4 { +define internal i8* @at.632(%String* %this, i64 %index) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr %index.addr = alloca i64 @@ -31976,7 +32050,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i8* @front.632(%String* %this) #4 { +define internal i8* @front.633(%String* %this) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr br label %code @@ -31990,7 +32064,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i8* @back.633(%String* %this) #4 { +define internal i8* @back.634(%String* %this) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr %"$tmpC" = alloca %"RawPtr[Char]" @@ -32224,7 +32298,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @remove.634(%String* %this, i64 %index) #4 { +define internal void @remove.635(%String* %this, i64 %index) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr %index.addr = alloca i64 @@ -32254,7 +32328,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @"+.635"(%String* sret %_result, %String %x, %String %y) #4 { +define internal void @"+.636"(%String* sret %_result, %String %x, %String %y) #4 { %_result.addr = alloca %String* store %String* %_result, %String** %_result.addr %x.addr = alloca %String @@ -32306,7 +32380,7 @@ dumy_block: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal void @"+.636"(%String* sret %_result, %String %x, %StringRef %y) #4 { +define internal void @"+.637"(%String* sret %_result, %String %x, %StringRef %y) #4 { %_result.addr = alloca %String* store %String* %_result, %String** %_result.addr %x.addr = alloca %String @@ -32357,7 +32431,7 @@ dumy_block: ; No predecessors! } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.637(%StringOutputStream* %this, %StringOutputStream* %other) #3 { +define internal void @ctor.638(%StringOutputStream* %this, %StringOutputStream* %other) #3 { %this.addr = alloca %StringOutputStream* store %StringOutputStream* %this, %StringOutputStream** %this.addr %other.addr = alloca %StringOutputStream* @@ -32374,7 +32448,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.638"(%StringOutputStream* %this, %StringOutputStream* %other) #3 { +define internal void @"=.639"(%StringOutputStream* %this, %StringOutputStream* %other) #3 { %this.addr = alloca %StringOutputStream* store %StringOutputStream* %this, %StringOutputStream** %this.addr %other.addr = alloca %StringOutputStream* @@ -32391,7 +32465,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.639"(%StringOutputStream* %this, %StringOutputStream* %other) #3 { +define internal i1 @"==.640"(%StringOutputStream* %this, %StringOutputStream* %other) #3 { %this.addr = alloca %StringOutputStream* store %StringOutputStream* %this, %StringOutputStream** %this.addr %other.addr = alloca %StringOutputStream* @@ -32408,7 +32482,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"<<<.640"(%StringOutputStream* %this, %String* %s) #3 { +define internal void @"<<<.641"(%StringOutputStream* %this, %String* %s) #3 { %this.addr = alloca %StringOutputStream* store %StringOutputStream* %this, %StringOutputStream** %this.addr %s.addr = alloca %String* @@ -32425,7 +32499,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"<<<.641"(%StringOutputStream* %this, double %x) #3 { +define internal void @"<<<.642"(%StringOutputStream* %this, double %x) #3 { %this.addr = alloca %StringOutputStream* store %StringOutputStream* %this, %StringOutputStream** %this.addr %x.addr = alloca double @@ -32449,7 +32523,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @toString.642(%String* sret %_result) #4 { +define internal void @toString.643(%String* sret %_result) #4 { %_result.addr = alloca %String* store %String* %_result, %String** %_result.addr br label %code @@ -32461,7 +32535,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.643(%"ContiguousMemoryRange[LocString]"* %this) #3 { +define internal void @ctor.644(%"ContiguousMemoryRange[LocString]"* %this) #3 { %this.addr = alloca %"ContiguousMemoryRange[LocString]"* store %"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"** %this.addr br label %code @@ -32477,7 +32551,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.644(%"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"* %other) #3 { +define internal void @ctor.645(%"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"* %other) #3 { %this.addr = alloca %"ContiguousMemoryRange[LocString]"* store %"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"** %this.addr %other.addr = alloca %"ContiguousMemoryRange[LocString]"* @@ -32499,7 +32573,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.645(%"ContiguousMemoryRange[LocString]"* %this) #3 { +define internal void @dtor.646(%"ContiguousMemoryRange[LocString]"* %this) #3 { %this.addr = alloca %"ContiguousMemoryRange[LocString]"* store %"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"** %this.addr br label %code @@ -32509,7 +32583,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.646"(%"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"* %other) #3 { +define internal void @"=.647"(%"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"* %other) #3 { %this.addr = alloca %"ContiguousMemoryRange[LocString]"* store %"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"** %this.addr %other.addr = alloca %"ContiguousMemoryRange[LocString]"* @@ -32531,7 +32605,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.647"(%"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"* %other) #3 { +define internal i1 @"==.648"(%"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"* %other) #3 { %this.addr = alloca %"ContiguousMemoryRange[LocString]"* store %"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"** %this.addr %other.addr = alloca %"ContiguousMemoryRange[LocString]"* @@ -32563,7 +32637,7 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.648(%"ContiguousMemoryRange[Char]"* %this) #3 { +define internal void @ctor.649(%"ContiguousMemoryRange[Char]"* %this) #3 { %this.addr = alloca %"ContiguousMemoryRange[Char]"* store %"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"** %this.addr br label %code @@ -32579,7 +32653,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.649(%"ContiguousMemoryRange[Char]"* %this) #3 { +define internal void @dtor.650(%"ContiguousMemoryRange[Char]"* %this) #3 { %this.addr = alloca %"ContiguousMemoryRange[Char]"* store %"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"** %this.addr br label %code @@ -32589,7 +32663,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.650"(%"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"* %other) #3 { +define internal void @"=.651"(%"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"* %other) #3 { %this.addr = alloca %"ContiguousMemoryRange[Char]"* store %"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"** %this.addr %other.addr = alloca %"ContiguousMemoryRange[Char]"* @@ -32611,7 +32685,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.651"(%"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"* %other) #3 { +define internal i1 @"==.652"(%"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"* %other) #3 { %this.addr = alloca %"ContiguousMemoryRange[Char]"* store %"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"** %this.addr %other.addr = alloca %"ContiguousMemoryRange[Char]"* @@ -32643,7 +32717,7 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.652(%"ContiguousMemoryRange[Token]"* %this) #3 { +define internal void @ctor.653(%"ContiguousMemoryRange[Token]"* %this) #3 { %this.addr = alloca %"ContiguousMemoryRange[Token]"* store %"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"** %this.addr br label %code @@ -32659,7 +32733,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.653(%"ContiguousMemoryRange[Token]"* %this) #3 { +define internal void @dtor.654(%"ContiguousMemoryRange[Token]"* %this) #3 { %this.addr = alloca %"ContiguousMemoryRange[Token]"* store %"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"** %this.addr br label %code @@ -32669,7 +32743,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.654"(%"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"* %other) #3 { +define internal void @"=.655"(%"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"* %other) #3 { %this.addr = alloca %"ContiguousMemoryRange[Token]"* store %"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"** %this.addr %other.addr = alloca %"ContiguousMemoryRange[Token]"* @@ -32691,7 +32765,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.655"(%"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"* %other) #3 { +define internal i1 @"==.656"(%"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"* %other) #3 { %this.addr = alloca %"ContiguousMemoryRange[Token]"* store %"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"** %this.addr %other.addr = alloca %"ContiguousMemoryRange[Token]"* @@ -32723,7 +32797,7 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.656(%"ContiguousMemoryRange[UInt]"* %this, %"RawPtr[UInt]" %f_begin, %"RawPtr[UInt]" %f_end) #3 { +define internal void @ctor.657(%"ContiguousMemoryRange[UInt]"* %this, %"RawPtr[UInt]" %f_begin, %"RawPtr[UInt]" %f_end) #3 { %this.addr = alloca %"ContiguousMemoryRange[UInt]"* store %"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"** %this.addr %f_begin.addr = alloca %"RawPtr[UInt]" @@ -32743,7 +32817,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.657(%"ContiguousMemoryRange[UInt]"* %this) #3 { +define internal void @ctor.658(%"ContiguousMemoryRange[UInt]"* %this) #3 { %this.addr = alloca %"ContiguousMemoryRange[UInt]"* store %"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"** %this.addr br label %code @@ -32759,7 +32833,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.658(%"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"* %other) #3 { +define internal void @ctor.659(%"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"* %other) #3 { %this.addr = alloca %"ContiguousMemoryRange[UInt]"* store %"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"** %this.addr %other.addr = alloca %"ContiguousMemoryRange[UInt]"* @@ -32781,7 +32855,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.659(%"ContiguousMemoryRange[UInt]"* %this) #3 { +define internal void @dtor.660(%"ContiguousMemoryRange[UInt]"* %this) #3 { %this.addr = alloca %"ContiguousMemoryRange[UInt]"* store %"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"** %this.addr br label %code @@ -32791,7 +32865,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.660"(%"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"* %other) #3 { +define internal void @"=.661"(%"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"* %other) #3 { %this.addr = alloca %"ContiguousMemoryRange[UInt]"* store %"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"** %this.addr %other.addr = alloca %"ContiguousMemoryRange[UInt]"* @@ -32813,7 +32887,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.661"(%"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"* %other) #3 { +define internal i1 @"==.662"(%"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"* %other) #3 { %this.addr = alloca %"ContiguousMemoryRange[UInt]"* store %"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"** %this.addr %other.addr = alloca %"ContiguousMemoryRange[UInt]"* @@ -32845,7 +32919,7 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.662(%"RawPtr[LocString]"* %this) #3 { +define internal void @dtor.663(%"RawPtr[LocString]"* %this) #3 { %this.addr = alloca %"RawPtr[LocString]"* store %"RawPtr[LocString]"* %this, %"RawPtr[LocString]"** %this.addr br label %code @@ -32855,7 +32929,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.663(%"RawPtr[Token]"* %this) #3 { +define internal void @dtor.664(%"RawPtr[Token]"* %this) #3 { %this.addr = alloca %"RawPtr[Token]"* store %"RawPtr[Token]"* %this, %"RawPtr[Token]"** %this.addr br label %code @@ -32865,7 +32939,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.664(%"RawPtr[UInt]"* %this) #3 { +define internal void @dtor.665(%"RawPtr[UInt]"* %this) #3 { %this.addr = alloca %"RawPtr[UInt]"* store %"RawPtr[UInt]"* %this, %"RawPtr[UInt]"** %this.addr br label %code @@ -32875,7 +32949,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.665(%"NumericRangeInc[Int]"* %this) #3 { +define internal void @ctor.666(%"NumericRangeInc[Int]"* %this) #3 { %this.addr = alloca %"NumericRangeInc[Int]"* store %"NumericRangeInc[Int]"* %this, %"NumericRangeInc[Int]"** %this.addr br label %code @@ -32894,7 +32968,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.666(%"NumericRangeInc[Int]"* %this, %"NumericRangeInc[Int]"* %other) #3 { +define internal void @ctor.667(%"NumericRangeInc[Int]"* %this, %"NumericRangeInc[Int]"* %other) #3 { %this.addr = alloca %"NumericRangeInc[Int]"* store %"NumericRangeInc[Int]"* %this, %"NumericRangeInc[Int]"** %this.addr %other.addr = alloca %"NumericRangeInc[Int]"* @@ -32924,7 +32998,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.667"(%"NumericRangeInc[Int]"* %this, %"NumericRangeInc[Int]"* %other) #3 { +define internal void @"=.668"(%"NumericRangeInc[Int]"* %this, %"NumericRangeInc[Int]"* %other) #3 { %this.addr = alloca %"NumericRangeInc[Int]"* store %"NumericRangeInc[Int]"* %this, %"NumericRangeInc[Int]"** %this.addr %other.addr = alloca %"NumericRangeInc[Int]"* @@ -32954,7 +33028,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.668"(%"NumericRangeInc[Int]"* %this, %"NumericRangeInc[Int]"* %other) #3 { +define internal i1 @"==.669"(%"NumericRangeInc[Int]"* %this, %"NumericRangeInc[Int]"* %other) #3 { %this.addr = alloca %"NumericRangeInc[Int]"* store %"NumericRangeInc[Int]"* %this, %"NumericRangeInc[Int]"** %this.addr %other.addr = alloca %"NumericRangeInc[Int]"* @@ -33095,7 +33169,7 @@ declare double @llvm.truc.f64(double) declare double @llvm.rint.f64(double) #6 ; Function Attrs: alwaysinline nounwind -define internal void @ctor.669(%"Vector[LocString]"* %this, %"Vector[LocString]"* %other) #3 { +define internal void @ctor.670(%"Vector[LocString]"* %this, %"Vector[LocString]"* %other) #3 { %this.addr = alloca %"Vector[LocString]"* store %"Vector[LocString]"* %this, %"Vector[LocString]"** %this.addr %other.addr = alloca %"Vector[LocString]"* @@ -33122,7 +33196,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.670(%"Vector[LocString]"* %this) #3 { +define internal void @dtor.671(%"Vector[LocString]"* %this) #3 { %this.addr = alloca %"Vector[LocString]"* store %"Vector[LocString]"* %this, %"Vector[LocString]"** %this.addr br label %code @@ -33132,7 +33206,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.671"(%"Vector[LocString]"* %this, %"Vector[LocString]"* %other) #3 { +define internal void @"=.672"(%"Vector[LocString]"* %this, %"Vector[LocString]"* %other) #3 { %this.addr = alloca %"Vector[LocString]"* store %"Vector[LocString]"* %this, %"Vector[LocString]"** %this.addr %other.addr = alloca %"Vector[LocString]"* @@ -33159,7 +33233,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.672"(%"Vector[LocString]"* %this, %"Vector[LocString]"* %other) #3 { +define internal i1 @"==.673"(%"Vector[LocString]"* %this, %"Vector[LocString]"* %other) #3 { %this.addr = alloca %"Vector[LocString]"* store %"Vector[LocString]"* %this, %"Vector[LocString]"** %this.addr %other.addr = alloca %"Vector[LocString]"* @@ -33206,7 +33280,7 @@ cond.end3: ; preds = %cond.false2, %cond. } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.673(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #3 { +define internal void @ctor.674(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #3 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr %other.addr = alloca %"Vector[Char]"* @@ -33233,7 +33307,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.674(%"Vector[Char]"* %this) #3 { +define internal void @dtor.675(%"Vector[Char]"* %this) #3 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr br label %code @@ -33243,7 +33317,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.675"(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #3 { +define internal void @"=.676"(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #3 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr %other.addr = alloca %"Vector[Char]"* @@ -33270,7 +33344,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.676"(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #3 { +define internal i1 @"==.677"(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #3 { %this.addr = alloca %"Vector[Char]"* store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr %other.addr = alloca %"Vector[Char]"* @@ -33317,7 +33391,7 @@ cond.end3: ; preds = %cond.false2, %cond. } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.677(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #3 { +define internal void @ctor.678(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #3 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr %other.addr = alloca %"Vector[Token]"* @@ -33344,7 +33418,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.678(%"Vector[Token]"* %this) #3 { +define internal void @dtor.679(%"Vector[Token]"* %this) #3 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr br label %code @@ -33354,7 +33428,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.679"(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #3 { +define internal void @"=.680"(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #3 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr %other.addr = alloca %"Vector[Token]"* @@ -33381,7 +33455,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.680"(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #3 { +define internal i1 @"==.681"(%"Vector[Token]"* %this, %"Vector[Token]"* %other) #3 { %this.addr = alloca %"Vector[Token]"* store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr %other.addr = alloca %"Vector[Token]"* @@ -33428,7 +33502,7 @@ cond.end3: ; preds = %cond.false2, %cond. } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.681(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #3 { +define internal void @ctor.682(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #3 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr %other.addr = alloca %"Vector[UInt]"* @@ -33455,7 +33529,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.682(%"Vector[UInt]"* %this) #3 { +define internal void @dtor.683(%"Vector[UInt]"* %this) #3 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr br label %code @@ -33465,7 +33539,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.683"(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #3 { +define internal void @"=.684"(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #3 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr %other.addr = alloca %"Vector[UInt]"* @@ -33492,7 +33566,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.684"(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #3 { +define internal i1 @"==.685"(%"Vector[UInt]"* %this, %"Vector[UInt]"* %other) #3 { %this.addr = alloca %"Vector[UInt]"* store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr %other.addr = alloca %"Vector[UInt]"* @@ -33547,7 +33621,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.685(%ErrorReporter* %this) #3 { +define internal void @dtor.686(%ErrorReporter* %this) #3 { %this.addr = alloca %ErrorReporter* store %ErrorReporter* %this, %ErrorReporter** %this.addr br label %code @@ -33557,7 +33631,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @reportError.686(%ErrorReporter %obj, %Location* %loc, %StringRef %msg) #4 { +define internal void @reportError.687(%ErrorReporter %obj, %Location* %loc, %StringRef %msg) #4 { %obj.addr = alloca %ErrorReporter store %ErrorReporter %obj, %ErrorReporter* %obj.addr %loc.addr = alloca %Location* @@ -33577,7 +33651,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.687(%AstBuilder* %this) #3 { +define internal void @dtor.688(%AstBuilder* %this) #3 { %this.addr = alloca %AstBuilder* store %AstBuilder* %this, %AstBuilder** %this.addr br label %code @@ -33763,7 +33837,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.688(%File* %this) #3 { +define internal void @ctor.689(%File* %this) #3 { %this.addr = alloca %File* store %File* %this, %File** %this.addr br label %code @@ -33776,7 +33850,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.689(%File* %this, %File* %other) #3 { +define internal void @ctor.690(%File* %this, %File* %other) #3 { %this.addr = alloca %File* store %File* %this, %File** %this.addr %other.addr = alloca %File* @@ -33794,7 +33868,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.690(%File* %this) #3 { +define internal void @dtor.691(%File* %this) #3 { %this.addr = alloca %File* store %File* %this, %File** %this.addr br label %code @@ -33804,7 +33878,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.691"(%File* %this, %File* %other) #3 { +define internal void @"=.692"(%File* %this, %File* %other) #3 { %this.addr = alloca %File* store %File* %this, %File** %this.addr %other.addr = alloca %File* @@ -33822,7 +33896,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.692"(%File* %this, %File* %other) #3 { +define internal i1 @"==.693"(%File* %this, %File* %other) #3 { %this.addr = alloca %File* store %File* %this, %File** %this.addr %other.addr = alloca %File* @@ -33841,7 +33915,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @ctor.693(%File* %this) #4 { +define internal void @ctor.694(%File* %this) #4 { %this.addr = alloca %File* store %File* %this, %File** %this.addr br label %code @@ -33857,7 +33931,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @ctor.694(%File* %this, i8* %handle) #4 { +define internal void @ctor.695(%File* %this, i8* %handle) #4 { %this.addr = alloca %File* store %File* %this, %File** %this.addr %handle.addr = alloca i8* @@ -33876,7 +33950,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @ctor.695(%File* %this, %File* %other) #4 { +define internal void @ctor.696(%File* %this, %File* %other) #4 { %this.addr = alloca %File* store %File* %this, %File** %this.addr %other.addr = alloca %File* @@ -33900,7 +33974,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @dtor.696(%File* %this) #4 { +define internal void @dtor.697(%File* %this) #4 { %this.addr = alloca %File* store %File* %this, %File** %this.addr br label %code @@ -33956,7 +34030,7 @@ code: ; preds = %0 declare void @fclose(i8*) ; Function Attrs: inlinehint nounwind -define internal void @"=.697"(%File* %this, %File* %other) #4 { +define internal void @"=.698"(%File* %this, %File* %other) #4 { %this.addr = alloca %File* store %File* %this, %File** %this.addr %other.addr = alloca %File* @@ -33991,12 +34065,12 @@ code: ; preds = %0 %2 = call i8* @cStr(%StringRef* %filename.addr) %3 = call i8* @cStr(%StringRef* %mode.addr) %4 = call i8* @fopen(i8* %2, i8* %3) - call void @ctor.694(%File* %1, i8* %4) + call void @ctor.695(%File* %1, i8* %4) ret void } ; Function Attrs: inlinehint nounwind -define internal i32 @flush.698(%File* %this) #4 { +define internal i32 @flush.699(%File* %this) #4 { %this.addr = alloca %File* store %File* %this, %File** %this.addr br label %code @@ -34076,7 +34150,38 @@ dumy_block: ; No predecessors! declare i8* @fgets(i8*, i32, i8*) ; Function Attrs: inlinehint nounwind -define internal void @all.699(%FileRange* sret %_result, %File* %this) #4 { +define internal i32 @write(%File* %this, %StringRef %data) #4 { + %this.addr = alloca %File* + store %File* %this, %File** %this.addr + %data.addr = alloca %StringRef + store %StringRef %data, %StringRef* %data.addr + %res = alloca i32 + %tmp.this = alloca i32 + %tmp.this1 = alloca i32 + br label %code + +code: ; preds = %0 + %1 = getelementptr inbounds %StringRef, %StringRef* %data.addr, i32 0, i32 0 + %2 = load i8*, i8** %1 + store i32 1, i32* %tmp.this + %3 = load i32, i32* %tmp.this + %4 = call i64 @size(%StringRef* %data.addr) + %5 = trunc i64 %4 to i32 + store i32 %5, i32* %tmp.this1 + %6 = load i32, i32* %tmp.this1 + %7 = load %File*, %File** %this.addr + %8 = getelementptr inbounds %File, %File* %7, i32 0, i32 0 + %9 = load i8*, i8** %8 + %10 = call i32 @fwrite(i8* %2, i32 %3, i32 %6, i8* %9) + store i32 %10, i32* %res + %11 = load i32, i32* %res + ret i32 %11 +} + +declare i32 @fwrite(i8*, i32, i32, i8*) + +; Function Attrs: inlinehint nounwind +define internal void @all.700(%FileRange* sret %_result, %File* %this) #4 { %_result.addr = alloca %FileRange* store %FileRange* %_result, %FileRange** %_result.addr %this.addr = alloca %File* @@ -34086,12 +34191,12 @@ define internal void @all.699(%FileRange* sret %_result, %File* %this) #4 { code: ; preds = %0 %1 = load %FileRange*, %FileRange** %_result.addr %2 = load %File*, %File** %this.addr - call void @ctor.700(%FileRange* %1, %File* %2) + call void @ctor.701(%FileRange* %1, %File* %2) ret void } ; Function Attrs: inlinehint nounwind -define internal void @ctor.700(%FileRange* %this, %File* %file) #4 { +define internal void @ctor.701(%FileRange* %this, %File* %file) #4 { %this.addr = alloca %FileRange* store %FileRange* %this, %FileRange** %this.addr %file.addr = alloca %File* @@ -34143,7 +34248,7 @@ if_end: ; preds = %if_then, %if_block } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.701(%FileRange* %this) #3 { +define internal void @ctor.702(%FileRange* %this) #3 { %this.addr = alloca %FileRange* store %FileRange* %this, %FileRange** %this.addr br label %code @@ -34162,7 +34267,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.702(%FileRange* %this, %FileRange* %other) #3 { +define internal void @ctor.703(%FileRange* %this, %FileRange* %other) #3 { %this.addr = alloca %FileRange* store %FileRange* %this, %FileRange** %this.addr %other.addr = alloca %FileRange* @@ -34192,7 +34297,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.703(%FileRange* %this) #3 { +define internal void @dtor.704(%FileRange* %this) #3 { %this.addr = alloca %FileRange* store %FileRange* %this, %FileRange** %this.addr br label %code @@ -34202,7 +34307,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.704"(%FileRange* %this, %FileRange* %other) #3 { +define internal void @"=.705"(%FileRange* %this, %FileRange* %other) #3 { %this.addr = alloca %FileRange* store %FileRange* %this, %FileRange** %this.addr %other.addr = alloca %FileRange* @@ -34232,7 +34337,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.705"(%FileRange* %this, %FileRange* %other) #3 { +define internal i1 @"==.706"(%FileRange* %this, %FileRange* %other) #3 { %this.addr = alloca %FileRange* store %FileRange* %this, %FileRange** %this.addr %other.addr = alloca %FileRange* @@ -34287,7 +34392,7 @@ cond.end3: ; preds = %cond.false2, %cond. } ; Function Attrs: inlinehint nounwind -define internal i1 @isEmpty.706(%FileRange* %s) #4 { +define internal i1 @isEmpty.707(%FileRange* %s) #4 { %s.addr = alloca %FileRange* store %FileRange* %s, %FileRange** %s.addr br label %code @@ -34300,7 +34405,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i8 @front.707(%FileRange* %s) #4 { +define internal i8 @front.708(%FileRange* %s) #4 { %s.addr = alloca %FileRange* store %FileRange* %s, %FileRange** %s.addr br label %code @@ -34313,7 +34418,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @popFront.708(%FileRange* %s) #4 { +define internal void @popFront.709(%FileRange* %s) #4 { %s.addr = alloca %FileRange* store %FileRange* %s, %FileRange** %s.addr br label %code @@ -34348,7 +34453,7 @@ if_end: ; preds = %if_then, %if_block declare i32 @fread(i8*, i32, i32, i8*) ; Function Attrs: alwaysinline nounwind -define internal void @ctor.709(%FileCharSource* %this) #3 { +define internal void @ctor.710(%FileCharSource* %this) #3 { %this.addr = alloca %FileCharSource* store %FileCharSource* %this, %FileCharSource** %this.addr br label %code @@ -34356,12 +34461,12 @@ define internal void @ctor.709(%FileCharSource* %this) #3 { code: ; preds = %0 %1 = load %FileCharSource*, %FileCharSource** %this.addr %2 = getelementptr inbounds %FileCharSource, %FileCharSource* %1, i32 0, i32 0 - call void @ctor.693(%File* %2) + call void @ctor.694(%File* %2) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.710(%FileCharSource* %this, %FileCharSource* %other) #3 { +define internal void @ctor.711(%FileCharSource* %this, %FileCharSource* %other) #3 { %this.addr = alloca %FileCharSource* store %FileCharSource* %this, %FileCharSource** %this.addr %other.addr = alloca %FileCharSource* @@ -34373,12 +34478,12 @@ code: ; preds = %0 %2 = getelementptr inbounds %FileCharSource, %FileCharSource* %1, i32 0, i32 0 %3 = load %FileCharSource*, %FileCharSource** %other.addr %4 = getelementptr inbounds %FileCharSource, %FileCharSource* %3, i32 0, i32 0 - call void @ctor.695(%File* %2, %File* %4) + call void @ctor.696(%File* %2, %File* %4) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.711(%FileCharSource* %this) #3 { +define internal void @dtor.712(%FileCharSource* %this) #3 { %this.addr = alloca %FileCharSource* store %FileCharSource* %this, %FileCharSource** %this.addr br label %code @@ -34386,12 +34491,12 @@ define internal void @dtor.711(%FileCharSource* %this) #3 { code: ; preds = %0 %1 = load %FileCharSource*, %FileCharSource** %this.addr %2 = getelementptr inbounds %FileCharSource, %FileCharSource* %1, i32 0, i32 0 - call void @dtor.696(%File* %2) + call void @dtor.697(%File* %2) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @"=.712"(%FileCharSource* %this, %FileCharSource* %other) #3 { +define internal void @"=.713"(%FileCharSource* %this, %FileCharSource* %other) #3 { %this.addr = alloca %FileCharSource* store %FileCharSource* %this, %FileCharSource** %this.addr %other.addr = alloca %FileCharSource* @@ -34403,12 +34508,12 @@ code: ; preds = %0 %2 = getelementptr inbounds %FileCharSource, %FileCharSource* %1, i32 0, i32 0 %3 = load %FileCharSource*, %FileCharSource** %other.addr %4 = getelementptr inbounds %FileCharSource, %FileCharSource* %3, i32 0, i32 0 - call void @"=.697"(%File* %2, %File* %4) + call void @"=.698"(%File* %2, %File* %4) ret void } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.713"(%FileCharSource* %this, %FileCharSource* %other) #3 { +define internal i1 @"==.714"(%FileCharSource* %this, %FileCharSource* %other) #3 { %this.addr = alloca %FileCharSource* store %FileCharSource* %this, %FileCharSource** %this.addr %other.addr = alloca %FileCharSource* @@ -34420,7 +34525,7 @@ code: ; preds = %0 %2 = getelementptr inbounds %FileCharSource, %FileCharSource* %1, i32 0, i32 0 %3 = load %FileCharSource*, %FileCharSource** %other.addr %4 = getelementptr inbounds %FileCharSource, %FileCharSource* %3, i32 0, i32 0 - %5 = call i1 @"==.692"(%File* %2, %File* %4) + %5 = call i1 @"==.693"(%File* %2, %File* %4) ret i1 %5 } From d3601de0cf2ed651fc29f52526e52532b0fc1a1d Mon Sep 17 00:00:00 2001 From: Lucian Radu Teodorescu Date: Sun, 5 May 2019 20:53:44 +0300 Subject: [PATCH 15/23] Basic formatting transformations Formatting transformations: - remove end-of-line semicolons - remove unneeded curly braces --- SparrowImplicitLib/std/vector.spr | 1 + tools/formatDetails/sourceData.spr | 6 +- tools/formatTool.spr | 43 ++++++-------- tools/transforms/defaultFormat.spr | 10 ++++ tools/transforms/emptyTransform.spr | 7 +++ tools/transforms/refToMut.spr | 14 +++++ tools/transforms/removeEolSemicolons.spr | 34 +++++++++++ tools/transforms/useLayout.spr | 73 ++++++++++++++++++++++++ tools/transforms/utils.spr | 52 +++++++++++++++++ 9 files changed, 210 insertions(+), 30 deletions(-) create mode 100644 tools/transforms/defaultFormat.spr create mode 100644 tools/transforms/emptyTransform.spr create mode 100644 tools/transforms/refToMut.spr create mode 100644 tools/transforms/removeEolSemicolons.spr create mode 100644 tools/transforms/useLayout.spr create mode 100644 tools/transforms/utils.spr diff --git a/SparrowImplicitLib/std/vector.spr b/SparrowImplicitLib/std/vector.spr index cab395f9..0c6c3974 100644 --- a/SparrowImplicitLib/std/vector.spr +++ b/SparrowImplicitLib/std/vector.spr @@ -136,6 +136,7 @@ datatype Vector(valueType: Type) fun back(this: @Vector) = _end.advance(-1).value() fun all(this: @Vector) = RangeType(_begin, _end) fun subrange(this: @Vector, index: SizeType, num: SizeType): RangeType = RangeType(_begin.advance(index), _begin.advance(index + num)) + fun subrange(this: @Vector, index: SizeType): RangeType = RangeType(_begin.advance(index), _end) fun insertBefore(this: @Vector, value: this.ValuePassType, pos: this.RangeType) var posCount = pos.frontPtr().diff(_begin) diff --git a/tools/formatDetails/sourceData.spr b/tools/formatDetails/sourceData.spr index 9faec428..dbbf23c4 100644 --- a/tools/formatDetails/sourceData.spr +++ b/tools/formatDetails/sourceData.spr @@ -31,7 +31,7 @@ fun load(res: @SourceData, filename: StringRef) // Do another pass to read the AST res.rootNode = readAst(filename) - // _printAst(res.rootNode) + // printAst(res.rootNode) // Set the parents for the AST nodes _setAstParents(res.rootNode) @@ -77,7 +77,7 @@ fun _astToTokensImpl(node: Node, tokens: @TokenVector, startToken: @Int) fun _containsLoc(bigLoc, tokenLoc: Location): Bool return (bigLoc.start <= tokenLoc.start) && (bigLoc.end >= tokenLoc.end) -fun _printAst(node: Node, indent: Int = 0) +fun printAst(node: Node, indent: Int = 0) for i = 0..indent cout << ' ' cout << '- ' @@ -91,5 +91,5 @@ fun _printAst(node: Node, indent: Int = 0) cout << ' parent:' << ((node parent) kind) cout << '\n' for child = (node children) - _printAst(child, indent+1) + printAst(child, indent+1) diff --git a/tools/formatTool.spr b/tools/formatTool.spr index 42df9177..a1903706 100644 --- a/tools/formatTool.spr +++ b/tools/formatTool.spr @@ -1,10 +1,14 @@ //!! -I../src/SparrowFrontend/Grammar import formatDetails.sourceData +import transforms.emptyTransform, transforms.defaultFormat, transforms.refToMut +import transforms.useLayout, transforms.removeEolSemicolons import os //! The type of a basic transformation function using TransformFun = FunctionPtr(VoidType, @SourceData) +//! A vector of transformations to apply +using Transforms = TransformFun Vector fun sprMain if programArgs.size() < 2 @@ -12,14 +16,16 @@ fun sprMain var filename = '' var inPlace = false - var transformFun: TransformFun + var transforms: Transforms for i=1..programArgs.size var arg = programArgs(i) - if arg == '-format' ; transformFun = \_defaultFormat - else if arg == '-f=empty' ; transformFun = \_emptyTransform - else if arg == '-f=ref-to-mut' ; transformFun = \_refToMut + if arg == '-format' + transforms += \useLayoutFormatter + transforms += \removeEolSemicolons + else if arg == '-f=empty' ; transforms += \emptyTransform + else if arg == '-f=ref-to-mut' ; transforms += \refToMut else if arg == '-i' ; inPlace = true else if arg.size > 0 && arg(0) == '-'.char // This looks like a flag, but we don't recognize it @@ -40,9 +46,12 @@ fun sprMain var sourceData: SourceData sourceData load filename - // Transform the tokens + // Check the regions in which we should disable reformatting _checkDisableFormatting(sourceData) - transformFun(sourceData) + + // Transform the tokens + for trFun = transforms.all + trFun(sourceData) // Write the output if inPlace @@ -98,26 +107,6 @@ fun _getCommentContent(tokenStr: StringRef): StringRef res popBack return res -fun _emptyTransform(src: @SourceData) - ; - -fun _defaultFormat(src: @SourceData) - for token: @TokenData = src.tokens.all - if !token.canFormat - continue - if token.type == tkWHITESPACE && token.content.size > 2 && token.loc.start.col > 1 - token.content = " " - -fun _refToMut(src: @SourceData) - for i = 2..src.tokens.size - var prev2 = src.tokens(i-2) - var prev1 = src.tokens(i-1) - var cur: @TokenData = src.tokens(i) - if !cur.canFormat - continue - if prev2.type == tkCOLON && prev1.type == tkWHITESPACE && cur.content == '@' - cur.content = '!' - - //<< 2 && token.loc.start.col > 1 + token.content = " " diff --git a/tools/transforms/emptyTransform.spr b/tools/transforms/emptyTransform.spr new file mode 100644 index 00000000..e3117337 --- /dev/null +++ b/tools/transforms/emptyTransform.spr @@ -0,0 +1,7 @@ +module formatTool.transforms.emptyTransform + +import formatDetails.sourceData + +fun emptyTransform(src: @SourceData) + ; + diff --git a/tools/transforms/refToMut.spr b/tools/transforms/refToMut.spr new file mode 100644 index 00000000..db4cdb0a --- /dev/null +++ b/tools/transforms/refToMut.spr @@ -0,0 +1,14 @@ +module formatTool.transforms.refToMut + +import formatDetails.sourceData + +fun refToMut(src: @SourceData) + for i = 2..src.tokens.size + var prev2 = src.tokens(i-2) + var prev1 = src.tokens(i-1) + var cur: @TokenData = src.tokens(i) + if !cur.canFormat + continue + if prev2.type == tkCOLON && prev1.type == tkWHITESPACE && cur.content == '@' + cur.content = '!' + diff --git a/tools/transforms/removeEolSemicolons.spr b/tools/transforms/removeEolSemicolons.spr new file mode 100644 index 00000000..30569373 --- /dev/null +++ b/tools/transforms/removeEolSemicolons.spr @@ -0,0 +1,34 @@ +//! Transformation that removes semicolons at the end of the line +module formatTool.transforms.removeEolSemicolons + +import utils +import formatDetails.sourceData + +fun removeEolSemicolons(src: @SourceData) + var parenCount = 0 + for i = 0..Int(src.tokens.size) + var token: @TokenData = src.tokens(i) + var remaining = src.tokens.subrange(i+1) + + if token.canFormat && token.type == tkSEMICOLON && nextIsNewline(remaining) + if !_inEmptyBlockStmt(token) + clearToken(token) + +//! Checks if the token (e.g., semicolon) is in an empty block statement +//! This prevents us to remove semicolons from things like: +//! fun f(n: Int) +//! ; +//! +//! if cond +//! ; +//! else +//! ; +fun _inEmptyBlockStmt(token: @TokenData): Bool + var parent: Node = token.parentAst + if parent.isNull || (parent kind) != nkBlockStmt + return false + for child = (parent children) + if child.isSet + return false + return true + diff --git a/tools/transforms/useLayout.spr b/tools/transforms/useLayout.spr new file mode 100644 index 00000000..4a8de79c --- /dev/null +++ b/tools/transforms/useLayout.spr @@ -0,0 +1,73 @@ +//! Transformation that uses spaces & layout in favor of curly braces +module formatTool.transforms.useLayout + +import utils +import formatDetails.sourceData + +fun useLayoutFormatter(src: @SourceData) + var parenCount = 0 + + var prevLineIndent = 1 + var curLineIndent = 1 + var hasNonSpace = false + var lastLine = 0 // last line that contained a printable token + + var curlyStack: OpenCurlyInfo Vector + + for i = 0..Int(src.tokens.size) + var tok: @TokenData = src.tokens(i) + var remaining = src.tokens.subrange(i+1) + + if tok.type == tkLPAREN + parenCount++ + else if tok.type == tkRPAREN && parenCount > 0 + parenCount-- + + // Check for layout change + if tok.type != tkWHITESPACE && tok.type != tkCOMMENT && tok.type != tkEOL + if tok.loc.start.line != lastLine + prevLineIndent = curLineIndent + curLineIndent = Int(tok.loc.start.col) + lastLine = Int(tok.loc.start.line) + + // Detect open-curly tokens; store the info in our stack + // The decision to remove this or not will be made at the close-curly + if tok.type == tkLCURLY + var canRemove = tok.canFormat && nextIsNewline(remaining) \ + && _getNextLineIndent(remaining) > curLineIndent + curlyStack += OpenCurlyInfo(i, curLineIndent, canRemove) + + if tok.type == tkRCURLY + if curlyStack.isEmpty + reportError(tok.loc, 'Close curly found without the matching open curly') + + // Take the open curly info off our stack + var openInfo = curlyStack.back + curlyStack.popBack + + // Can we remove both tokens? + var canRemove = openInfo.canRemove && tok.canFormat && nextIsNewline(remaining) \ + && prevLineIndent > curLineIndent + if canRemove + clearTokenLine(openInfo.idx, src.tokens) + clearTokenLine(i, src.tokens) + +fun _getNextLineIndent(remaining: TokensRange): Int + if remaining.isEmpty + return 1 + var line = remaining.front().loc.start.line + for tok: @TokenData = remaining + var tk = tok.type + if tk == tkEOL || tk == tkEND || tk == tkWHITESPACE || tk == tkCOMMENT + continue + else + return Int(tok.loc.start.col) + return 1 + +//! Information to be kept for an open-curly. +//! Needed to reason about what to do with the curly-pair, when reaching the close-curly. +[initCtor] +datatype OpenCurlyInfo + idx: Int //!< The index in the tokens vector where the open-curly is found + lineIndent: Int //!< The indent of the line containing the open-curly + canRemove: Bool //!< True if we can eliminate this curly diff --git a/tools/transforms/utils.spr b/tools/transforms/utils.spr new file mode 100644 index 00000000..5a389896 --- /dev/null +++ b/tools/transforms/utils.spr @@ -0,0 +1,52 @@ +//! Various utilities needed for source code transformations +module formatTool.transforms.utils + +import formatDetails.sourceData + +//! The range over our token vector +using TokensRange = TokenVector.RangeType + +//! Clears the given token; transforms it into a whitespace without any content +fun clearToken(token: @TokenData) + token.type = tkWHITESPACE + token.content = '' + +//! Clears the token; if this is the only printable token from the line, remove the entire line. +//! Note that comments would prevent deleting the line +fun clearTokenLine(idx: Int, tokens: @TokenVector) + var tok: @TokenData = tokens(idx) + clearToken(tok) + + // Check if the line has other printable tokens + var line = tok.loc.start.line + var idxStart = idx-1 + while idxStart >= 0 ; idxStart-- + if tokens(idxStart).loc.start.line != line + break + var tok2: @TokenData = tokens(idxStart) + if tok2.type != tkWHITESPACE + return + var idxEnd = idx+1 + while idxEnd < Int(tokens.size) ; idxEnd++ + if tokens(idxEnd).loc.start.line != line + break + var tok2: @TokenData = tokens(idxEnd) + if tok2.type != tkWHITESPACE && tok2.type != tkEOL + return + + // If we are here, it means that all the tokens remaining on the line are whitespace + if tokens(idxStart).loc.start.line != line + idxStart++ + for i = idxStart..idxEnd + clearToken(tokens(i)) + +//! Checks if the next character is a newline (ignoring whitespaces and comments) +fun nextIsNewline(remaining: TokensRange): Bool + for tok: @TokenData = remaining + var tk = tok.type + if tk == tkEOL || tk == tkEND + return true + if tk == tkWHITESPACE || tk == tkCOMMENT + continue + else + return false From 5e3e9c4d8fdf08aef4e4c14e1afdcdba7f7973a1 Mon Sep 17 00:00:00 2001 From: Lucian Radu Teodorescu Date: Sun, 5 May 2019 22:22:49 +0300 Subject: [PATCH 16/23] Fix string invalidation in formatTool Small refactoring in os.spr --- SparrowImplicitLib/os.spr | 72 +++++++++++-------- .../fileCharSourceKeepContent.spr | 7 ++ 2 files changed, 48 insertions(+), 31 deletions(-) diff --git a/SparrowImplicitLib/os.spr b/SparrowImplicitLib/os.spr index 7b268db9..1f8ded26 100644 --- a/SparrowImplicitLib/os.spr +++ b/SparrowImplicitLib/os.spr @@ -6,50 +6,45 @@ import std.string(String) fun exit(code: Int) fun systemCall(cmd: StringRef): Int - return _Impl.system(cmd.cStr) + return CApi.system(cmd.cStr) -datatype File - _handle: @Byte +datatype File = UntypedPtr [protected] fun ctor(this: @File) - _handle := null - - fun ctor(this: @File, handle: @Byte) - this._handle := handle - + ; fun ctor(this: @File, filename: StringRef, mode: StringRef = "r") - this._handle := _Impl.fopen(filename.cStr, mode.cStr) + this.data = CApi.fopen(filename.cStr, mode.cStr).data // Move ctor and operator fun ctor(this, other: @File) - this._handle := other._handle - other._handle := null + this.data = other.data + other.data = UntypedPtr() fun dtor(this: @File) this.close fun =(this, other: @File) - this._handle := other._handle - other._handle := null + this.data = other.data + other.data = UntypedPtr() fun openFile(filename: StringRef, mode: StringRef = "r"): File - return File(_Impl.fopen(filename.cStr, mode.cStr)) + return CApi.fopen(filename.cStr, mode.cStr) fun close(this: @File) if this.isOpen - _Impl.fclose(_handle) - _handle := null + CApi.fclose(this) + data = UntypedPtr() -fun flush(this: @File) = ife(this.isOpen, _Impl.fflush(_handle), -1) +fun flush(this: @File) = ife(this.isOpen, CApi.fflush(this), -1) -fun isOpen(this: @File) = _handle !== null -fun isEof(this: @File) = 0 != _Impl.feof(_handle) +fun isOpen(this: @File) = data != UntypedPtr() +fun isEof(this: @File) = 0 != CApi.feof(this) -fun readChar(this: @File): Char = Char(_Impl.fgetc(_handle)) +fun readChar(this: @File): Char = Char(CApi.fgetc(this)) fun readLine(this: @File): String var res: String = 256 - var cstr: @Char = _Impl.fgets(res(0), 256, _handle) + var cstr: @Char = CApi.fgets(res(0), 256, this) if cstr === null res.clear else @@ -57,7 +52,15 @@ fun readLine(this: @File): String return res fun write(this: @File, data: StringRef): Int - var res: Int = _Impl.fwrite(reinterpretCast(@Byte, data.begin), 1, UInt(data.size), _handle) + var res: Int = CApi.fwrite(reinterpretCast(@Byte, data.begin), 1, UInt(data.size), this) + return res + +//! Returns the file size. +//! Note: as a side effect, seeks the file to the beginning +fun size(this: @File): Int + CApi.fseek(this, 0, CApi.SEEK_END) + var res: Int = CApi.ftell(this) + CApi.rewind(this) return res fun all(this: @File) = FileRange(this) @@ -86,14 +89,21 @@ fun ctor(this: @FileRange, file: @File) if s._file.isEof s._isEmpty = true -package _Impl +package CApi [native("system")] fun system(x: @Char): Int - [native("fopen")] fun fopen(filename, mode: @Char): @Byte - [native("fclose")] fun fclose(handle: @Byte) - [native("fflush")] fun fflush(handle: @Byte): Int - [native("feof")] fun feof(handle: @Byte): Int - [native("fgetc")] fun fgetc(handle: @Byte): Int - [native("fgets")] fun fgets(buffer: @Char, bufSize: Int, handle: @Byte): @Char - [native("fread")] fun fread(buffer: @Byte, size, count: UInt, handle: @Byte): UInt - [native("fwrite")] fun fwrite(buffer: @Byte, size, count: UInt, handle: @Byte): UInt + [native("fopen")] fun fopen(filename, mode: @Char): File + [native("fclose")] fun fclose(file: File) + [native("fflush")] fun fflush(file: File): Int + [native("feof")] fun feof(file: File): Int + [native("fgetc")] fun fgetc(file: File): Int + [native("fgets")] fun fgets(buffer: @Char, bufSize: Int, file: File): @Char + [native("fread")] fun fread(buffer: @Byte, size, count: UInt, file: File): UInt + [native("fwrite")] fun fwrite(buffer: @Byte, size, count: UInt, file: File): UInt + [native("fseek")] fun fseek(file: File, offset: Long, origin: Int) + [native("rewind")] fun rewind(file: File) + [native("ftell")] fun ftell(file: File): Long + + using SEEK_SET = 0 + using SEEK_CUR = 1 + using SEEK_END = 2 diff --git a/tools/formatDetails/fileCharSourceKeepContent.spr b/tools/formatDetails/fileCharSourceKeepContent.spr index 4342f3aa..63a54515 100644 --- a/tools/formatDetails/fileCharSourceKeepContent.spr +++ b/tools/formatDetails/fileCharSourceKeepContent.spr @@ -3,6 +3,7 @@ //! the file content served to the scanner. It's helpful in associating source content with tokens. module formatTool.formatDetails.fileCharSourceKeepContent +import consoleErrorReporter import ext import os, assert, std.ranges @@ -21,10 +22,16 @@ using _This = FileCharSourceKeepContent fun ctor(this: @_This, filename: StringRef) _file ctor filename + if !_file.isOpen + reportError(Location(), toString('Cannot open source file: ', filename).asStringRef) _contentStart = mkLineCol(1, 1) _contentEnd = mkLineCol(1, 1) _contentStartIdx = 0 + // Reserve enough space into our content string + var fileSize = _file.size + _content reserve fileSize + fun isValid(this: @_This) = _file.isOpen fun readChars(this: @_This, dest: @String, numChars: Int) From 559ddbba22803375fbbe40d4a196ff471db95293 Mon Sep 17 00:00:00 2001 From: Lucian Radu Teodorescu Date: Sat, 11 May 2019 13:15:35 +0300 Subject: [PATCH 17/23] Fix memory corruption in the format tool We were not holding the string that was used to store the string content for most of the StringRef object we used for tokens. --- tools/formatDetails/sourceData.spr | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tools/formatDetails/sourceData.spr b/tools/formatDetails/sourceData.spr index dbbf23c4..d95e9213 100644 --- a/tools/formatDetails/sourceData.spr +++ b/tools/formatDetails/sourceData.spr @@ -3,7 +3,7 @@ module formatTool.formatDetails.sourceData import tokenData, tokenDataSource, astNodes, consoleErrorReporter import node -import std.string +import std.string, std.sharedPtr //! Data used to represent a source file. //! @@ -19,6 +19,10 @@ datatype SourceData //! The root node of the AST representing the syntax of the file rootNode: Node + //! The token data source + //! We need to keep this alive, so that all the StringRef point to a valid object + _src: TokenDataSource SharedPtr + //! Load the source data from the given filename. //! Ensures that all the tokens are link to their appropriate AST nodes @@ -26,8 +30,8 @@ fun load(res: @SourceData, filename: StringRef) res.filename = filename // Open the source filename & read the tokens - var src: TokenDataSource = filename - res.tokens assign src.all + res._src = mkShared(TokenDataSource, filename) + res.tokens assign res._src.all // Do another pass to read the AST res.rootNode = readAst(filename) From 204825a067bbd587eba463ab63d4183e4b24ea4d Mon Sep 17 00:00:00 2001 From: Lucian Radu Teodorescu Date: Sat, 11 May 2019 13:51:30 +0300 Subject: [PATCH 18/23] Reformat all the files from tests Removed the old-style use of {}, ';' --- tests/Basic/Auto.spr | 16 +- tests/Basic/CallCtorDtor.spr | 89 +- tests/Basic/CallOperator.spr | 2 - tests/Basic/CompDefines.spr | 8 +- tests/Basic/Compound.spr | 54 +- tests/Basic/Concepts.spr | 88 +- tests/Basic/Convert.spr | 108 +- tests/Basic/CtFactorial.spr | 18 +- tests/Basic/CtFun.spr | 64 +- tests/Basic/CtIf.spr | 34 +- tests/Basic/CtToRt.spr | 38 +- tests/Basic/CtToRtComplex.spr | 54 +- tests/Basic/CtToRtErr.spr | 46 +- tests/Basic/CtorDtor.spr | 44 +- tests/Basic/DefaultParam.spr | 70 +- tests/Basic/DependentTypes.spr | 2 +- tests/Basic/ExternalCtor.spr | 28 +- tests/Basic/FunExp.spr | 48 +- tests/Basic/FunSyntax.spr | 74 +- tests/Basic/Functor.spr | 36 +- tests/Basic/GeneratedCtorDtor.spr | 6 +- tests/Basic/Generics.spr | 94 +- tests/Basic/IfClause.spr | 252 ++-- tests/Basic/ImplicitFunCall.spr | 28 +- tests/Basic/ObjectCopyRVO.spr | 58 +- tests/Basic/Operators.spr | 364 +++--- tests/Basic/Overload.spr | 78 +- tests/Basic/SameName.spr | 26 +- tests/Basic/SparrowImplicitLib.spr | 636 +++++----- tests/Basic/StaticCtorDtor.spr | 26 +- tests/Basic/Stmt.spr | 14 +- tests/Basic/String.spr | 50 +- tests/Basic/This.spr | 4 +- tests/Basic/TypeTraits.spr | 108 +- tests/Basic/TypeVar.spr | 10 +- tests/Basic/ValueToRef.spr | 58 +- tests/Basic/datatype/generic.spr | 2 +- tests/Basic/datatype/initCtor.spr | 2 + tests/Basic/datatype/interaction.spr | 2 +- tests/Basic/datatype/syntax.spr | 6 +- tests/Basic2/Axioms.spr | 36 +- tests/Basic2/ConceptOfGeneric.spr | 2 +- tests/Basic2/ConceptSpecialization.spr | 22 +- tests/Basic2/Conditional.spr | 80 +- tests/Basic2/CtFor.spr | 62 +- tests/Basic2/CtRtCalls.spr | 64 +- tests/Basic2/CtRtParam.spr | 52 +- tests/Basic2/CtWhile.spr | 62 +- tests/Basic2/CustomOperators.spr | 62 +- tests/Basic2/For.spr | 44 +- tests/Basic2/GenericFunRef.spr | 30 +- tests/Basic2/Lambda.spr | 86 +- tests/Basic2/LogicalAndOr.spr | 192 ++- tests/Basic2/Precedence.spr | 14 +- tests/Basic2/Regular.spr | 32 +- tests/Basic2/Swappable.spr | 69 +- tests/Basic2/TypeTraits.spr | 170 ++- tests/BenchmarkGame/fannkuchredux.spr | 72 +- tests/BenchmarkGame/fasta.spr | 90 +- tests/BenchmarkGame/fastaredux.spr | 86 +- tests/BenchmarkGame/meteor.spr | 505 ++++---- tests/BenchmarkGame/nbody.spr | 170 +-- tests/Bugs/GenericWithCtConcept.spr | 2 +- tests/Bugs/NullConstant.spr | 8 +- tests/Bugs/Overload.spr | 22 +- tests/Bugs/ParenInGeneric.spr | 48 +- tests/Bugs/SpecializationOnCt.spr | 48 +- tests/Bugs/StaticGlobal.spr | 16 +- tests/Bugs/TwiceFor.spr | 18 +- tests/Bugs/VectorOfCtClass.spr | 4 +- tests/CompilerApi/ApiSmokeTest.spr | 2 +- tests/CompilerApi/AstFactorial.spr | 104 +- tests/CompilerApi/Diagnostic.spr | 26 +- tests/Examples/MinPerfHash.spr | 330 ++--- tests/Examples/NQueens-solAtRt.spr | 70 +- tests/Examples/NQueens.spr | 280 ++--- tests/Examples/Power.spr | 44 +- tests/Examples/Regex.spr | 634 +++++----- tests/Frontend/Identifiers.spr | 28 +- tests/Frontend/Operators.spr | 208 ++-- tests/Frontend/PrefixPostfix.spr | 116 +- tests/Frontend/StringAndDsl.spr | 10 +- tests/Imports/HeaderA.spr | 2 +- tests/Imports/HeaderB.spr | 2 +- tests/Imports/HeaderC.spr | 6 +- tests/Imports/HeaderD.spr | 6 +- tests/Imports/ImportComplex.spr | 20 +- tests/Imports/ImportComplex2.spr | 12 +- tests/Imports/ImportDirect.spr | 8 +- tests/Imports/ImportInTheMiddle.spr | 37 +- tests/Imports/ImportRelativeFile.spr | 8 +- tests/Imports/ImportTwice.spr | 10 +- tests/Imports/SelectiveImport.spr | 6 +- tests/Logic/Antiquotation.spr | 22 +- tests/Logic/FibOptTest.spr | 46 +- tests/Logic/FibProlog.spr | 16 +- tests/Logic/FibPrologErr.spr | 16 +- tests/Logic/FibTest.spr | 26 +- tests/Logic/ImportProlog.spr | 16 +- tests/Logic/LogicTest.spr | 78 +- tests/Logic/Parents.spr | 110 +- tests/Logic/PrologErr1.spr | 10 +- tests/Logic/PrologErr2.spr | 10 +- tests/Logic/PrologErr3.spr | 12 +- tests/Logic/PrologParserTest.spr | 54 +- tests/Logic/Solar.spr | 48 +- tests/Par/AtomicTest.spr | 6 +- tests/PerfTests/FibRanges/fib_op.spr | 27 +- tests/PerfTests/FibRanges/fib_op_base.spr | 38 +- tests/PerfTests/ForPerf/spr_for.spr | 20 +- tests/PerfTests/ForPerf/spr_while.spr | 22 +- tests/PerfTests/Hash/TestHashPerf.spr | 209 ++-- tests/PerfTests/LazyRanges/lazy_ranges.spr | 20 +- .../PerfTests/LazyRanges/lazy_ranges_base.spr | 44 +- tests/Simple/Ackermann.spr | 60 +- tests/Simple/Factorization.spr | 62 +- tests/Simple/Fibonacci.spr | 54 +- tests/Simple/GCD.spr | 42 +- tests/Simple/Primality.spr | 66 +- tests/Simple/SecantMethod.spr | 34 +- tests/StdLib/AlgorithmsTest1.spr | 166 +-- tests/StdLib/AlgorithmsTest2.spr | 330 ++--- tests/StdLib/AlgorithmsTest3.spr | 238 ++-- tests/StdLib/AlgorithmsTest4.spr | 174 ++- tests/StdLib/ArrayTest.spr | 264 ++-- tests/StdLib/AssertTest.spr | 74 +- tests/StdLib/CheckTest.spr | 68 +- tests/StdLib/ContiguousMemoryRangeTest.spr | 224 ++-- tests/StdLib/FunTest.spr | 2 +- tests/StdLib/HashMapTest.spr | 482 ++++---- tests/StdLib/HashSetTest.spr | 424 +++---- tests/StdLib/ListTest.spr | 1098 ++++++++--------- tests/StdLib/PtrTest.spr | 236 ++-- tests/StdLib/RangesTest.spr | 456 +++---- tests/StdLib/SortedMapTest.spr | 448 +++---- tests/StdLib/SortedSetTest.spr | 420 +++---- tests/StdLib/StaticArrayTest.spr | 262 ++-- tests/StdLib/StringOperators.spr | 34 +- tests/StdLib/TupleTest.spr | 131 +- tests/StdLib/VectorCtTest.spr | 58 +- tests/StdLib/VectorTest.spr | 360 +++--- tools/formatAll.py | 35 + 142 files changed, 6225 insertions(+), 7809 deletions(-) create mode 100755 tools/formatAll.py diff --git a/tests/Basic/Auto.spr b/tests/Basic/Auto.spr index e109775d..c34a49fc 100644 --- a/tests/Basic/Auto.spr +++ b/tests/Basic/Auto.spr @@ -2,25 +2,25 @@ // Test purpose: Test anyType -concept AnyType(x); // Always true +concept AnyType(x) // Always true // Takes a non-reference as a parameter fun f1(x: AnyType) if typeOf(x) == Int writeLn('non-ref') - x = 10; + x = 10 // Takes a reference as a parameter fun f2(x: @AnyType) if typeOf(x) == (Int@) writeLn('ref') - x = 20; + x = 20 [native("test")] fun test(n: Int) - var a: Int = 5; + var a: Int = 5 - f1(a); - writeLn(a); - f2(a); - writeLn(a); + f1(a) + writeLn(a) + f2(a) + writeLn(a) /*<<'); -} + write('<'); writeLn('-') + doTest() + write('-'); writeLn('>') /*<<sizeOf(Double) -{ - write('B'); - write(':'); - write(' '); - writeLn(sizeOf(x)); -} + write('B') + write(':') + write(' ') + writeLn(sizeOf(x)) fun f(x: AnyType) if false -{ - write('X'); - write(':'); - write(' '); - writeLn(sizeOf(x)); -} + write('X') + write(':') + write(' ') + writeLn(sizeOf(x)) fun tst(x: AnyType) if typeOf(x) == Int -{ - write('I'); - write('n'); - writeLn('t'); -} + write('I') + write('n') + writeLn('t') fun tst(x: AnyType) if typeOf(x) == Double -{ - write('D'); - write('o'); - write('u'); - write('b'); - write('l'); - writeLn('e'); -} + write('D') + write('o') + write('u') + write('b') + write('l') + writeLn('e') fun tst(x: AnyType) if isValid(x.second) -{ - write('P'); - write('a'); - write('i'); - writeLn('r'); -} + write('P') + write('a') + write('i') + writeLn('r') fun tst2(x: AnyType) if typeOf(x) == Int -{ - write('I'); - write('n'); - writeLn('t'); -} + write('I') + write('n') + writeLn('t') fun tst2(x: AnyType) if typeOf(x) == Double -{ - write('D'); - write('o'); - write('u'); - write('b'); - write('l'); - writeLn('e'); -} + write('D') + write('o') + write('u') + write('b') + write('l') + writeLn('e') fun tst2(x: AnyType) if isValid(x.second) -{ - write('P'); - write('a'); - write('i'); - writeLn('r'); -} + write('P') + write('a') + write('i') + writeLn('r') fun tst3(x: AnyType) if typeOf(x) == Int -{ - write('I'); - write('n'); - writeLn('t'); -} + write('I') + write('n') + writeLn('t') fun tst3(x: AnyType) if typeOf(x) == Double -{ - write('D'); - write('o'); - write('u'); - write('b'); - write('l'); - writeLn('e'); -} + write('D') + write('o') + write('u') + write('b') + write('l') + writeLn('e') fun tst3(x: AnyType) if typeOf(x.second) == Double -{ - write('P'); - write('a'); - write('i'); - write('r'); - write(' '); - writeLn('D'); -} + write('P') + write('a') + write('i') + write('r') + write(' ') + writeLn('D') fun tst3(x: AnyType) if typeOf(x.second) != Double -{ - write('P'); - write('a'); - write('i'); - writeLn('r'); -} + write('P') + write('a') + write('i') + writeLn('r') fun ok() -{ - write('O'); - writeLn('K'); -} + write('O') + writeLn('K') fun fail() -{ - write('F'); - write('A'); - write('I'); - writeLn('L'); -} + write('F') + write('A') + write('I') + writeLn('L') fun separ() -{ - write('-'); - write('-'); - writeLn('-'); -} + write('-') + write('-') + writeLn('-') [native("test")] fun test(n: Int) -{ - var a: Pair(Int, Int); - var b: Pair(Double, Double); - var c: Pair(Int, Pair(Int, Int)); - var d: Pair(Pair(Double, Double), Pair(Double, Double)); - - f(1); - f(3.14); - f(a); - f(b); - f(c); - f(d); - - separ(); - - tst(1); - tst(3.14); - tst(a); - tst(b); - tst(c); - tst(d); - - separ(); - - tst2(1); - tst2(3.14); - tst2(a); - tst2(b); - tst2(c); - tst2(d); - - separ(); - - tst3(1); - tst3(3.14); - tst3(a); - tst3(b); - tst3(c); - tst3(d); -} + var a: Pair(Int, Int) + var b: Pair(Double, Double) + var c: Pair(Int, Pair(Int, Int)) + var d: Pair(Pair(Double, Double), Pair(Double, Double)) + + f(1) + f(3.14) + f(a) + f(b) + f(c) + f(d) + + separ() + + tst(1) + tst(3.14) + tst(a) + tst(b) + tst(c) + tst(d) + + separ() + + tst2(1) + tst2(3.14) + tst2(a) + tst2(b) + tst2(c) + tst2(d) + + separ() + + tst3(1) + tst3(3.14) + tst3(a) + tst3(b) + tst3(c) + tst3(d) /*<<>>*/ fun test2 - var x = MyType(10); + var x = MyType(10) /*<<>>*/ fun test3 - f1(); - writeLn("---"); - f2(); - writeLn("---"); + f1() + writeLn("---") + f2() + writeLn("---") - var x: MyType; - x = f1(); + var x: MyType + x = f1() /*<<>>*/ fun test4 - var x = f1(); + var x = f1() /*<<>>*/ fun test5 - var x = f3(); + var x = f3() // NRVO will reduce onece more the ctor call - right now we have an extra copy /*<<0 ; n=n-1; - { - res = res * x; - } - return res; -} + var res: Double + res = 1.0 + while n>0 ; n=n-1 + res = res * x + return res fun pow4(x: Double, n: Int): Double -{ - var res: Double; - res = 1.0; + var res: Double + res = 1.0 while n>0 ; n-=1 - { - res *= x; - } - return res; -} + res *= x + return res datatype MyInt - x: Int; + x: Int fun ctor(this: @MyInt) { x = 0; } fun ctor(this: @MyInt, other: MyInt) { x = other.x; } fun + (x,y: MyInt): MyInt -{ - var res: MyInt; - res.x = x.x + y.x; - return res; -} + var res: MyInt + res.x = x.x + y.x + return res fun * (x,y: MyInt): MyInt -{ - var res: MyInt; - res.x = x.x * y.x; - return res; -} + var res: MyInt + res.x = x.x * y.x + return res fun < (x,y: MyInt): Bool -{ - return x.x < y.x; -} + return x.x < y.x fun = (x: MyInt@, y: MyInt) -{ - x.x = y.x; -} + x.x = y.x package NearClass datatype MyInt2 - x: Int; + x: Int fun ctor(this: @MyInt2) { x = 0; } fun ctor(this: @MyInt2, other: MyInt2) { x = other.x; } fun + (l, r: MyInt2): MyInt2 - var res: MyInt2; - res.x = l.x + r.x; - return res; + var res: MyInt2 + res.x = l.x + r.x + return res fun * (l, r: MyInt2): MyInt2 - var res: MyInt2; - res.x = l.x * r.x; - return res; + var res: MyInt2 + res.x = l.x * r.x + return res fun < (l, r: MyInt2): Bool - return l.x < r.x; + return l.x < r.x fun = (this: @MyInt2, other: MyInt2) - this.x = other.x; + this.x = other.x using NearClass.MyInt2 fun + (x,y: MyInt2): MyInt2 -{ - var res: MyInt2; - writeLn("failure"); - return res; -} + var res: MyInt2 + writeLn("failure") + return res fun * (x,y: MyInt2): MyInt2 -{ - var res: MyInt2; - writeLn("failure"); - return res; -} + var res: MyInt2 + writeLn("failure") + return res fun < (x,y: MyInt2): Bool -{ - writeLn("failure"); - return false; -} + writeLn("failure") + return false fun = (x: MyInt2@, y: MyInt2) -{ - writeLn("failure"); -} + writeLn("failure") [native("test")] fun test(n: Int) -{ - writeLn(pow1(2.0, 0)); - writeLn(pow1(2.0, 8)); - writeLn(pow2(3.0, 0)); - writeLn(pow2(3.0, 4)); - writeLn(pow3(3.0, 0)); - writeLn(pow3(3.0, 4)); - writeLn(pow4(2.0, 0)); - writeLn(pow4(2.0, 8)); + writeLn(pow1(2.0, 0)) + writeLn(pow1(2.0, 8)) + writeLn(pow2(3.0, 0)) + writeLn(pow2(3.0, 4)) + writeLn(pow3(3.0, 0)) + writeLn(pow3(3.0, 4)) + writeLn(pow4(2.0, 0)) + writeLn(pow4(2.0, 8)) // Warning: the following arithmetic operations will be made at compile time. Muhahahaha... - assert(true); - fassert(false); - - assert(2+2 == 4); - assert(3+3 == 6); - assert(3*3 == 9); - assert(8/2 == 4); - assert(8/3 == 2); - assert(8%3 == 2); - assert(+2 == 2); - assert(-2 == (-1)*2); - - assert(2<3); - fassert(2<2); - assert(2<=3); - assert(3<=3); - fassert(3<=2); - assert(5>3); - fassert(5>5); - assert(5>=3); - assert(3>=3); - fassert(3>=5); - - assert(2.0+2.0 == 4.0); - assert(3.0+3.0 == 6.0); - assert(3.0*3.0 == 9.0); - assert(8.0/2.0 == 4.0); - assert(9.0/2.0 == 4.5); - assert(+2.0 == 2.0); - assert(-2.0 == (-1.0)*2.0); - - assert(2.0<3.0); - fassert(2.0<2.0); - assert(2.0<=3.0); - assert(3.0<=3.0); - fassert(3.0<=2.0); - assert(5.0>3.0); - fassert(5.0>5.0); - assert(5.0>=3.0); - assert(3.0>=3.0); - fassert(3.0>=5.0); - - write('-'); write('-'); writeLn('-'); - var doi,trei,t: MyInt; - doi.x = 2; - trei.x = 3; - - t = doi+doi; - writeLn(t.x); - t += doi; - writeLn(t.x); - t *= trei; - writeLn(t.x); - - assert(doi < trei); - assert(doi <= trei); - assert(doi <= doi); - assert(trei > doi); - assert(trei >= doi); - assert(trei >= trei); - - assert(doi === doi); - fassert(doi === trei); - fassert(doi !== doi); - assert(doi !== trei); - - var r1, r2: MyInt@; - r1 := doi; - r2 := r1; - assert(r1 === r2); - r2 := doi; - assert(r1 === r2); - r2 := trei; - assert(r1 !== r2); - - - { - write('='); write('='); writeLn('='); - var doi,trei,t: MyInt2; - doi.x = 2; - trei.x = 3; - - t = doi+doi; - writeLn(t.x); - t += doi; - writeLn(t.x); - t *= trei; - writeLn(t.x); - - assert(doi < trei); - assert(doi <= trei); - assert(doi <= doi); - assert(trei > doi); - assert(trei >= doi); - assert(trei >= trei); - - assert(doi === doi); - fassert(doi === trei); - fassert(doi !== doi); - assert(doi !== trei); - - var r1, r2: MyInt2@; - r1 := doi; - r2 := r1; - assert(r1 === r2); - r2 := doi; - assert(r1 === r2); - r2 := trei; - assert(r1 !== r2); - } - - write('O'); writeLn('K'); -} + assert(true) + fassert(false) + + assert(2+2 == 4) + assert(3+3 == 6) + assert(3*3 == 9) + assert(8/2 == 4) + assert(8/3 == 2) + assert(8%3 == 2) + assert(+2 == 2) + assert(-2 == (-1)*2) + + assert(2<3) + fassert(2<2) + assert(2<=3) + assert(3<=3) + fassert(3<=2) + assert(5>3) + fassert(5>5) + assert(5>=3) + assert(3>=3) + fassert(3>=5) + + assert(2.0+2.0 == 4.0) + assert(3.0+3.0 == 6.0) + assert(3.0*3.0 == 9.0) + assert(8.0/2.0 == 4.0) + assert(9.0/2.0 == 4.5) + assert(+2.0 == 2.0) + assert(-2.0 == (-1.0)*2.0) + + assert(2.0<3.0) + fassert(2.0<2.0) + assert(2.0<=3.0) + assert(3.0<=3.0) + fassert(3.0<=2.0) + assert(5.0>3.0) + fassert(5.0>5.0) + assert(5.0>=3.0) + assert(3.0>=3.0) + fassert(3.0>=5.0) + + write('-'); write('-'); writeLn('-') + var doi,trei,t: MyInt + doi.x = 2 + trei.x = 3 + + t = doi+doi + writeLn(t.x) + t += doi + writeLn(t.x) + t *= trei + writeLn(t.x) + + assert(doi < trei) + assert(doi <= trei) + assert(doi <= doi) + assert(trei > doi) + assert(trei >= doi) + assert(trei >= trei) + + assert(doi === doi) + fassert(doi === trei) + fassert(doi !== doi) + assert(doi !== trei) + + var r1, r2: MyInt@ + r1 := doi + r2 := r1 + assert(r1 === r2) + r2 := doi + assert(r1 === r2) + r2 := trei + assert(r1 !== r2) + + + write('='); write('='); writeLn('=') + var doi,trei,t: MyInt2 + doi.x = 2 + trei.x = 3 + + t = doi+doi + writeLn(t.x) + t += doi + writeLn(t.x) + t *= trei + writeLn(t.x) + + assert(doi < trei) + assert(doi <= trei) + assert(doi <= doi) + assert(trei > doi) + assert(trei >= doi) + assert(trei >= trei) + + assert(doi === doi) + fassert(doi === trei) + fassert(doi !== doi) + assert(doi !== trei) + + var r1, r2: MyInt2@ + r1 := doi + r2 := r1 + assert(r1 === r2) + r2 := doi + assert(r1 === r2) + r2 := trei + assert(r1 !== r2) + + write('O'); writeLn('K') /*<< (x, y: Byte): Bool; -[autoCt, native("_Byte_opLE")] fun <= (x, y: Byte): Bool; -[autoCt, native("_Byte_opGE")] fun >= (x, y: Byte): Bool; -[autoCt, native("_Byte_opPlus")] fun + (x, y: Byte): Byte; -[autoCt, native("_Byte_opMinus")] fun - (x, y: Byte): Byte; -[autoCt, native("_Byte_opMul")] fun * (x, y: Byte): Byte; -[autoCt, native("_Byte_opDiv")] fun / (x, y: Byte): Byte; -[autoCt, native("_Byte_opMod")] fun % (x, y: Byte): Byte; -[autoCt, native("_Byte_opPlus1")] fun + (x: Byte): Byte; -[autoCt, native("_Byte_opMinus1")] fun - (x: Byte): Byte; - -[autoCt, native("_UByte_opEQ")] fun == (x, y: UByte): Bool; -[autoCt, native("_UByte_opNE")] fun != (x, y: UByte): Bool; -[autoCt, native("_UByte_opLT")] fun < (x, y: UByte): Bool; -[autoCt, native("_UByte_opGT")] fun > (x, y: UByte): Bool; -[autoCt, native("_UByte_opLE")] fun <= (x, y: UByte): Bool; -[autoCt, native("_UByte_opGE")] fun >= (x, y: UByte): Bool; -[autoCt, native("_UByte_opPlus")] fun + (x, y: UByte): UByte; -[autoCt, native("_UByte_opMinus")] fun - (x, y: UByte): UByte; -[autoCt, native("_UByte_opMul")] fun * (x, y: UByte): UByte; -[autoCt, native("_UByte_opDiv")] fun / (x, y: UByte): UByte; -[autoCt, native("_UByte_opMod")] fun % (x, y: UByte): UByte; -[autoCt, native("_UByte_opPlus1")] fun + (x: UByte): UByte; - -[autoCt, native("_Short_opEQ")] fun == (x, y: Short): Bool; -[autoCt, native("_Short_opNE")] fun != (x, y: Short): Bool; -[autoCt, native("_Short_opLT")] fun < (x, y: Short): Bool; -[autoCt, native("_Short_opGT")] fun > (x, y: Short): Bool; -[autoCt, native("_Short_opLE")] fun <= (x, y: Short): Bool; -[autoCt, native("_Short_opGE")] fun >= (x, y: Short): Bool; -[autoCt, native("_Short_opPlus")] fun + (x, y: Short): Short; -[autoCt, native("_Short_opMinus")] fun - (x, y: Short): Short; -[autoCt, native("_Short_opMul")] fun * (x, y: Short): Short; -[autoCt, native("_Short_opDiv")] fun / (x, y: Short): Short; -[autoCt, native("_Short_opMod")] fun % (x, y: Short): Short; -[autoCt, native("_Short_opPlus1")] fun + (x: Short): Short; -[autoCt, native("_Short_opMinus1")] fun - (x: Short): Short; - -[autoCt, native("_UShort_opEQ")] fun == (x, y: UShort): Bool; -[autoCt, native("_UShort_opNE")] fun != (x, y: UShort): Bool; -[autoCt, native("_UShort_opLT")] fun < (x, y: UShort): Bool; -[autoCt, native("_UShort_opGT")] fun > (x, y: UShort): Bool; -[autoCt, native("_UShort_opLE")] fun <= (x, y: UShort): Bool; -[autoCt, native("_UShort_opGE")] fun >= (x, y: UShort): Bool; -[autoCt, native("_UShort_opPlus")] fun + (x, y: UShort): UShort; -[autoCt, native("_UShort_opMinus")] fun - (x, y: UShort): UShort; -[autoCt, native("_UShort_opMul")] fun * (x, y: UShort): UShort; -[autoCt, native("_UShort_opDiv")] fun / (x, y: UShort): UShort; -[autoCt, native("_UShort_opMod")] fun % (x, y: UShort): UShort; -[autoCt, native("_UShort_opPlus1")] fun + (x: UShort): UShort; - -[autoCt, native("_Int_opEQ")] fun == (x, y: Int): Bool; -[autoCt, native("_Int_opNE")] fun != (x, y: Int): Bool; -[autoCt, native("_Int_opLT")] fun < (x, y: Int): Bool; -[autoCt, native("_Int_opGT")] fun > (x, y: Int): Bool; -[autoCt, native("_Int_opLE")] fun <= (x, y: Int): Bool; -[autoCt, native("_Int_opGE")] fun >= (x, y: Int): Bool; -[autoCt, native("_Int_opPlus")] fun + (x, y: Int): Int; -[autoCt, native("_Int_opMinus")] fun - (x, y: Int): Int; -[autoCt, native("_Int_opMul")] fun * (x, y: Int): Int; -[autoCt, native("_Int_opDiv")] fun / (x, y: Int): Int; -[autoCt, native("_Int_opMod")] fun % (x, y: Int): Int; -[autoCt, native("_Int_opPlus1")] fun + (x: Int): Int; -[autoCt, native("_Int_opMinus1")] fun - (x: Int): Int; - -[autoCt, native("_UInt_opEQ")] fun == (x, y: UInt): Bool; -[autoCt, native("_UInt_opNE")] fun != (x, y: UInt): Bool; -[autoCt, native("_UInt_opLT")] fun < (x, y: UInt): Bool; -[autoCt, native("_UInt_opGT")] fun > (x, y: UInt): Bool; -[autoCt, native("_UInt_opLE")] fun <= (x, y: UInt): Bool; -[autoCt, native("_UInt_opGE")] fun >= (x, y: UInt): Bool; -[autoCt, native("_UInt_opPlus")] fun + (x, y: UInt): UInt; -[autoCt, native("_UInt_opMinus")] fun - (x, y: UInt): UInt; -[autoCt, native("_UInt_opMul")] fun * (x, y: UInt): UInt; -[autoCt, native("_UInt_opDiv")] fun / (x, y: UInt): UInt; -[autoCt, native("_UInt_opMod")] fun % (x, y: UInt): UInt; -[autoCt, native("_UInt_opPlus1")] fun + (x: UInt): UInt; - -[autoCt, native("_Long_opEQ")] fun == (x, y: Long): Bool; -[autoCt, native("_Long_opNE")] fun != (x, y: Long): Bool; -[autoCt, native("_Long_opLT")] fun < (x, y: Long): Bool; -[autoCt, native("_Long_opGT")] fun > (x, y: Long): Bool; -[autoCt, native("_Long_opLE")] fun <= (x, y: Long): Bool; -[autoCt, native("_Long_opGE")] fun >= (x, y: Long): Bool; -[autoCt, native("_Long_opPlus")] fun + (x, y: Long): Long; -[autoCt, native("_Long_opMinus")] fun - (x, y: Long): Long; -[autoCt, native("_Long_opMul")] fun * (x, y: Long): Long; -[autoCt, native("_Long_opDiv")] fun / (x, y: Long): Long; -[autoCt, native("_Long_opMod")] fun % (x, y: Long): Long; -[autoCt, native("_Long_opPlus1")] fun + (x: Long): Long; -[autoCt, native("_Long_opMinus1")] fun - (x: Long): Long; - -[autoCt, native("_ULong_opEQ")] fun == (x, y: ULong): Bool; -[autoCt, native("_ULong_opNE")] fun != (x, y: ULong): Bool; -[autoCt, native("_ULong_opLT")] fun < (x, y: ULong): Bool; -[autoCt, native("_ULong_opGT")] fun > (x, y: ULong): Bool; -[autoCt, native("_ULong_opLE")] fun <= (x, y: ULong): Bool; -[autoCt, native("_ULong_opGE")] fun >= (x, y: ULong): Bool; -[autoCt, native("_ULong_opPlus")] fun + (x, y: ULong): ULong; -[autoCt, native("_ULong_opMinus")] fun - (x, y: ULong): ULong; -[autoCt, native("_ULong_opMul")] fun * (x, y: ULong): ULong; -[autoCt, native("_ULong_opDiv")] fun / (x, y: ULong): ULong; -[autoCt, native("_ULong_opMod")] fun % (x, y: ULong): ULong; -[autoCt, native("_ULong_opPlus1")] fun + (x: ULong): ULong; - -[autoCt, native("_Float_opEQ")] fun == (x, y: Float): Bool; -[autoCt, native("_Float_opNE")] fun != (x, y: Float): Bool; -[autoCt, native("_Float_opLT")] fun < (x, y: Float): Bool; -[autoCt, native("_Float_opGT")] fun > (x, y: Float): Bool; -[autoCt, native("_Float_opLE")] fun <= (x, y: Float): Bool; -[autoCt, native("_Float_opGE")] fun >= (x, y: Float): Bool; -[autoCt, native("_Float_opPlus")] fun + (x, y: Float): Float; -[autoCt, native("_Float_opMinus")] fun - (x, y: Float): Float; -[autoCt, native("_Float_opMul")] fun * (x, y: Float): Float; -[autoCt, native("_Float_opDiv")] fun / (x, y: Float): Float; -[autoCt, native("_Float_opPlus1")] fun + (x: Float): Float; -[autoCt, native("_Float_opMinus1")] fun - (x: Float): Float; - -[autoCt, native("_Double_opEQ")] fun == (x, y: Double): Bool; -[autoCt, native("_Double_opNE")] fun != (x, y: Double): Bool; -[autoCt, native("_Double_opLT")] fun < (x, y: Double): Bool; -[autoCt, native("_Double_opGT")] fun > (x, y: Double): Bool; -[autoCt, native("_Double_opLE")] fun <= (x, y: Double): Bool; -[autoCt, native("_Double_opGE")] fun >= (x, y: Double): Bool; -[autoCt, native("_Double_opPlus")] fun + (x, y: Double): Double; -[autoCt, native("_Double_opMinus")] fun - (x, y: Double): Double; -[autoCt, native("_Double_opMul")] fun * (x, y: Double): Double; -[autoCt, native("_Double_opDiv")] fun / (x, y: Double): Double; -[autoCt, native("_Double_opPlus1")] fun + (x: Double): Double; -[autoCt, native("_Double_opMinus1")] fun - (x: Double): Double; - -[autoCt, native("_Char_opEQ")] fun == (x, y: Char): Bool; -[autoCt, native("_Char_opNE")] fun != (x, y: Char): Bool; -[autoCt, native("_Char_opLT")] fun < (x, y: Char): Bool; -[autoCt, native("_Char_opGT")] fun > (x, y: Char): Bool; -[autoCt, native("_Char_opLE")] fun <= (x, y: Char): Bool; -[autoCt, native("_Char_opGE")] fun >= (x, y: Char): Bool; - -[autoCt, native("_SizeType_opEQ")] fun == (x, y: SizeType): Bool; -[autoCt, native("_SizeType_opNE")] fun != (x, y: SizeType): Bool; -[autoCt, native("_SizeType_opLT")] fun < (x, y: SizeType): Bool; -[autoCt, native("_SizeType_opGT")] fun > (x, y: SizeType): Bool; -[autoCt, native("_SizeType_opLE")] fun <= (x, y: SizeType): Bool; -[autoCt, native("_SizeType_opGE")] fun >= (x, y: SizeType): Bool; -[autoCt, native("_SizeType_opPlus")] fun + (x, y: SizeType): SizeType; -[autoCt, native("_SizeType_opMinus")] fun - (x, y: SizeType): SizeType; -[autoCt, native("_SizeType_opMul")] fun * (x, y: SizeType): SizeType; -[autoCt, native("_SizeType_opDiv")] fun / (x, y: SizeType): SizeType; -[autoCt, native("_SizeType_opMod")] fun % (x, y: SizeType): SizeType; -[autoCt, native("_SizeType_opPlus1")] fun + (x: SizeType): SizeType; - -[ct, native("$ct")] fun ct(t: Type): Type; -[ct, native("$rt")] fun rt(t: Type): Type; - -[autoCt, native("implOpRefEQ")] fun implOpRefEQ(x,y: @Byte): Bool; -[autoCt, native("implOpRefNE")] fun implOpRefNE(x,y: @Byte): Bool; - - -[ct, native("$typeEQ")] fun == (x, y: Type): Bool; -[ct, native("$typeAddRef")] fun @ (t: Type): Type; - - - -[native("writeLnByte")] fun writeLn(x: Byte); -[native("writeLnByte")] fun writeLn(x: UByte); -[native("writeLnShort")] fun writeLn(x: Short); -[native("writeLnShort")] fun writeLn(x: UShort); -[native("writeLnInt")] fun writeLn(x: Int); -[native("writeLnUInt")] fun writeLn(x: UInt); -[native("writeLnSizeType")] fun writeLn(x: Long); -[native("writeLnSizeType")] fun writeLn(x: ULong); -[native("writeLnFloat")] fun writeLn(x: Float); -[native("writeLnDouble")] fun writeLn(x: Double); -[native("writeLnChar")] fun writeLn(x: Char); -[native("writeLnSizeType")] fun writeLn(x: SizeType); - -[native("writeByte")] fun write(x: Byte); -[native("writeByte")] fun write(x: UByte); -[native("writeShort")] fun write(x: Short); -[native("writeShort")] fun write(x: UShort); -[native("writeInt")] fun write(x: Int); -[native("writeUInt")] fun write(x: UInt); -[native("writeLong")] fun write(x: Long); -[native("writeULong")] fun write(x: ULong); -[native("writeFloat")] fun write(x: Float); -[native("writeDouble")] fun write(x: Double); -[native("writeChar")] fun write(x: Char); -[native("writeSizeType")] fun write(x: SizeType); +[autoCt, native("_Bool_opOr")] fun || (x, y: Bool): Bool +[autoCt, native("_Bool_opXor")] fun ^^ (x, y: Bool): Bool +[autoCt, native("_Bool_opAnd")] fun && (x, y: Bool): Bool +[autoCt, native("_Bool_opEQ")] fun == (x, y: Bool): Bool +[autoCt, native("_Bool_opNE")] fun != (x, y: Bool): Bool +[autoCt, native("_Bool_opNeg")] fun ! (x: Bool): Bool + +[autoCt, native("_Byte_opEQ")] fun == (x, y: Byte): Bool +[autoCt, native("_Byte_opNE")] fun != (x, y: Byte): Bool +[autoCt, native("_Byte_opLT")] fun < (x, y: Byte): Bool +[autoCt, native("_Byte_opGT")] fun > (x, y: Byte): Bool +[autoCt, native("_Byte_opLE")] fun <= (x, y: Byte): Bool +[autoCt, native("_Byte_opGE")] fun >= (x, y: Byte): Bool +[autoCt, native("_Byte_opPlus")] fun + (x, y: Byte): Byte +[autoCt, native("_Byte_opMinus")] fun - (x, y: Byte): Byte +[autoCt, native("_Byte_opMul")] fun * (x, y: Byte): Byte +[autoCt, native("_Byte_opDiv")] fun / (x, y: Byte): Byte +[autoCt, native("_Byte_opMod")] fun % (x, y: Byte): Byte +[autoCt, native("_Byte_opPlus1")] fun + (x: Byte): Byte +[autoCt, native("_Byte_opMinus1")] fun - (x: Byte): Byte + +[autoCt, native("_UByte_opEQ")] fun == (x, y: UByte): Bool +[autoCt, native("_UByte_opNE")] fun != (x, y: UByte): Bool +[autoCt, native("_UByte_opLT")] fun < (x, y: UByte): Bool +[autoCt, native("_UByte_opGT")] fun > (x, y: UByte): Bool +[autoCt, native("_UByte_opLE")] fun <= (x, y: UByte): Bool +[autoCt, native("_UByte_opGE")] fun >= (x, y: UByte): Bool +[autoCt, native("_UByte_opPlus")] fun + (x, y: UByte): UByte +[autoCt, native("_UByte_opMinus")] fun - (x, y: UByte): UByte +[autoCt, native("_UByte_opMul")] fun * (x, y: UByte): UByte +[autoCt, native("_UByte_opDiv")] fun / (x, y: UByte): UByte +[autoCt, native("_UByte_opMod")] fun % (x, y: UByte): UByte +[autoCt, native("_UByte_opPlus1")] fun + (x: UByte): UByte + +[autoCt, native("_Short_opEQ")] fun == (x, y: Short): Bool +[autoCt, native("_Short_opNE")] fun != (x, y: Short): Bool +[autoCt, native("_Short_opLT")] fun < (x, y: Short): Bool +[autoCt, native("_Short_opGT")] fun > (x, y: Short): Bool +[autoCt, native("_Short_opLE")] fun <= (x, y: Short): Bool +[autoCt, native("_Short_opGE")] fun >= (x, y: Short): Bool +[autoCt, native("_Short_opPlus")] fun + (x, y: Short): Short +[autoCt, native("_Short_opMinus")] fun - (x, y: Short): Short +[autoCt, native("_Short_opMul")] fun * (x, y: Short): Short +[autoCt, native("_Short_opDiv")] fun / (x, y: Short): Short +[autoCt, native("_Short_opMod")] fun % (x, y: Short): Short +[autoCt, native("_Short_opPlus1")] fun + (x: Short): Short +[autoCt, native("_Short_opMinus1")] fun - (x: Short): Short + +[autoCt, native("_UShort_opEQ")] fun == (x, y: UShort): Bool +[autoCt, native("_UShort_opNE")] fun != (x, y: UShort): Bool +[autoCt, native("_UShort_opLT")] fun < (x, y: UShort): Bool +[autoCt, native("_UShort_opGT")] fun > (x, y: UShort): Bool +[autoCt, native("_UShort_opLE")] fun <= (x, y: UShort): Bool +[autoCt, native("_UShort_opGE")] fun >= (x, y: UShort): Bool +[autoCt, native("_UShort_opPlus")] fun + (x, y: UShort): UShort +[autoCt, native("_UShort_opMinus")] fun - (x, y: UShort): UShort +[autoCt, native("_UShort_opMul")] fun * (x, y: UShort): UShort +[autoCt, native("_UShort_opDiv")] fun / (x, y: UShort): UShort +[autoCt, native("_UShort_opMod")] fun % (x, y: UShort): UShort +[autoCt, native("_UShort_opPlus1")] fun + (x: UShort): UShort + +[autoCt, native("_Int_opEQ")] fun == (x, y: Int): Bool +[autoCt, native("_Int_opNE")] fun != (x, y: Int): Bool +[autoCt, native("_Int_opLT")] fun < (x, y: Int): Bool +[autoCt, native("_Int_opGT")] fun > (x, y: Int): Bool +[autoCt, native("_Int_opLE")] fun <= (x, y: Int): Bool +[autoCt, native("_Int_opGE")] fun >= (x, y: Int): Bool +[autoCt, native("_Int_opPlus")] fun + (x, y: Int): Int +[autoCt, native("_Int_opMinus")] fun - (x, y: Int): Int +[autoCt, native("_Int_opMul")] fun * (x, y: Int): Int +[autoCt, native("_Int_opDiv")] fun / (x, y: Int): Int +[autoCt, native("_Int_opMod")] fun % (x, y: Int): Int +[autoCt, native("_Int_opPlus1")] fun + (x: Int): Int +[autoCt, native("_Int_opMinus1")] fun - (x: Int): Int + +[autoCt, native("_UInt_opEQ")] fun == (x, y: UInt): Bool +[autoCt, native("_UInt_opNE")] fun != (x, y: UInt): Bool +[autoCt, native("_UInt_opLT")] fun < (x, y: UInt): Bool +[autoCt, native("_UInt_opGT")] fun > (x, y: UInt): Bool +[autoCt, native("_UInt_opLE")] fun <= (x, y: UInt): Bool +[autoCt, native("_UInt_opGE")] fun >= (x, y: UInt): Bool +[autoCt, native("_UInt_opPlus")] fun + (x, y: UInt): UInt +[autoCt, native("_UInt_opMinus")] fun - (x, y: UInt): UInt +[autoCt, native("_UInt_opMul")] fun * (x, y: UInt): UInt +[autoCt, native("_UInt_opDiv")] fun / (x, y: UInt): UInt +[autoCt, native("_UInt_opMod")] fun % (x, y: UInt): UInt +[autoCt, native("_UInt_opPlus1")] fun + (x: UInt): UInt + +[autoCt, native("_Long_opEQ")] fun == (x, y: Long): Bool +[autoCt, native("_Long_opNE")] fun != (x, y: Long): Bool +[autoCt, native("_Long_opLT")] fun < (x, y: Long): Bool +[autoCt, native("_Long_opGT")] fun > (x, y: Long): Bool +[autoCt, native("_Long_opLE")] fun <= (x, y: Long): Bool +[autoCt, native("_Long_opGE")] fun >= (x, y: Long): Bool +[autoCt, native("_Long_opPlus")] fun + (x, y: Long): Long +[autoCt, native("_Long_opMinus")] fun - (x, y: Long): Long +[autoCt, native("_Long_opMul")] fun * (x, y: Long): Long +[autoCt, native("_Long_opDiv")] fun / (x, y: Long): Long +[autoCt, native("_Long_opMod")] fun % (x, y: Long): Long +[autoCt, native("_Long_opPlus1")] fun + (x: Long): Long +[autoCt, native("_Long_opMinus1")] fun - (x: Long): Long + +[autoCt, native("_ULong_opEQ")] fun == (x, y: ULong): Bool +[autoCt, native("_ULong_opNE")] fun != (x, y: ULong): Bool +[autoCt, native("_ULong_opLT")] fun < (x, y: ULong): Bool +[autoCt, native("_ULong_opGT")] fun > (x, y: ULong): Bool +[autoCt, native("_ULong_opLE")] fun <= (x, y: ULong): Bool +[autoCt, native("_ULong_opGE")] fun >= (x, y: ULong): Bool +[autoCt, native("_ULong_opPlus")] fun + (x, y: ULong): ULong +[autoCt, native("_ULong_opMinus")] fun - (x, y: ULong): ULong +[autoCt, native("_ULong_opMul")] fun * (x, y: ULong): ULong +[autoCt, native("_ULong_opDiv")] fun / (x, y: ULong): ULong +[autoCt, native("_ULong_opMod")] fun % (x, y: ULong): ULong +[autoCt, native("_ULong_opPlus1")] fun + (x: ULong): ULong + +[autoCt, native("_Float_opEQ")] fun == (x, y: Float): Bool +[autoCt, native("_Float_opNE")] fun != (x, y: Float): Bool +[autoCt, native("_Float_opLT")] fun < (x, y: Float): Bool +[autoCt, native("_Float_opGT")] fun > (x, y: Float): Bool +[autoCt, native("_Float_opLE")] fun <= (x, y: Float): Bool +[autoCt, native("_Float_opGE")] fun >= (x, y: Float): Bool +[autoCt, native("_Float_opPlus")] fun + (x, y: Float): Float +[autoCt, native("_Float_opMinus")] fun - (x, y: Float): Float +[autoCt, native("_Float_opMul")] fun * (x, y: Float): Float +[autoCt, native("_Float_opDiv")] fun / (x, y: Float): Float +[autoCt, native("_Float_opPlus1")] fun + (x: Float): Float +[autoCt, native("_Float_opMinus1")] fun - (x: Float): Float + +[autoCt, native("_Double_opEQ")] fun == (x, y: Double): Bool +[autoCt, native("_Double_opNE")] fun != (x, y: Double): Bool +[autoCt, native("_Double_opLT")] fun < (x, y: Double): Bool +[autoCt, native("_Double_opGT")] fun > (x, y: Double): Bool +[autoCt, native("_Double_opLE")] fun <= (x, y: Double): Bool +[autoCt, native("_Double_opGE")] fun >= (x, y: Double): Bool +[autoCt, native("_Double_opPlus")] fun + (x, y: Double): Double +[autoCt, native("_Double_opMinus")] fun - (x, y: Double): Double +[autoCt, native("_Double_opMul")] fun * (x, y: Double): Double +[autoCt, native("_Double_opDiv")] fun / (x, y: Double): Double +[autoCt, native("_Double_opPlus1")] fun + (x: Double): Double +[autoCt, native("_Double_opMinus1")] fun - (x: Double): Double + +[autoCt, native("_Char_opEQ")] fun == (x, y: Char): Bool +[autoCt, native("_Char_opNE")] fun != (x, y: Char): Bool +[autoCt, native("_Char_opLT")] fun < (x, y: Char): Bool +[autoCt, native("_Char_opGT")] fun > (x, y: Char): Bool +[autoCt, native("_Char_opLE")] fun <= (x, y: Char): Bool +[autoCt, native("_Char_opGE")] fun >= (x, y: Char): Bool + +[autoCt, native("_SizeType_opEQ")] fun == (x, y: SizeType): Bool +[autoCt, native("_SizeType_opNE")] fun != (x, y: SizeType): Bool +[autoCt, native("_SizeType_opLT")] fun < (x, y: SizeType): Bool +[autoCt, native("_SizeType_opGT")] fun > (x, y: SizeType): Bool +[autoCt, native("_SizeType_opLE")] fun <= (x, y: SizeType): Bool +[autoCt, native("_SizeType_opGE")] fun >= (x, y: SizeType): Bool +[autoCt, native("_SizeType_opPlus")] fun + (x, y: SizeType): SizeType +[autoCt, native("_SizeType_opMinus")] fun - (x, y: SizeType): SizeType +[autoCt, native("_SizeType_opMul")] fun * (x, y: SizeType): SizeType +[autoCt, native("_SizeType_opDiv")] fun / (x, y: SizeType): SizeType +[autoCt, native("_SizeType_opMod")] fun % (x, y: SizeType): SizeType +[autoCt, native("_SizeType_opPlus1")] fun + (x: SizeType): SizeType + +[ct, native("$ct")] fun ct(t: Type): Type +[ct, native("$rt")] fun rt(t: Type): Type + +[autoCt, native("implOpRefEQ")] fun implOpRefEQ(x,y: @Byte): Bool +[autoCt, native("implOpRefNE")] fun implOpRefNE(x,y: @Byte): Bool + + +[ct, native("$typeEQ")] fun == (x, y: Type): Bool +[ct, native("$typeAddRef")] fun @ (t: Type): Type + + + +[native("writeLnByte")] fun writeLn(x: Byte) +[native("writeLnByte")] fun writeLn(x: UByte) +[native("writeLnShort")] fun writeLn(x: Short) +[native("writeLnShort")] fun writeLn(x: UShort) +[native("writeLnInt")] fun writeLn(x: Int) +[native("writeLnUInt")] fun writeLn(x: UInt) +[native("writeLnSizeType")] fun writeLn(x: Long) +[native("writeLnSizeType")] fun writeLn(x: ULong) +[native("writeLnFloat")] fun writeLn(x: Float) +[native("writeLnDouble")] fun writeLn(x: Double) +[native("writeLnChar")] fun writeLn(x: Char) +[native("writeLnSizeType")] fun writeLn(x: SizeType) + +[native("writeByte")] fun write(x: Byte) +[native("writeByte")] fun write(x: UByte) +[native("writeShort")] fun write(x: Short) +[native("writeShort")] fun write(x: UShort) +[native("writeInt")] fun write(x: Int) +[native("writeUInt")] fun write(x: UInt) +[native("writeLong")] fun write(x: Long) +[native("writeULong")] fun write(x: ULong) +[native("writeFloat")] fun write(x: Float) +[native("writeDouble")] fun write(x: Double) +[native("writeChar")] fun write(x: Char) +[native("writeSizeType")] fun write(x: SizeType) fun writeLn(x: StringRef) { writeLnStringImpl(reinterpretCast(@Char, x.begin)); } fun write(x: StringRef) { writeStringImpl(reinterpretCast(@Char, x.begin)); } -[native("writeLnStringImpl")] fun writeLnStringImpl(x: @Char); -[native("writeStringImpl")] fun writeStringImpl(x: @Char); - -[native("writeLnPointer")] fun writeLnRef(x: @Byte); -[native("writePointer")] fun writeRef(x: @Byte); - -[native("writeLnInt"), rt] fun writeLnInt(x: Int); -[native("writeLnDouble"), rt] fun writeLnDouble(x: Double); - -[native("intToSizeType"), autoCt] fun intToSizeType(n: Int): SizeType; -[native("intToByte"), autoCt] fun intToByte(n: Int): Byte; - - -[native("mulInt"), autoCt] fun mul(x,y: Int): Int; -[native("mulDouble"), autoCt] fun mul(x,y: Double): Double; -[native("divInt"), autoCt] fun div(x,y: Int): Int; -[native("modInt"), autoCt] fun mod(x,y: Int): Int; -[native("addInt"), autoCt] fun add(x,y: Int): Int; -[native("subInt"), autoCt] fun sub(x,y: Int): Int; -[native("addDouble"), autoCt] fun add(x,y: Double): Double; -[native("subDouble"), autoCt] fun sub(x,y: Double): Double; -[native("equalInt"), autoCt] fun equal(x,y: Int): Bool; -[native("leInt"), autoCt] fun le(x,y: Int): Bool; -[native("assignInt"), autoCt] fun assignInt(x: Int@, y: Int); -[native("assignRefByte"), autoCt] fun assignRef(x: (@Byte)@, y: @Byte); - -[native("llvm.pow.f64"), rt] fun mathPow(x,y: Double): Double; - -[native("malloc")] fun malloc(size: SizeType): @Byte; -[native("malloc")] fun mallocRt(size: SizeType): @Byte; -[native("realloc")] fun realloc(p: @Byte, size: SizeType): @Byte; -[native("free")] fun free(p: @Byte); -[native("ptrAdd"), autoCt] fun ptrAdd(p: @Byte, n: SizeType): @Byte; -[native("ptrSub"), autoCt] fun ptrSub(p: @Byte, n: SizeType): @Byte; -[native("ptrDiff"), autoCt] fun ptrDiff(p1, p2: @Byte): SizeType; -[native("memcpyimpl"), autoCt] fun memcpy(dest, src: @Byte, size: SizeType); -[native("flushOutput")] fun flushOutput(); - -[ct, native("$typeNumRef")] fun typeNumRef(t: Type): Int; - -fun cast(); -fun reinterpretCast(); -[ct] fun sizeOf(): SizeType; -[ct] fun typeOf(): Type; -[ct] fun isValid(): Bool; -fun construct(); - -[ct, native("$convertsTo")] fun convertsTo(src, dest: Type): Bool; -[ct, native("$staticBuffer")] fun static_buffer(n: SizeType): Type; -[ct, native("$commonType")] fun commonType(t, u: Type): Type; - -using oper_precedence_default = 100; -using oper_precedence___dot__ = 10000; -using oper_precedence___fapp__ = 10000; -using oper_precedence___pre__ = 990; - -using oper_precedence_= = 50; -using oper_precedence_:= = 50; -using oper_precedence_+= = 50; -using oper_precedence_-= = 50; -using oper_precedence_*= = 50; -using oper_precedence_/= = 50; -using oper_precedence_%= = 50; - -using oper_precedence_|| = 200; -using oper_precedence_^^ = 220; -using oper_precedence_&& = 240; - -using oper_precedence_< = 300; -using oper_precedence_> = 300; -using oper_precedence_<= = 300; -using oper_precedence_>= = 300; - -using oper_precedence_== = 400; -using oper_precedence_!= = 400; -using oper_precedence_=== = 400; -using oper_precedence_!== = 400; - -using oper_precedence_+ = 500; -using oper_precedence_- = 500; -using oper_precedence_* = 550; -using oper_precedence_/ = 550; -using oper_precedence_% = 550; - -using oper_precedence_<< = 50; -using oper_precedence_<<< = 50; -using oper_precedence_>> = 50; - -using oper_assoc_= = -1; -using oper_assoc_:= = -1; +[native("writeLnStringImpl")] fun writeLnStringImpl(x: @Char) +[native("writeStringImpl")] fun writeStringImpl(x: @Char) + +[native("writeLnPointer")] fun writeLnRef(x: @Byte) +[native("writePointer")] fun writeRef(x: @Byte) + +[native("writeLnInt"), rt] fun writeLnInt(x: Int) +[native("writeLnDouble"), rt] fun writeLnDouble(x: Double) + +[native("intToSizeType"), autoCt] fun intToSizeType(n: Int): SizeType +[native("intToByte"), autoCt] fun intToByte(n: Int): Byte + + +[native("mulInt"), autoCt] fun mul(x,y: Int): Int +[native("mulDouble"), autoCt] fun mul(x,y: Double): Double +[native("divInt"), autoCt] fun div(x,y: Int): Int +[native("modInt"), autoCt] fun mod(x,y: Int): Int +[native("addInt"), autoCt] fun add(x,y: Int): Int +[native("subInt"), autoCt] fun sub(x,y: Int): Int +[native("addDouble"), autoCt] fun add(x,y: Double): Double +[native("subDouble"), autoCt] fun sub(x,y: Double): Double +[native("equalInt"), autoCt] fun equal(x,y: Int): Bool +[native("leInt"), autoCt] fun le(x,y: Int): Bool +[native("assignInt"), autoCt] fun assignInt(x: Int@, y: Int) +[native("assignRefByte"), autoCt] fun assignRef(x: (@Byte)@, y: @Byte) + +[native("llvm.pow.f64"), rt] fun mathPow(x,y: Double): Double + +[native("malloc")] fun malloc(size: SizeType): @Byte +[native("malloc")] fun mallocRt(size: SizeType): @Byte +[native("realloc")] fun realloc(p: @Byte, size: SizeType): @Byte +[native("free")] fun free(p: @Byte) +[native("ptrAdd"), autoCt] fun ptrAdd(p: @Byte, n: SizeType): @Byte +[native("ptrSub"), autoCt] fun ptrSub(p: @Byte, n: SizeType): @Byte +[native("ptrDiff"), autoCt] fun ptrDiff(p1, p2: @Byte): SizeType +[native("memcpyimpl"), autoCt] fun memcpy(dest, src: @Byte, size: SizeType) +[native("flushOutput")] fun flushOutput() + +[ct, native("$typeNumRef")] fun typeNumRef(t: Type): Int + +fun cast() +fun reinterpretCast() +[ct] fun sizeOf(): SizeType +[ct] fun typeOf(): Type +[ct] fun isValid(): Bool +fun construct() + +[ct, native("$convertsTo")] fun convertsTo(src, dest: Type): Bool +[ct, native("$staticBuffer")] fun static_buffer(n: SizeType): Type +[ct, native("$commonType")] fun commonType(t, u: Type): Type + +using oper_precedence_default = 100 +using oper_precedence___dot__ = 10000 +using oper_precedence___fapp__ = 10000 +using oper_precedence___pre__ = 990 + +using oper_precedence_= = 50 +using oper_precedence_:= = 50 +using oper_precedence_+= = 50 +using oper_precedence_-= = 50 +using oper_precedence_*= = 50 +using oper_precedence_/= = 50 +using oper_precedence_%= = 50 + +using oper_precedence_|| = 200 +using oper_precedence_^^ = 220 +using oper_precedence_&& = 240 + +using oper_precedence_< = 300 +using oper_precedence_> = 300 +using oper_precedence_<= = 300 +using oper_precedence_>= = 300 + +using oper_precedence_== = 400 +using oper_precedence_!= = 400 +using oper_precedence_=== = 400 +using oper_precedence_!== = 400 + +using oper_precedence_+ = 500 +using oper_precedence_- = 500 +using oper_precedence_* = 550 +using oper_precedence_/ = 550 +using oper_precedence_% = 550 + +using oper_precedence_<< = 50 +using oper_precedence_<<< = 50 +using oper_precedence_>> = 50 + +using oper_assoc_= = -1 +using oper_assoc_:= = -1 [native("atoi")] diff --git a/tests/Basic/StaticCtorDtor.spr b/tests/Basic/StaticCtorDtor.spr index 330495cf..167bce86 100644 --- a/tests/Basic/StaticCtorDtor.spr +++ b/tests/Basic/StaticCtorDtor.spr @@ -1,40 +1,38 @@ //!! -t "SparrowImplicitLib.spr" -fno-main datatype MyType - x: Int; + x: Int fun ctor(this: @MyType) - write('c'); write('t'); write('o'); write('r'); write('('); writeLn(')'); + write('c'); write('t'); write('o'); write('r'); write('('); writeLn(')') fun ctor(this: @MyType, i: Int) - x = i; - write('c'); write('t'); write('o'); write('r'); write('('); write(i); writeLn(')'); + x = i + write('c'); write('t'); write('o'); write('r'); write('('); write(i); writeLn(')') fun ctor(this, other: @MyType) - x = other.x; - write('c'); write('t'); write('o'); write('r'); write('('); write('C'); write(' '); write(x); writeLn(')'); + x = other.x + write('c'); write('t'); write('o'); write('r'); write('('); write('C'); write(' '); write(x); writeLn(')') fun dtor(this: MyType) - write('d'); write('t'); write('o'); write('r'); write('-'); writeLn(x); + write('d'); write('t'); write('o'); write('r'); write('-'); writeLn(x) fun ctor() - write('c'); write('t'); write('o'); write('r'); write('-'); writeLn(1); + write('c'); write('t'); write('o'); write('r'); write('-'); writeLn(1) fun dtor - write('d'); write('t'); write('o'); write('r'); write('-'); writeLn(1); + write('d'); write('t'); write('o'); write('r'); write('-'); writeLn(1) /*fun ctor(i: Int) write('c'); write('t'); write('o'); write('r'); write('-'); writeLn(2); */ fun ctor() - write('c'); write('t'); write('o'); write('r'); write('-'); writeLn(3); + write('c'); write('t'); write('o'); write('r'); write('-'); writeLn(3) fun dtor - write('d'); write('t'); write('o'); write('r'); write('-'); writeLn(2); + write('d'); write('t'); write('o'); write('r'); write('-'); writeLn(2) [native("test")] fun test(n: Int) -{ - write('o'); writeLn('k'); -} + write('o'); writeLn('k') /*<< 0 // only 4 iterations "." write "" writeLn - n = 5; + n = 5 while n > 0 ; n=n-1 "." write "" writeLn - n = 5; + n = 5 while n > 0 ; n=n-1 ; "." write "" writeLn - n = 5; + n = 5 while --n > 0 ;{} "." write "" writeLn - n = 5; + n = 5 while --n > 0 { "." write } "" writeLn - n = 5; + n = 5 while --n > 0 ; {break;} "." write "" writeLn diff --git a/tests/Basic/String.spr b/tests/Basic/String.spr index 78f48ff3..eefe4a25 100644 --- a/tests/Basic/String.spr +++ b/tests/Basic/String.spr @@ -1,45 +1,35 @@ //!! -t "SparrowImplicitLib.spr" -fno-main fun assert(b: Bool) -{ if ( !b ) - { - write('F'); write('A'); write('I'); writeLn('L'); - } -} + write('F'); write('A'); write('I'); writeLn('L') fun fassert(b: Bool) -{ if ( ! !b ) - { - write('F'); write('A'); write('I'); writeLn('L'); - } -} + write('F'); write('A'); write('I'); writeLn('L') [native("test")] fun test(n: Int) -{ - "mumu"; - writeLn("Hello, world!"); - write("Hello,"); writeLn(" world!"); + "mumu" + writeLn("Hello, world!") + write("Hello,"); writeLn(" world!") - var s: StringRef = "abracadabra"; - writeLn(s); - write(s.getChar(intToSizeType(0))); - write(s.getChar(intToSizeType(1))); - write(s.getChar(intToSizeType(2))); - write(s.getChar(intToSizeType(3))); - write(s.getChar(intToSizeType(4))); - write(s.getChar(intToSizeType(5))); - write(s.getChar(intToSizeType(6))); - write(s.getChar(intToSizeType(7))); - write(s.getChar(intToSizeType(8))); - write(s.getChar(intToSizeType(9))); - writeLn(s.getChar(intToSizeType(10))); + var s: StringRef = "abracadabra" + writeLn(s) + write(s.getChar(intToSizeType(0))) + write(s.getChar(intToSizeType(1))) + write(s.getChar(intToSizeType(2))) + write(s.getChar(intToSizeType(3))) + write(s.getChar(intToSizeType(4))) + write(s.getChar(intToSizeType(5))) + write(s.getChar(intToSizeType(6))) + write(s.getChar(intToSizeType(7))) + write(s.getChar(intToSizeType(8))) + write(s.getChar(intToSizeType(9))) + writeLn(s.getChar(intToSizeType(10))) - writeLn("---"); + writeLn("---") - writeLn("Hello," + " world!"); -} + writeLn("Hello," + " world!") /*<< (premise, conclusion: Bool) = !(premise) || conclusion; + ) +[ct] fun axiom(name: StringRef) = true // No checks performed +fun => (premise, conclusion: Bool) = !(premise) || conclusion fun lessIsOrdered(x, y, z: Ordered) = ( !(x < x) && ( (x !(y !(y (xy) == (y=y) == !(xy) == (y=y) == !(x _max; + fun isEmpty(this: MyRange) = _min > _max fun test1() -{ [ct] for i = MyRange(0, 4) - { - cout << ctEval(i) << endl; - } -} + cout << ctEval(i) << endl [ct] fun fact(n: Int): Int -{ if ( n < 2 ) - return 1; + return 1 else - return n*fact(n-1); -} + return n*fact(n-1) fun test2() -{ [ct] for i = 0..5 - { - cout << ctEval(fact(i)) << endl; - } -} + cout << ctEval(fact(i)) << endl [ct] fun createVector(min, max: Int): Vector(Int) -{ - var v = Vector(Int)(min..max); - return v; -} + var v = Vector(Int)(min..max) + return v fun test3() -{ - [ct] var v = createVector(10, 15); + [ct] var v = createVector(10, 15) [ct] for el = v.all() - { - cout << ctEval(el) << endl; - } -} + cout << ctEval(el) << endl fun sprMain -{ - var x = 10; - var y = 2; - [ct] var yy = 2; + var x = 10 + var y = 2 + [ct] var yy = 2 - test1(); - cout << "---" << endl; - test2(); - cout << "---" << endl; - test3(); -} + test1() + cout << "---" << endl + test2() + cout << "---" << endl + test3() /*<<>!") << endl; - cout << getOperPrecedence("!&!") << endl; - cout << getOperPrecedence("!^!") << endl; - cout << getOperPrecedence("!|!") << endl; - - cout << "------" << endl; - cout << 1+3*2**2*3+1 << endl; - - cout << "------" << endl; - cout << 2*3-1 << endl; // minus takes precedence over multiplication - - cout << (3-) << endl; - - cout << "------" << endl; - cout << 4 ** 3 ** 2 << endl; - } -} + cout << oper_precedence_+ << endl + cout << oper_precedence_- << endl + cout << getOperPrecedence("=") << endl + cout << getOperPrecedence("+") << endl + cout << getOperPrecedence("-") << endl + cout << getOperPrecedence("-=-=-=-=-") << endl + cout << getOperPrecedence("!<>!") << endl + cout << getOperPrecedence("!&!") << endl + cout << getOperPrecedence("!^!") << endl + cout << getOperPrecedence("!|!") << endl + + cout << "------" << endl + cout << 1+3*2**2*3+1 << endl + + cout << "------" << endl + cout << 2*3-1 << endl // minus takes precedence over multiplication + + cout << (3-) << endl + + cout << "------" << endl + cout << 4 ** 3 ** 2 << endl /*<<>>*/ datatype Test - x: Int = 10; + x: Int = 10 fun doTest1(this: Test) -{ - cout << doCall((fun n = n*n), 5) << endl; -} + cout << doCall((fun n = n*n), 5) << endl fun doTest2(this: Test) -{ - cout << doCall((fun.{x} n = n*n + x), 5) << endl; -} + cout << doCall((fun.{x} n = n*n + x), 5) << endl fun test3 -{ - var t: Test; - t doTest1; - t doTest2; -} + var t: Test + t doTest1 + t doTest2 /*<<>>*/ fun test4 -{ - cout << doCall(\fact, 5) << endl; -} + cout << doCall(\fact, 5) << endl /*<<>>*/ fun test2 -{ - var t = true; - var f = false; - - cout << (t && t) << endl; - cout << (t && f) << endl; - cout << (f && t) << endl; - cout << (f && f) << endl; - cout << "---" << endl; - cout << (t && t && t) << endl; - cout << (t && t && f) << endl; - cout << (t && f && t) << endl; - cout << (t && f && f) << endl; - cout << (f && t && t) << endl; - cout << (f && t && f) << endl; - cout << (f && f && t) << endl; - cout << (f && f && f) << endl; -} + var t = true + var f = false + + cout << (t && t) << endl + cout << (t && f) << endl + cout << (f && t) << endl + cout << (f && f) << endl + cout << "---" << endl + cout << (t && t && t) << endl + cout << (t && t && f) << endl + cout << (t && f && t) << endl + cout << (t && f && f) << endl + cout << (f && t && t) << endl + cout << (f && t && f) << endl + cout << (f && f && t) << endl + cout << (f && f && f) << endl /*<<>>*/ fun test3 -{ - cout << (getT() || getT()) << endl; - cout << (getT() || getF()) << endl; - cout << (getF() || getT()) << endl; - cout << (getF() || getF()) << endl; - cout << "---" << endl; - cout << (getT() || getT() || getT()) << endl; - cout << (getT() || getT() || getF()) << endl; - cout << (getT() || getF() || getT()) << endl; - cout << (getT() || getF() || getF()) << endl; - cout << (getF() || getT() || getT()) << endl; - cout << (getF() || getT() || getF()) << endl; - cout << (getF() || getF() || getT()) << endl; - cout << (getF() || getF() || getF()) << endl; -} + cout << (getT() || getT()) << endl + cout << (getT() || getF()) << endl + cout << (getF() || getT()) << endl + cout << (getF() || getF()) << endl + cout << "---" << endl + cout << (getT() || getT() || getT()) << endl + cout << (getT() || getT() || getF()) << endl + cout << (getT() || getF() || getT()) << endl + cout << (getT() || getF() || getF()) << endl + cout << (getF() || getT() || getT()) << endl + cout << (getF() || getT() || getF()) << endl + cout << (getF() || getF() || getT()) << endl + cout << (getF() || getF() || getF()) << endl /*<<>>*/ fun test4 -{ - cout << (getT() && getT()) << endl; - cout << (getT() && getF()) << endl; - cout << (getF() && getT()) << endl; - cout << (getF() && getF()) << endl; - cout << "---" << endl; - cout << (getT() && getT() && getT()) << endl; - cout << (getT() && getT() && getF()) << endl; - cout << (getT() && getF() && getT()) << endl; - cout << (getT() && getF() && getF()) << endl; - cout << (getF() && getT() && getT()) << endl; - cout << (getF() && getT() && getF()) << endl; - cout << (getF() && getF() && getT()) << endl; - cout << (getF() && getF() && getF()) << endl; -} + cout << (getT() && getT()) << endl + cout << (getT() && getF()) << endl + cout << (getF() && getT()) << endl + cout << (getF() && getF()) << endl + cout << "---" << endl + cout << (getT() && getT() && getT()) << endl + cout << (getT() && getT() && getF()) << endl + cout << (getT() && getF() && getT()) << endl + cout << (getT() && getF() && getF()) << endl + cout << (getF() && getT() && getT()) << endl + cout << (getF() && getT() && getF()) << endl + cout << (getF() && getF() && getT()) << endl + cout << (getF() && getF() && getF()) << endl /*<<>>*/ fun test5 -{ - cout << (BoolValue(false).b || BoolValue(false).b); cout << endl; - cout << (BoolValue(false).b || BoolValue(true).b); cout << endl; - cout << (BoolValue(true).b || BoolValue(false).b); cout << endl; - cout << (BoolValue(true).b || BoolValue(true).b); cout << endl; - cout << "---" << endl; - cout << (BoolValue(false).b && BoolValue(false).b); cout << endl; - cout << (BoolValue(false).b && BoolValue(true).b); cout << endl; - cout << (BoolValue(true).b && BoolValue(false).b); cout << endl; - cout << (BoolValue(true).b && BoolValue(true).b); cout << endl; - - cout << "------" << endl; - cout << (BoolValue(false).b || BoolValue(false).b || BoolValue(true).b); cout << endl; - cout << (BoolValue(true).b && BoolValue(true).b && BoolValue(false).b); cout << endl; -} + cout << (BoolValue(false).b || BoolValue(false).b); cout << endl + cout << (BoolValue(false).b || BoolValue(true).b); cout << endl + cout << (BoolValue(true).b || BoolValue(false).b); cout << endl + cout << (BoolValue(true).b || BoolValue(true).b); cout << endl + cout << "---" << endl + cout << (BoolValue(false).b && BoolValue(false).b); cout << endl + cout << (BoolValue(false).b && BoolValue(true).b); cout << endl + cout << (BoolValue(true).b && BoolValue(false).b); cout << endl + cout << (BoolValue(true).b && BoolValue(true).b); cout << endl + + cout << "------" << endl + cout << (BoolValue(false).b || BoolValue(false).b || BoolValue(true).b); cout << endl + cout << (BoolValue(true).b && BoolValue(true).b && BoolValue(false).b); cout << endl /*<<=2 && 1>=2); -} + cout << (1 + 2 * 3) << endl + writeLnBool(true || true && false) + writeLnBool(1==1 || 2==2 && 1==2) + writeLnBool(1<=1 || 2>=2 && 1>=2) /*<<>>*/ fun test2 -{ - printHeader(); - printType(Int); - printType(Int ct); - printType(Int rt); - printType(changeMode(Int, 0)); - printType(changeMode(Int, 1)); - printType(changeMode(Int, 2)); -} + printHeader() + printType(Int) + printType(Int ct) + printType(Int rt) + printType(changeMode(Int, 0)) + printType(changeMode(Int, 1)) + printType(changeMode(Int, 2)) /*<<>>*/ fun test3 -{ - var x: Double; - var xr: @Double = x; - var xrr: @ @Double = xr; - - printHeader(); - printType(typeOf(x)); - printType(typeOf(xr)); - printType(typeOf(xrr)); - printType(changeRefCount(Int, 0)); - printType(changeRefCount(Int, 1)); - printType(changeRefCount(Int, 9)); - printType(changeRefCount(typeOf(xrr), 0)); -} + var x: Double + var xr: @Double = x + var xrr: @ @Double = xr + + printHeader() + printType(typeOf(x)) + printType(typeOf(xr)) + printType(typeOf(xrr)) + printType(changeRefCount(Int, 0)) + printType(changeRefCount(Int, 1)) + printType(changeRefCount(Int, 9)) + printType(changeRefCount(typeOf(xrr), 0)) /*<<>>*/ fun test4 -{ - var x: Double; - var xr: @Double = x; - var xrr: @ @Double = xr; - - cout << ife(isRef(Int), "ref", "no ref") << endl; - cout << ife(isRef(@Int), "ref", "no ref") << endl; - cout << "---\n"; - - cout << description(addRef(Int)) << endl; - cout << description(addRef(@Int)) << endl; - cout << "---\n"; - - cout << description(removeRef(Int)) << endl; - cout << description(removeRef(@Int)) << endl; - cout << description(removeRef(@ @Int)) << endl; - cout << "---\n"; - - cout << description(removeAllRef(Int)) << endl; - cout << description(removeAllRef(@Int)) << endl; - cout << description(removeAllRef(@ @Int)) << endl; - cout << "---\n"; - - cout << description(atLeastOneRef(Int)) << endl; - cout << description(atLeastOneRef(@Int)) << endl; - cout << description(atLeastOneRef(@ @Int)) << endl; -} + var x: Double + var xr: @Double = x + var xrr: @ @Double = xr + + cout << ife(isRef(Int), "ref", "no ref") << endl + cout << ife(isRef(@Int), "ref", "no ref") << endl + cout << "---\n" + + cout << description(addRef(Int)) << endl + cout << description(addRef(@Int)) << endl + cout << "---\n" + + cout << description(removeRef(Int)) << endl + cout << description(removeRef(@Int)) << endl + cout << description(removeRef(@ @Int)) << endl + cout << "---\n" + + cout << description(removeAllRef(Int)) << endl + cout << description(removeAllRef(@Int)) << endl + cout << description(removeAllRef(@ @Int)) << endl + cout << "---\n" + + cout << description(atLeastOneRef(Int)) << endl + cout << description(atLeastOneRef(@Int)) << endl + cout << description(atLeastOneRef(@ @Int)) << endl /*<<0 - { - (1...r) copy count.subrange(0, r); + (1...r) copy count.subrange(0, r) for i = 0..n - perm(i) = perm1(i); + perm(i) = perm1(i) // Count flips and update max and checksum - var f = 0; - var k = perm(0); + var f = 0 + var k = perm(0) while k != 0 - { for i = 0..(k+1)/2 - swap(perm(i), perm(k-i)); - k = perm(0); - ++f; - } - if f>flips; flips = f; - if nperm%2==0; checksum += f; - else checksum -= f; + swap(perm(i), perm(k-i)) + k = perm(0) + ++f + if f>flips; flips = f + if nperm%2==0; checksum += f + else checksum -= f // Use incremental change to generate another permutation - r = 1; + r = 1 while true - { if ( r == n ) - { - cout << checksum << endl; - return flips; - } - var p0 = perm1(0); + cout << checksum << endl + return flips + var p0 = perm1(0) for i = 0..r - perm1(i) = perm1(i+1); - perm1(r) = p0; + perm1(i) = perm1(i+1) + perm1(r) = p0 - --count(r); - if ( count(r) > 0 ) break; - else ++r; - } - ++nperm; - } - return flips; -} + --count(r) + if ( count(r) > 0 ) break + else ++r + ++nperm + return flips fun sprMain -{ - var n = programArgs(1) asInt; - var r = fannkuch(n); - cout << "Pfannkuchen(" << n << ") = " << r << endl; -} + var n = programArgs(1) asInt + var r = fannkuch(n) + cout << "Pfannkuchen(" << n << ") = " << r << endl /*<<ONE Homo sapiens alu\n"; - write(alu.all cycle, n*2); + cout << ">ONE Homo sapiens alu\n" + write(alu.all cycle, n*2) - cout << ">TWO IUB ambiguity codes\n"; - write(mkRandomCharRange(iubStr, iubCum), n*3); + cout << ">TWO IUB ambiguity codes\n" + write(mkRandomCharRange(iubStr, iubCum), n*3) - cout << ">THREE Homo sapiens frequency\n"; - write(mkRandomCharRange(homoSapiensStr, hsCum), n*5); -} + cout << ">THREE Homo sapiens frequency\n" + write(mkRandomCharRange(homoSapiensStr, hsCum), n*5) /*<<ONE Homo sapiens alu diff --git a/tests/BenchmarkGame/fastaredux.spr b/tests/BenchmarkGame/fastaredux.spr index a098211b..f587cee3 100644 --- a/tests/BenchmarkGame/fastaredux.spr +++ b/tests/BenchmarkGame/fastaredux.spr @@ -1,57 +1,50 @@ //!! -O2 -import std.array; -import std.algorithms; -import std.string; -import std.tuple; +import std.array +import std.algorithms +import std.string +import std.tuple fun write(r: Range, length: Int) if isValid(Char(r.front)) -{ - using lineLength = 60; - var line: String = lineLength; + using lineLength = 60 + var line: String = lineLength for n = length..0 ../ (-lineLength) - { - var len = min(n, lineLength); + var len = min(n, lineLength) for i = 0..len - line(i) = (r++); + line(i) = (r++) if ( len < lineLength ) - line.resize(len); - cout << line << "\n"; - } -} + line.resize(len) + cout << line << "\n" -var seed: Int = 42; +var seed: Int = 42 fun nextRandom: Double -{ - using IM = 139968; - seed = (seed * 3877 + 29573) % IM; - return seed * 1.0/IM; -} + using IM = 139968 + seed = (seed * 3877 + 29573) % IM + return seed * 1.0/IM datatype RandTableRange - using RetType = Char; - using numEntries = 4095; - lookup: Array((Float rt)*(Char rt)); + using RetType = Char + using numEntries = 4095 + lookup: Array((Float rt)*(Char rt)) fun ctor(this: @RandTableRange, data: Range) - lookup.ctor(numEntries+1); + lookup.ctor(numEntries+1) for i = 0...numEntries while i > data.front().v1*numEntries - data.popFront(); - lookup(i) = data.front; + data.popFront() + lookup(i) = data.front -fun isEmpty(this: @RandTableRange) = false; +fun isEmpty(this: @RandTableRange) = false fun popFront(this: @RandTableRange) {} fun front(this: @RandTableRange): Char - var r = nextRandom; - var idx: SizeType = r*numEntries; + var r = nextRandom + var idx: SizeType = r*numEntries while lookup(idx).v1 < r - ++idx; - return lookup(idx).v2; + ++idx + return lookup(idx).v2 fun sprMain -{ - var n = (programArgs(1) asInt); + var n = (programArgs(1) asInt) var alu: String = ( "GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGG" + @@ -60,25 +53,24 @@ fun sprMain "ACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCA" + "GCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG" + "AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC" + - "AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA"); + "AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA") - var iubStr: String = "acgtBDHKMNRSVWY"; - var iubDist = values(0.27f, 0.12f, 0.12f, 0.27f) ++ repeat(0.02f, 11); - var iubCum = scanLeft(0.0f, iubDist, (fun acc,v = acc+v)); + var iubStr: String = "acgtBDHKMNRSVWY" + var iubDist = values(0.27f, 0.12f, 0.12f, 0.27f) ++ repeat(0.02f, 11) + var iubCum = scanLeft(0.0f, iubDist, (fun acc,v = acc+v)) - var homoSapiensStr: String = "acgt"; - var hsDist = values(0.3029549426680f, 0.1979883004921f, 0.1975473066391f, 0.3015094502008f); - var hsCum = scanLeft(0.0f, hsDist, (fun acc,v = acc+v)); + var homoSapiensStr: String = "acgt" + var hsDist = values(0.3029549426680f, 0.1979883004921f, 0.1975473066391f, 0.3015094502008f) + var hsCum = scanLeft(0.0f, hsDist, (fun acc,v = acc+v)) - cout << ">ONE Homo sapiens alu\n"; - write(alu.all cycle, n*2); + cout << ">ONE Homo sapiens alu\n" + write(alu.all cycle, n*2) - cout << ">TWO IUB ambiguity codes\n"; - write(RandTableRange(zip(iubCum, iubStr.all)), n*3); + cout << ">TWO IUB ambiguity codes\n" + write(RandTableRange(zip(iubCum, iubStr.all)), n*3) - cout << ">THREE Homo sapiens frequency\n"; - write(RandTableRange(zip(hsCum, homoSapiensStr.all)), n*5); -} + cout << ">THREE Homo sapiens frequency\n" + write(RandTableRange(zip(hsCum, homoSapiensStr.all)), n*5) /*<<ONE Homo sapiens alu diff --git a/tests/BenchmarkGame/meteor.spr b/tests/BenchmarkGame/meteor.spr index c2fa83f1..1529d190 100644 --- a/tests/BenchmarkGame/meteor.spr +++ b/tests/BenchmarkGame/meteor.spr @@ -6,13 +6,13 @@ * After C implementation of Christian Vosteen */ -import std.staticArray; -import std.algorithms; -import bitOper; +import std.staticArray +import std.algorithms +import bitOper -using nPieces = 10; -using nPositions = 50; -using nRotations = 12; +using nPieces = 10 +using nPositions = 50 +using nRotations = 12 /* The board is a 50 cell hexagonal pattern. For . . . . . * maximum speed the board will be implemented as . . . . . @@ -133,45 +133,43 @@ package P1 { datatype Direction - id: Int; - - using E = Direction(0); - using ESE = Direction(1); - using SE = Direction(2); - using S = Direction(3); - using SW = Direction(4); - using WSW = Direction(5); - using W = Direction(6); - using WNW = Direction(7); - using NW = Direction(8); - using N = Direction(9); - using NE = Direction(10); - using ENE = Direction(11); - using numValues = 12; + id: Int + + using E = Direction(0) + using ESE = Direction(1) + using SE = Direction(2) + using S = Direction(3) + using SW = Direction(4) + using WSW = Direction(5) + using W = Direction(6) + using WNW = Direction(7) + using NW = Direction(8) + using N = Direction(9) + using NE = Direction(10) + using ENE = Direction(11) + using numValues = 12 fun ctor(this: @Direction, id: Int) - this.id ctor id; + this.id ctor id -var pieceDef: StaticArray2d(Direction, 10, 4); +var pieceDef: StaticArray2d(Direction, 10, 4) fun setPiece(p: @StaticArray(Direction, 4), a, b, c, d: Direction) { p(0) = a; p(1) = b; p(2) = c; p(3) = d; } fun ctor -{ - using Direction.*; - setPiece(pieceDef(0), E, E, E, SE); - setPiece(pieceDef(1), SE, E, NE, E); - setPiece(pieceDef(2), E, E, SE, SW); - setPiece(pieceDef(3), E, E, SW, SE); - setPiece(pieceDef(4), SE, E, NE, S); - setPiece(pieceDef(5), E, E, SW, E); - setPiece(pieceDef(6), E, SE, SE, NE); - setPiece(pieceDef(7), E, SE, SE, W); - setPiece(pieceDef(8), E, SE, E, E); - setPiece(pieceDef(9), E, E, E, SW); -} + using Direction.* + setPiece(pieceDef(0), E, E, E, SE) + setPiece(pieceDef(1), SE, E, NE, E) + setPiece(pieceDef(2), E, E, SE, SW) + setPiece(pieceDef(3), E, E, SW, SE) + setPiece(pieceDef(4), SE, E, NE, S) + setPiece(pieceDef(5), E, E, SW, E) + setPiece(pieceDef(6), E, SE, SE, NE) + setPiece(pieceDef(7), E, SE, SE, W) + setPiece(pieceDef(8), E, SE, E, E) + setPiece(pieceDef(9), E, E, E, SW) /* To minimize the amount of work done in the recursive solve function below, @@ -187,17 +185,17 @@ fun ctor // the next 3 variables are the result of the first stage // represents the mask of a given piece -var pieces: StaticArray3d(ULong, nPieces, nPositions, nRotations); +var pieces: StaticArray3d(ULong, nPieces, nPositions, nRotations) // represents the first empty spot after placing the piece -var nextCell: StaticArray3d(Byte, nPieces, nPositions, nRotations); +var nextCell: StaticArray3d(Byte, nPieces, nPositions, nRotations) // represents the piece count for pieces (last dimension) -var pieceCounts: StaticArray2d(Int, nPieces, nPositions); +var pieceCounts: StaticArray2d(Int, nPieces, nPositions) /* Returns the direction rotated 60 degrees clockwise */ -fun rotate(dir: Direction) = Direction((dir.id+2) % Direction.numValues); +fun rotate(dir: Direction) = Direction((dir.id+2) % Direction.numValues) /* Returns the direction flipped on the horizontal axis */ -fun flip(dir: Direction) = Direction((Direction.numValues-dir.id) % Direction.numValues); +fun flip(dir: Direction) = Direction((Direction.numValues-dir.id) % Direction.numValues) @@ -207,75 +205,66 @@ fun flip(dir: Direction) = Direction((Direction.numValues-dir.id) % Direction.nu * out_of_bounds function first. */ fun shift(cell: Byte, dir: Direction): Byte -{ - var oddRow: Bool = (cell/5) % 2 != 0; - - using Direction.*; - if ( dir == E ) return cell + Byte(1); - else if ( dir == ESE && oddRow ) return cell + Byte(7); - else if ( dir == ESE ) return cell + Byte(6); - else if ( dir == SE && oddRow ) return cell + Byte(6); - else if ( dir == SE ) return cell + Byte(5); - else if ( dir == S ) return cell + Byte(10); - else if ( dir == SW && oddRow ) return cell + Byte(5); - else if ( dir == SW ) return cell + Byte(4); - else if ( dir == WSW && oddRow ) return cell + Byte(4); - else if ( dir == WSW ) return cell + Byte(3); - else if ( dir == W ) return cell - Byte(1); - else if ( dir == WNW && oddRow ) return cell - Byte(6); - else if ( dir == WNW ) return cell - Byte(7); - else if ( dir == NW && oddRow ) return cell - Byte(5); - else if ( dir == NW ) return cell - Byte(6); - else if ( dir == N ) return cell - Byte(10); - else if ( dir == NE && oddRow ) return cell - Byte(4); - else if ( dir == NE ) return cell - Byte(5); - else if ( dir == ENE && oddRow ) return cell - Byte(3); - else if ( dir == ENE ) return cell - Byte(4); - else return cell; -} + var oddRow: Bool = (cell/5) % 2 != 0 + + using Direction.* + if ( dir == E ) return cell + Byte(1) + else if ( dir == ESE && oddRow ) return cell + Byte(7) + else if ( dir == ESE ) return cell + Byte(6) + else if ( dir == SE && oddRow ) return cell + Byte(6) + else if ( dir == SE ) return cell + Byte(5) + else if ( dir == S ) return cell + Byte(10) + else if ( dir == SW && oddRow ) return cell + Byte(5) + else if ( dir == SW ) return cell + Byte(4) + else if ( dir == WSW && oddRow ) return cell + Byte(4) + else if ( dir == WSW ) return cell + Byte(3) + else if ( dir == W ) return cell - Byte(1) + else if ( dir == WNW && oddRow ) return cell - Byte(6) + else if ( dir == WNW ) return cell - Byte(7) + else if ( dir == NW && oddRow ) return cell - Byte(5) + else if ( dir == NW ) return cell - Byte(6) + else if ( dir == N ) return cell - Byte(10) + else if ( dir == NE && oddRow ) return cell - Byte(4) + else if ( dir == NE ) return cell - Byte(5) + else if ( dir == ENE && oddRow ) return cell - Byte(3) + else if ( dir == ENE ) return cell - Byte(4) + else return cell /* Returns wether the specified cell and direction will land outside * of the board. Used to determine if a piece is at a legal board * location or not. */ fun outOfBounds(cell: Byte, dir: Direction): Bool -{ - var col = cell % 5; - var colEx = cell % 10; - using Direction.*; - if ( dir == E ) return col==4; - else if ( dir == ESE ) return colEx==4 || colEx==8 || colEx==9 || cell>=45; - else if ( dir == SE ) return colEx==9 || cell>=45; - else if ( dir == S ) return cell>=40; - else if ( dir == SW ) return colEx==0 || cell>=45; - else if ( dir == WSW ) return colEx==0 || colEx==1 || colEx==5 || cell>=45; - else if ( dir == W ) return col==0; - else if ( dir == WNW ) return colEx==0 || colEx==1 || colEx==5 || cell<5; - else if ( dir == NW ) return colEx==0 || cell<5; - else if ( dir == N ) return cell<10; - else if ( dir == NE ) return colEx==9 || cell<5; - else if ( dir == ENE ) return colEx==4 || colEx==8 || colEx==9 || cell<5; - else return false; -} + var col = cell % 5 + var colEx = cell % 10 + using Direction.* + if ( dir == E ) return col==4 + else if ( dir == ESE ) return colEx==4 || colEx==8 || colEx==9 || cell>=45 + else if ( dir == SE ) return colEx==9 || cell>=45 + else if ( dir == S ) return cell>=40 + else if ( dir == SW ) return colEx==0 || cell>=45 + else if ( dir == WSW ) return colEx==0 || colEx==1 || colEx==5 || cell>=45 + else if ( dir == W ) return col==0 + else if ( dir == WNW ) return colEx==0 || colEx==1 || colEx==5 || cell<5 + else if ( dir == NW ) return colEx==0 || cell<5 + else if ( dir == N ) return cell<10 + else if ( dir == NE ) return colEx==9 || cell<5 + else if ( dir == ENE ) return colEx==4 || colEx==8 || colEx==9 || cell<5 + else return false /* Rotate a piece 60 degrees clockwise */ fun rotatePiece(piece: Int) -{ for p: @Direction = pieceDef(piece).all - p = rotate(p); -} + p = rotate(p) /* Flip a piece along the horizontal axis */ fun flipPiece(piece: Int) -{ for p: @Direction = pieceDef(piece).all - p = flip(p); -} + p = flip(p) /* Convenience function to quickly calculate all of the indices for a piece */ fun calcCellIndices(cell: @StaticArray(Byte, 5), piece: Int, index: Byte) -{ - var hasOddDir = false; + var hasOddDir = false //for i = 0..4 //{ // var dir = pieceDef(piece)(i); @@ -283,93 +272,79 @@ fun calcCellIndices(cell: @StaticArray(Byte, 5), piece: Int, index: Byte) // hasOddDir = true; //} if ( hasOddDir ) - { - cout << "Piece: " << piece << ": "; + cout << "Piece: " << piece << ": " for i = 0..4 - cout << ' ' << pieceDef(piece)(i).id; - cout << endl; - } - cell(0) = index; - cell(1) = shift(cell(0), pieceDef(piece)(0)); - cell(2) = shift(cell(1), pieceDef(piece)(1)); - cell(3) = shift(cell(2), pieceDef(piece)(2)); - cell(4) = shift(cell(3), pieceDef(piece)(3)); -} + cout << ' ' << pieceDef(piece)(i).id + cout << endl + cell(0) = index + cell(1) = shift(cell(0), pieceDef(piece)(0)) + cell(2) = shift(cell(1), pieceDef(piece)(1)) + cell(3) = shift(cell(2), pieceDef(piece)(2)) + cell(4) = shift(cell(3), pieceDef(piece)(3)) /* Convenience function to quickly calculate if a piece fits on the board */ fun cellsFitOnBoard(cell: @StaticArray(Byte, 5), piece: Int): Bool -{ return(!outOfBounds(cell(0), pieceDef(piece)(0)) && !outOfBounds(cell(1), pieceDef(piece)(1)) && !outOfBounds(cell(2), pieceDef(piece)(2)) && !outOfBounds(cell(3), pieceDef(piece)(3)) - ); -} + ) /* Returns the lowest index of the cells of a piece. * I use the lowest index that a piece occupies as the index for looking up * the piece in the solve function. */ fun minimumOfCells(cell: @StaticArray(Byte, 5)): Byte -{ // TODO: Use algo here - var minimum = cell(0); - minimum = Byte(ife(cell(1) < minimum, cell(1), minimum)); - minimum = Byte(ife(cell(2) < minimum, cell(2), minimum)); - minimum = Byte(ife(cell(3) < minimum, cell(3), minimum)); - minimum = Byte(ife(cell(4) < minimum, cell(4), minimum)); - return minimum; -} + var minimum = cell(0) + minimum = Byte(ife(cell(1) < minimum, cell(1), minimum)) + minimum = Byte(ife(cell(2) < minimum, cell(2), minimum)) + minimum = Byte(ife(cell(3) < minimum, cell(3), minimum)) + minimum = Byte(ife(cell(4) < minimum, cell(4), minimum)) + return minimum /* Calculate the lowest possible open cell if the piece is placed on the board. * Used to later reduce the amount of time searching for open cells in the * solve function. */ -fun firstEmptyCell(cell: @StaticArray(Byte, 5), min: Byte): Byte { +fun firstEmptyCell(cell: @StaticArray(Byte, 5), min: Byte): Byte while ( min == cell(0) || min == cell(1) || min == cell(2) || min == cell(3) || min == cell(4) ) - ++min; - return min; -} + ++min + return min /* Generate the unsigned long long int that will later be anded with the * board to determine if it fits. */ fun bitmaskFromCells(cell: @StaticArray(Byte, 5)): ULong -{ - var pieceMask: ULong; + var pieceMask: ULong for c = cell.all - pieceMask !|!= (ULong(1L) !<>! Byte(1)) !|! Byte(0x10); - var block = (row1 !^! row2) !&! row2 !&! ((row1 !^! row2Shift) !&! row2Shift); + row2Shift = (row2 !>>! Byte(1)) !|! Byte(0x10) + var block = (row1 !^! row2) !&! row2 !&! ((row1 !^! row2Shift) !&! row2Shift) /* Test for groups of 0's */ - var inZeroes = false; - var groupOkay = false; + var inZeroes = false + var groupOkay = false for i = 0..5 - { if ( (row1 !&! (1 !<= 40 ) - return false; - var currentTriple: Int = (board !>>! ((cell / 5) * 5)) !&! TRIPLE_MASK; + return false + var currentTriple: Int = (board !>>! ((cell / 5) * 5)) !&! TRIPLE_MASK if ( (cell / 5 % 2) != 0 ) - return badOddTriple(currentTriple); + return badOddTriple(currentTriple) else - return badEvenTriple(currentTriple); -} + return badEvenTriple(currentTriple) /* The recursive solve algorithm. Try to place each permutation in the upper- @@ -569,108 +512,82 @@ fun boardHasIslands(cell: Byte): Bool * at each successful piece placement. This data is used to create a 50 char * array if a solution is found. */ -var avail: Short = 0x03FF; -var solNums: StaticArray(Byte, nPieces); -var solMasks: StaticArray(ULong, nPieces); -var solutions: StaticArray2d(Byte, 2100, nPositions); -var solutionCount = 0; -var maxSolutions = 2100; +var avail: Short = 0x03FF +var solNums: StaticArray(Byte, nPieces) +var solMasks: StaticArray(ULong, nPieces) +var solutions: StaticArray2d(Byte, 2100, nPositions) +var solutionCount = 0 +var maxSolutions = 2100 fun recordSolution -{ for solNo = 0..10 - { - var solMask = solMasks(solNo); + var solMask = solMasks(solNo) for index = 0..nPositions - { if ( (solMask !&! 1) != 0 ) - { - solutions(solutionCount)(index) = solNums(solNo); + solutions(solutionCount)(index) = solNums(solNo) /* Board rotated 180 degrees is a solution too! */ - solutions(solutionCount+1)(49-index) = solNums(solNo); - } - solMask = solMask !>>! 1; - } - } - solutionCount += 2; -} + solutions(solutionCount+1)(49-index) = solNums(solNo) + solMask = solMask !>>! 1 + solutionCount += 2 fun solve(depth, cell: Int) -{ if ( solutionCount >= maxSolutions ) - return; + return while (board !&! (1L !< numKeys - keysPerBucket /= 2; - var numBuckets = (numKeys-1)/keysPerBucket + UInt(1); - this.displacements.ctor(numBuckets, 0); + keysPerBucket /= 2 + var numBuckets = (numKeys-1)/keysPerBucket + UInt(1) + this.displacements.ctor(numBuckets, 0) - var numOp = 0; + var numOp = 0 - var keysToBuckets: Array(Vector(StringRef)) = numBuckets; + var keysToBuckets: Array(Vector(StringRef)) = numBuckets // Split the keys into buckets for key: @AnyType = keys.all() //cout << "Key: " << key.asStringRef() << "\n"; - var pos = _Impl.doHash(key.asStringRef(), _Impl.hashSeed) % numBuckets; - keysToBuckets(pos).pushBack(key.asStringRef()); + var pos = _Impl.doHash(key.asStringRef(), _Impl.hashSeed) % numBuckets + keysToBuckets(pos).pushBack(key.asStringRef()) // Sort the buckets in failing order according to their size - sort(keysToBuckets.all(), (fun (lhs, rhs: @Vector(StringRef)) = lhs.size() > rhs.size())); + sort(keysToBuckets.all(), (fun (lhs, rhs: @Vector(StringRef)) = lhs.size() > rhs.size())) - var placedKeys: Bitset = numValues; // Bitset with the positions in the final array that are occupied - var slots: Vector(UInt); // Local - the slots (in the final array) to be occupied by iterating bucket + var placedKeys: Bitset = numValues // Bitset with the positions in the final array that are occupied + var slots: Vector(UInt) // Local - the slots (in the final array) to be occupied by iterating bucket // Process the buckets; start with the ones that contain the most items // Here we process buckets that have at least 2 keys in them - var b = 0; + var b = 0 while b < numBuckets; ++b - var bucket: @AnyType = keysToBuckets(b); + var bucket: @AnyType = keysToBuckets(b) if ( bucket.size() <= 1 ) - break; + break - var d = 1; // The displacement for this bucket - slots.clear(); + var d = 1 // The displacement for this bucket + slots.clear() // Start trying different displacements for this buckets, so that we can place all the // keys in this bucket without conflicts with keys from previous buckets. - var item = 0; + var item = 0 while item < bucket.size() - var slot: UInt = _Impl.doHash(bucket(item), d) % numValues; - var slotAlreadyUsed = !find(slots.all(), slot).isEmpty(); - ++numOp; + var slot: UInt = _Impl.doHash(bucket(item), d) % numValues + var slotAlreadyUsed = !find(slots.all(), slot).isEmpty() + ++numOp if ( placedKeys.testBit(slot) || slotAlreadyUsed ) // We have a conflict; try another displacement and start over - ++d; - item = 0; - slots.clear(); + ++d + item = 0 + slots.clear() else // No conflict; continue - slots.pushBack(slot); - ++item; + slots.pushBack(slot) + ++item if ( d > 1000*numValues ) - cout << "WARNING: Cannot find displacement! Do you have duplicates?\n"; - os.exit(-1); + cout << "WARNING: Cannot find displacement! Do you have duplicates?\n" + os.exit(-1) // This is guaranteed to finish quickly // We found a displacement that works for the current bucket (it doesn't yield overlaps with previous buckets) - displacements(_Impl.doHash(bucket(0), _Impl.hashSeed) % numBuckets) = d; + displacements(_Impl.doHash(bucket(0), _Impl.hashSeed) % numBuckets) = d for i=0..bucket.size() - placedKeys.setBit(slots(i)); + placedKeys.setBit(slots(i)) // Now process the buckets with 1 key in them. // To speed up processing, directly assign them an item; use a negative index as a discriminator - var emptySlot = 0; + var emptySlot = 0 while b < numBuckets; ++b - var bucket: @AnyType = keysToBuckets(b); + var bucket: @AnyType = keysToBuckets(b) if ( bucket.size() == 0 ) - break; + break // Find an empty slot, iteratively - all the slots until 'emptySlot' are guaranteed to be occupied while placedKeys.testBit(emptySlot) - ++emptySlot; + ++emptySlot // We subtract one to ensure it's negative even if the zero-th slot was used. - displacements(_Impl.doHash(bucket(0), _Impl.hashSeed) % numBuckets) = -emptySlot-1; - placedKeys.setBit(emptySlot); + displacements(_Impl.doHash(bucket(0), _Impl.hashSeed) % numBuckets) = -emptySlot-1 + placedKeys.setBit(emptySlot) //_dumpBuckets("buckets final, ", keysToBuckets); //cout << "Executed: " << numOp << " operations\n"; fun ctorFromCt(this: @MinPerfHash, src: MinPerfHash ct) - numKeys ctor src.numKeys; - numValues ctor src.numValues; + numKeys ctor src.numKeys + numValues ctor src.numValues - [ct] var dispStrCt = StringRef(src.displacements.begin_.bytePtr(), src.displacements.end_.bytePtr()); - var dispStr = dispStrCt; - displacements ctor ContiguousMemoryRange(UInt)(RawPtr(UInt).fromBytePtr(dispStr.begin), RawPtr(UInt).fromBytePtr(dispStr.end)); + [ct] var dispStrCt = StringRef(src.displacements.begin_.bytePtr(), src.displacements.end_.bytePtr()) + var dispStr = dispStrCt + displacements ctor ContiguousMemoryRange(UInt)(RawPtr(UInt).fromBytePtr(dispStr.begin), RawPtr(UInt).fromBytePtr(dispStr.end)) fun search(this: @MinPerfHash, key: StringRef): UInt // Get the displacement from the table... - var d = displacements(_Impl.doHash(key, _Impl.hashSeed) % displacements.size()); + var d = displacements(_Impl.doHash(key, _Impl.hashSeed) % displacements.size()) // If the displacement is negative, directly return; otherwise compute the final hash - return ife(d<0, Int(-d-1), Int(_Impl.doHash(key, d) % numValues)); + return ife(d<0, Int(-d-1), Int(_Impl.doHash(key, d) % numValues)) -fun ()(this: @MinPerfHash, key: StringRef) = this.search(key); +fun ()(this: @MinPerfHash, key: StringRef) = this.search(key) fun _dumpBuckets(this: @MinPerfHash, prefix: StringRef, bucketKeys: @Array(Vector(StringRef))) if ( bucketKeys.size() != displacements.size() ) - cout << "FAILURE: bucket size mismatch\n"; - os.exit(-1); - cout << prefix << "size="<0 ; cout << ", "; - cout << bucketKeys(i)(j); - cout << "\n"; - cout << ")\n\n"; + if j>0 ; cout << ", " + cout << bucketKeys(i)(j) + cout << "\n" + cout << ")\n\n" fun _dumpDisplacements(this: @MinPerfHash, prefix: StringRef) - cout << prefix << "size="<= numVals ) - cout << "FAILURE: Hash " << h << " is too big (max: " << size << ")\n"; + cout << "FAILURE: Hash " << h << " is too big (max: " << size << ")\n" - usedHashs.setBit(h); + usedHashs.setBit(h) fun testRt(testRepCount, totalRepCount, keysToLoad: Int) - cout << "test RT\n"; + cout << "test RT\n" // Read the keys from the file - var keysRt = readFileLines(keysFilename, keysToLoad); + var keysRt = readFileLines(keysFilename, keysToLoad) // Repeat the work, and test for performance for i = 0..totalRepCount // Build the hash - var hash = minPerfHash(keysRt); + var hash = minPerfHash(keysRt) // Test the keys, several times for j = 0..testRepCount - checkHashIsOk(hash, keysRt); + checkHashIsOk(hash, keysRt) [ct] if ( testType == 1 ) fun testCt(testRepCount, totalRepCount: Int, maxKeys: UInt ct) - cout << "test CT\n"; + cout << "test CT\n" // Read the keys from the file - [ct] var keysCt = readFileLines(keysFilename, maxKeys); - var keysRt = readFileLines(keysFilename, maxKeys); + [ct] var keysCt = readFileLines(keysFilename, maxKeys) + var keysRt = readFileLines(keysFilename, maxKeys) // Repeat the work, and test for performance for i = 0..totalRepCount // Build the hash - [ct] var hashCt = minPerfHash(keysCt); - var hash = hashCt; + [ct] var hashCt = minPerfHash(keysCt) + var hash = hashCt // Test the keys, several times for j = 0..testRepCount - checkHashIsOk(hash, keysRt); + checkHashIsOk(hash, keysRt) [ct] if ( testType == 2 ) fun testCtVsRtPerf(testRepCount, totalRepCount: Int) - cout << "test CT/RT speedup\n"; + cout << "test CT/RT speedup\n" - var timerKeys: Timer; - [ct] var keysCt = readFileLines(keysFilename, maxKeys); - var keysRt = readFileLines(keysFilename, maxKeys); - cout << "Reading keys time: " << timerKeys.elapsed() << "\n"; + var timerKeys: Timer + [ct] var keysCt = readFileLines(keysFilename, maxKeys) + var keysRt = readFileLines(keysFilename, maxKeys) + cout << "Reading keys time: " << timerKeys.elapsed() << "\n" - var timerRt: Timer; + var timerRt: Timer for i = 0..totalRepCount // Build the hash - var hash = minPerfHash(keysRt); + var hash = minPerfHash(keysRt) // Test the keys, several times for j = 0..testRepCount - checkHashIsOk(hash, keysRt); - var tRt = timerRt.elapsed(); - cout << "Total RT time: " << tRt << "\n"; + checkHashIsOk(hash, keysRt) + var tRt = timerRt.elapsed() + cout << "Total RT time: " << tRt << "\n" - var timerCt: Timer; + var timerCt: Timer for i = 0..totalRepCount // Build the hash - [ct] var hashCt = minPerfHash(keysCt); - var hash = hashCt; + [ct] var hashCt = minPerfHash(keysCt) + var hash = hashCt // Test the keys, several times for j = 0..testRepCount - checkHashIsOk(hash, keysRt); - var tCt = timerCt.elapsed(); - cout << "Total CT time: " << tCt << "\n"; - cout << "Speedup = " << tRt/tCt << "\n\n"; + checkHashIsOk(hash, keysRt) + var tCt = timerCt.elapsed() + cout << "Total CT time: " << tCt << "\n" + cout << "Speedup = " << tRt/tCt << "\n\n" fun getMonths: Vector(String) - var res: Vector(String); - res.pushBack(String("January")); - res.pushBack(String("February")); - res.pushBack(String("March")); - res.pushBack(String("April")); - res.pushBack(String("May")); - res.pushBack(String("June")); - res.pushBack(String("July")); - res.pushBack(String("August")); - res.pushBack(String("September")); - res.pushBack(String("October")); - res.pushBack(String("November")); - res.pushBack(String("December")); - return res; + var res: Vector(String) + res.pushBack(String("January")) + res.pushBack(String("February")) + res.pushBack(String("March")) + res.pushBack(String("April")) + res.pushBack(String("May")) + res.pushBack(String("June")) + res.pushBack(String("July")) + res.pushBack(String("August")) + res.pushBack(String("September")) + res.pushBack(String("October")) + res.pushBack(String("November")) + res.pushBack(String("December")) + return res //fun testIfVsPefHash() // var testRepCount = 1; @@ -376,28 +376,28 @@ fun getMonths: Vector(String) // cout << "WARNING: String if algorithm failed\n"; fun sprMain - var testNum = 1; - var keysCount: Int = -1; - var testRepCount = 1; - var totalRepCount = 1; - if programArgs.size() > 1; testNum = asInt(programArgs(1)); - if programArgs.size() > 2; keysCount = asInt(programArgs(2)); - if programArgs.size() > 3; testRepCount = asInt(programArgs(3)); - if programArgs.size() > 4; totalRepCount = asInt(programArgs(4)); + var testNum = 1 + var keysCount: Int = -1 + var testRepCount = 1 + var totalRepCount = 1 + if programArgs.size() > 1; testNum = asInt(programArgs(1)) + if programArgs.size() > 2; keysCount = asInt(programArgs(2)) + if programArgs.size() > 3; testRepCount = asInt(programArgs(3)) + if programArgs.size() > 4; totalRepCount = asInt(programArgs(4)) [ct] if ( testType == 3 ) if ( testNum == 1 ) - testRt(testRepCount, totalRepCount, keysCount); + testRt(testRepCount, totalRepCount, keysCount) else [ct] for i=startKeysNum..endKeysNum../stepKeysNum if ( keysCount == ctEval(i) ) - testCt(testRepCount, totalRepCount, i); + testCt(testRepCount, totalRepCount, i) else [ct] if ( testType == 0 ) - testRt(testRepCount, totalRepCount, keysCount); + testRt(testRepCount, totalRepCount, keysCount) else [ct] if ( testType == 1 ) - testCt(testRepCount, totalRepCount, numKeys); + testCt(testRepCount, totalRepCount, numKeys) else - testCtVsRtPerf(testRepCount, totalRepCount); + testCtVsRtPerf(testRepCount, totalRepCount) //testIfVsPefHash(programArgs); /*<<= buf.size()/2 ) - return String(); + return String() - var dstIdx = 0; - var dst: @Char = buf.at(0); + var dstIdx = 0 + var dst: @Char = buf.at(0) for i=0 .. strSize - var ch = re.at(i); + var ch = re.at(i) if ( ch == '('.char ) if ( nAtom > 1 ) - --nAtom; - buf(dstIdx++) = '.'.char; + --nAtom + buf(dstIdx++) = '.'.char if ( parenIdx >= 100 ) //cout << "Parenthesis index is above 100\n"; - return String(); - paren(parenIdx++) = (Int*Int)(nAlt, nAtom); - nAlt = 0; - nAtom = 0; + return String() + paren(parenIdx++) = (Int*Int)(nAlt, nAtom) + nAlt = 0 + nAtom = 0 else if ( ch == '|'.char ) if ( nAtom == 0 ) //cout << "No atoms is zero at alternation\n"; - return String(); + return String() while --nAtom > 0 - buf(dstIdx++) = '.'.char; - nAlt++; + buf(dstIdx++) = '.'.char + nAlt++ else if ( ch == ')'.char ) if ( parenIdx == 0 || nAtom == 0 ) //cout << "Invalid state at closing parenthesis (parenIdx:" << parenIdx << ", nAtom:" << nAtom << ")\n"; - return String(); + return String() while --nAtom > 0 - buf(dstIdx++) = '.'.char; + buf(dstIdx++) = '.'.char while nAlt > 0 ; --nAlt - buf(dstIdx++) = '|'.char; - --parenIdx; - nAlt = paren(parenIdx).v1; - nAtom = paren(parenIdx).v2; - ++nAtom; + buf(dstIdx++) = '|'.char + --parenIdx + nAlt = paren(parenIdx).v1 + nAtom = paren(parenIdx).v2 + ++nAtom else if ( ch == '*'.char || ch == '+'.char || ch == '?'.char ) if ( nAtom == 0 ) //cout << "Zero atoms at char" << ch << "\n"; - return String(); - buf(dstIdx++) = ch; + return String() + buf(dstIdx++) = ch else if ( nAtom > 1 ) - --nAtom; - buf(dstIdx++) = '.'.char; - buf(dstIdx++) = ch; - nAtom++; + --nAtom + buf(dstIdx++) = '.'.char + buf(dstIdx++) = ch + nAtom++ if ( parenIdx != 0 ) //cout << "Parenthesis don't close correctly\n"; - return String(); + return String() while --nAtom > 0 - buf(dstIdx++) = '.'.char; + buf(dstIdx++) = '.'.char while nAlt > 0 ; --nAlt - buf(dstIdx++) = '|'.char; - buf(dstIdx) = Char(0); + buf(dstIdx++) = '|'.char + buf(dstIdx) = Char(0) - return String(mkRawPtr(buf(0)), mkRawPtr(buf(dstIdx))); + return String(mkRawPtr(buf(0)), mkRawPtr(buf(dstIdx))) /// Factory for Nfa states datatype NfaStatesFactory - _numStates: Int; ///< Number of states created - _matchState: NfaState; ///< The match state - _pages: Vector(RawPtr(NfaState)); ///< Pointers to the memory pages containing the actual NFA states + _numStates: Int ///< Number of states created + _matchState: NfaState ///< The match state + _pages: Vector(RawPtr(NfaState)) ///< Pointers to the memory pages containing the actual NFA states fun ctor(this: @NfaStatesFactory) - _numStates ctor 0; - var nullObj: Ptr(NfaState); - _matchState.ctor(NfaState.match, nullObj, nullObj); + _numStates ctor 0 + var nullObj: Ptr(NfaState) + _matchState.ctor(NfaState.match, nullObj, nullObj) fun dtor(this: @NfaStatesFactory) // Release the memory occupied by the states for page = _pages.all() - page freePtr; + page freePtr -fun getCharState(this: @NfaStatesFactory, c: Char) = this._alloc(Int(c), Ptr(NfaState)(), Ptr(NfaState)()); -fun getSplitState(this: @NfaStatesFactory, s1, s2: Ptr(NfaState)) = this._alloc(NfaState.split, s1, s2); -fun getSplitState(this: @NfaStatesFactory, s1: Ptr(NfaState)) = this._alloc(NfaState.split, s1, Ptr(NfaState)()); -fun getMatchState(this: @NfaStatesFactory) = Ptr(NfaState)(_matchState); +fun getCharState(this: @NfaStatesFactory, c: Char) = this._alloc(Int(c), Ptr(NfaState)(), Ptr(NfaState)()) +fun getSplitState(this: @NfaStatesFactory, s1, s2: Ptr(NfaState)) = this._alloc(NfaState.split, s1, s2) +fun getSplitState(this: @NfaStatesFactory, s1: Ptr(NfaState)) = this._alloc(NfaState.split, s1, Ptr(NfaState)()) +fun getMatchState(this: @NfaStatesFactory) = Ptr(NfaState)(_matchState) fun _alloc(this: @NfaStatesFactory, c: Int, out1, out2: Ptr(NfaState)): Ptr(NfaState) - using _statesPerPage = 100; + using _statesPerPage = 100 if ( _numStates >= _statesPerPage*_pages.size() ) - var p = allocRawPtr(NfaState, _statesPerPage); - _pages.pushBack(p); - var idx = _numStates % _statesPerPage; - ++_numStates; - var state: Ptr(NfaState) = _pages.back().advance(idx).value(); - state.get().ctor(c, out1, out2); - return state; + var p = allocRawPtr(NfaState, _statesPerPage) + _pages.pushBack(p) + var idx = _numStates % _statesPerPage + ++_numStates + var state: Ptr(NfaState) = _pages.back().advance(idx).value() + state.get().ctor(c, out1, out2) + return state /// Class that represents a NFA state; it allows one or two output states out of this state [initCtor] datatype NfaState - c: Int; - out1, out2: Ptr(NfaState); - listId: Int = -1; + c: Int + out1, out2: Ptr(NfaState) + listId: Int = -1 - using match = 256; - using split = 257; + using match = 256 + using split = 257 -fun isSplit(this: NfaState) = c == NfaState.split; -fun isMatch(this: NfaState) = c == NfaState.match; +fun isSplit(this: NfaState) = c == NfaState.split +fun isMatch(this: NfaState) = c == NfaState.match /// Class that stores the list of out pointers from a given NFA fragment (set of connected NfaState objects) /// @@ -154,209 +154,209 @@ fun isMatch(this: NfaState) = c == NfaState.match; datatype OutPtrList /// Pointer to the next element. /// This actually represents two things: one the pointer to the next element, and the actual data that needs to be filled - _next: Ptr(OutPtrList); + _next: Ptr(OutPtrList) /// Construct the out-ptr list from a single out-ptr reference fun ctor(this: @OutPtrList, outPtr: @Ptr(NfaState)) - _next ctor reinterpretPtr(OutPtrList, Ptr(Ptr(NfaState))(outPtr)); + _next ctor reinterpretPtr(OutPtrList, Ptr(Ptr(NfaState))(outPtr)) /// Append to this list another list of out-pointers fun append(this: @OutPtrList, other: OutPtrList) - var p = _next; + var p = _next while p.get()._next isSet - p = p.get()._next; - p.get()._next = other._next; + p = p.get()._next + p.get()._next = other._next /// Set the final value to all the out-pointers from this list /// After calling this method, the list will be actually destroyed (as we right the exact pointers that are used to chain the nodes) fun setFinalValue(this: @OutPtrList, finalPtr: Ptr(NfaState)) - var p = _next; + var p = _next while p isSet - var _next = p.get()._next; - reinterpretPtr(Ptr(NfaState), p).get() = finalPtr; - p = _next; + var _next = p.get()._next + reinterpretPtr(Ptr(NfaState), p).get() = finalPtr + p = _next /// Class that represents a fragment of Nfa states /// A fragment consists of a tree of Nfa states, starting with only one Nfa state. It can have one or more out pointers /// The out-pointers are used to connect to the next Nfa fragment. datatype NfaFragment - start: Ptr(NfaState); ///< Start state of the NFA frament - outPtrChain: OutPtrList; ///< Chain of out-pointers for this fragment that need to be set to the next state + start: Ptr(NfaState) ///< Start state of the NFA frament + outPtrChain: OutPtrList ///< Chain of out-pointers for this fragment that need to be set to the next state fun ctor(this: @NfaFragment, start: Ptr(NfaState), outPtrChain: @OutPtrList) - this.start ctor start; - this.outPtrChain ctor outPtrChain; + this.start ctor start + this.outPtrChain ctor outPtrChain fun getChar(nfaStatesFactory: @NfaStatesFactory, c: Char): NfaFragment - var s = nfaStatesFactory.getCharState(c); - return NfaFragment(s, OutPtrList(s.get().out1)); + var s = nfaStatesFactory.getCharState(c) + return NfaFragment(s, OutPtrList(s.get().out1)) fun getConcatenation(nfaStatesFactory: @NfaStatesFactory, e1, e2: @NfaFragment): NfaFragment - e1.outPtrChain.setFinalValue(e2.start); // e1 fragment is finalized by e2 fragment - return NfaFragment(e1.start, e2.outPtrChain); + e1.outPtrChain.setFinalValue(e2.start) // e1 fragment is finalized by e2 fragment + return NfaFragment(e1.start, e2.outPtrChain) fun getAlternation(nfaStatesFactory: @NfaStatesFactory, e1, e2: @NfaFragment): NfaFragment - var splitState = nfaStatesFactory.getSplitState(e1.start, e2.start); - e1.outPtrChain.append(e2.outPtrChain); // Consider both chains - return NfaFragment(splitState, e1.outPtrChain); + var splitState = nfaStatesFactory.getSplitState(e1.start, e2.start) + e1.outPtrChain.append(e2.outPtrChain) // Consider both chains + return NfaFragment(splitState, e1.outPtrChain) fun getOptional(nfaStatesFactory: @NfaStatesFactory, e: @NfaFragment): NfaFragment - var splitState = nfaStatesFactory.getSplitState(e.start); - e.outPtrChain.append(OutPtrList(splitState.get().out2)); // Add second output of the split state to the out-ptr chain - return NfaFragment(splitState, e.outPtrChain); + var splitState = nfaStatesFactory.getSplitState(e.start) + e.outPtrChain.append(OutPtrList(splitState.get().out2)) // Add second output of the split state to the out-ptr chain + return NfaFragment(splitState, e.outPtrChain) fun getZeroOrMore(nfaStatesFactory: @NfaStatesFactory, e: @NfaFragment): NfaFragment - var splitState = nfaStatesFactory.getSplitState(e.start); - e.outPtrChain.setFinalValue(splitState); // Out pointers of the fragment are connected back to the split state - return NfaFragment(splitState, OutPtrList(splitState.get().out2)); + var splitState = nfaStatesFactory.getSplitState(e.start) + e.outPtrChain.setFinalValue(splitState) // Out pointers of the fragment are connected back to the split state + return NfaFragment(splitState, OutPtrList(splitState.get().out2)) fun getOneOrMore(nfaStatesFactory: @NfaStatesFactory, e: @NfaFragment): NfaFragment - var splitState = nfaStatesFactory.getSplitState(e.start); - e.outPtrChain.setFinalValue(splitState); // Out pointers of the fragment are connected back to the split state - return NfaFragment(e.start, OutPtrList(splitState.get().out2)); + var splitState = nfaStatesFactory.getSplitState(e.start) + e.outPtrChain.setFinalValue(splitState) // Out pointers of the fragment are connected back to the split state + return NfaFragment(e.start, OutPtrList(splitState.get().out2)) /// Finalize the current NFA fragment by ending it with a match Nfa state fun finalize(this: @NfaFragment, nfaStatesFactory: @NfaStatesFactory) - outPtrChain.setFinalValue(nfaStatesFactory.getMatchState()); + outPtrChain.setFinalValue(nfaStatesFactory.getMatchState()) fun nfaFromPostfix(nfaStatesFactory: @NfaStatesFactory, postfix: @StringRef): Ptr(NfaState) if ( postfix.size() == 0 ) - return Ptr(NfaState)(); + return Ptr(NfaState)() - var stack: StaticArray(NfaFragment, 1000); - var stackIdx = 0; + var stack: StaticArray(NfaFragment, 1000) + var stackIdx = 0 //cout << "Postfix to parse: '" << postfix << "'\n"; for i = 0 .. Int(postfix.size()) - var ch = postfix(i); + var ch = postfix(i) - var e1, e2: NfaFragment; + var e1, e2: NfaFragment if ( ch == '.'.char ) // Concatenate - e2 = stack(--stackIdx); - e1 = stack(--stackIdx); - stack(stackIdx++) = getConcatenation(nfaStatesFactory, e1, e2); + e2 = stack(--stackIdx) + e1 = stack(--stackIdx) + stack(stackIdx++) = getConcatenation(nfaStatesFactory, e1, e2) else if ( ch == '|'.char ) - e2 = stack(--stackIdx); - e1 = stack(--stackIdx); - stack(stackIdx++) = getAlternation(nfaStatesFactory, e1, e2); + e2 = stack(--stackIdx) + e1 = stack(--stackIdx) + stack(stackIdx++) = getAlternation(nfaStatesFactory, e1, e2) else if ( ch == '?'.char ) - e1 = stack(--stackIdx); - stack(stackIdx++) = getOptional(nfaStatesFactory, e1); + e1 = stack(--stackIdx) + stack(stackIdx++) = getOptional(nfaStatesFactory, e1) else if ( ch == '*'.char ) - e1 = stack(--stackIdx); - stack(stackIdx++) = getZeroOrMore(nfaStatesFactory, e1); + e1 = stack(--stackIdx) + stack(stackIdx++) = getZeroOrMore(nfaStatesFactory, e1) else if ( ch == '+'.char ) - e1 = stack(--stackIdx); - stack(stackIdx++) = getOneOrMore(nfaStatesFactory, e1); + e1 = stack(--stackIdx) + stack(stackIdx++) = getOneOrMore(nfaStatesFactory, e1) else - stack(stackIdx++) = getChar(nfaStatesFactory, ch); + stack(stackIdx++) = getChar(nfaStatesFactory, ch) - var e = stack(--stackIdx); + var e = stack(--stackIdx) if ( stackIdx != 0 ) - return Ptr(NfaState)(); - e.finalize(nfaStatesFactory); - return e.start; + return Ptr(NfaState)() + e.finalize(nfaStatesFactory) + return e.start datatype NfaNodeList - nodes: Vector(Ptr(NfaState)); - id: Int; - isMatch: Bool; + nodes: Vector(Ptr(NfaState)) + id: Int + isMatch: Bool fun ctor(this: @NfaNodeList, noNfaNodes: Int) - nodes.reserve(noNfaNodes); + nodes.reserve(noNfaNodes) fun ctor(this, other: @NfaNodeList) // move ctor - this.id ctor other.id; - this.isMatch ctor other.isMatch; - this.nodes ctor; - this.nodes swap other.nodes; + this.id ctor other.id + this.isMatch ctor other.isMatch + this.nodes ctor + this.nodes swap other.nodes //this.nodes ctor other.nodes; [protected] fun ==(this, other: @NfaNodeList): Bool - return this.isMatch == other.isMatch && this.nodes == other.nodes; + return this.isMatch == other.isMatch && this.nodes == other.nodes /// Initialize the list to be the epsilon-closure of the given node fun initFromState(this: @NfaNodeList, id: Int, start: Ptr(NfaState)) - this.id = id; - this.isMatch = false; - nodes.clear(); - this._addState(start); - sort(nodes.all()); + this.id = id + this.isMatch = false + nodes.clear() + this._addState(start) + sort(nodes.all()) /// Initialize the list as to be the result of moving from the previous list with the given char fun initAsNextList(this: @NfaNodeList, id: Int, prev: @NfaNodeList, c: Int) - this.id = id; - this.isMatch = false; - nodes.clear(); + this.id = id + this.isMatch = false + nodes.clear() for node = prev.nodes.all() if ( node.get().c == c ) - this._addState(node.get().out1); - sort(nodes.all()); + this._addState(node.get().out1) + sort(nodes.all()) fun print(this: @NfaNodeList) - cout << "NFA node list " << id; + cout << "NFA node list " << id if ( this.isMatch ) - cout << " (match)"; - cout << ":"; + cout << " (match)" + cout << ":" for n = nodes.all() - cout << " " << n.get().c << " " << mkStreamRefWrapper(n.get()); - cout << "\n"; + cout << " " << n.get().c << " " << mkStreamRefWrapper(n.get()) + cout << "\n" fun _addState(this: @NfaNodeList, state: Ptr(NfaState)) if ( (state isNull) || state.get().listId == id ) - return; + return - var s: @NfaState = state.get(); + var s: @NfaState = state.get() - s.listId = id; + s.listId = id if ( s isSplit ) - this._addState(s.out1); - this._addState(s.out2); - return; - this.isMatch = this.isMatch || s.isMatch(); - nodes.pushBack(state); + this._addState(s.out1) + this._addState(s.out2) + return + this.isMatch = this.isMatch || s.isMatch() + nodes.pushBack(state) datatype Transition - start, end, ch: Int; + start, end, ch: Int fun ctor(this: @Transition, start, end, ch: Int) - this.start ctor start; - this.end ctor end; - this.ch ctor ch; + this.start ctor start + this.end ctor end + this.ch ctor ch /// Class that represent a Dfa state /// A Dfa state usually contains multiple NfaStates. It also contains a transition array for each possible input char datatype DfaState - next: StaticArray(Int, 256); - nfaNodes: NfaNodeList; - isMatch: Bool; + next: StaticArray(Int, 256) + nfaNodes: NfaNodeList + isMatch: Bool fun ctor(this: @DfaState, nfaNodes: @NfaNodeList) // moves the nodes list - next ctor -1; - this.nfaNodes ctor nfaNodes; - this.isMatch ctor nfaNodes.isMatch; + next ctor -1 + this.nfaNodes ctor nfaNodes + this.isMatch ctor nfaNodes.isMatch datatype Automaton - nfaStatesFactory: NfaStatesFactory; - dfaStates: Vector(DfaState); + nfaStatesFactory: NfaStatesFactory + dfaStates: Vector(DfaState) fun ctor(this: @Automaton, re: StringRef) // Convert the regex from infix to postfix notation - var post = re2post(re); + var post = re2post(re) if ( post.size() == 0 ) - cout << "Bad regular expression: " << re << endl; - return; + cout << "Bad regular expression: " << re << endl + return /// Convert the postfix form into a NFA - var nfaStart = nfaFromPostfix(nfaStatesFactory, post.asStringRef()); + var nfaStart = nfaFromPostfix(nfaStatesFactory, post.asStringRef()) if ( nfaStart.isNull() ) - cout << "error in post2nfa for regexp: " << re << endl; - return; + cout << "error in post2nfa for regexp: " << re << endl + return // Create the DFA states - this.createDfaStates(nfaStart); + this.createDfaStates(nfaStart) // Print some statistics //cout << "We have " << nfaStatesFactory._numStates << " NFA states\n"; @@ -365,63 +365,63 @@ fun ctor(this: @Automaton, re: StringRef) // cout << "DFA state " << i << " has " << dfaStates(i).nfaNodes.nodes.size() << " NFA states\n"; fun ctorFromCt(this: @Automaton, src: Automaton ct) - nfaStatesFactory ctor; - dfaStates ctor; - dfaStates resize src.dfaStates.size(); + nfaStatesFactory ctor + dfaStates ctor + dfaStates resize src.dfaStates.size() - [ct] var transitions = src.getTransitions(); + [ct] var transitions = src.getTransitions() [ct] for tr = transitions all //cout << ctEval(tr.start) << ".." << ctEval(tr.end) << "/" << ctEval(tr.ch) << endl; - dfaStates.at(ctEval(tr.start)).next.at(ctEval(tr.ch)) = ctEval(tr.end); + dfaStates.at(ctEval(tr.start)).next.at(ctEval(tr.ch)) = ctEval(tr.end) [ct] for st = 0 .. src.dfaStates.size() [ct] if ( ctEval(src.dfaStates.at(st).isMatch) ) - dfaStates.at(ctEval(st)).isMatch = true; + dfaStates.at(ctEval(st)).isMatch = true //cout << "State " << ctEval(st) << " is matching" << endl; [ct] fun getTransitions(this: @Automaton): Vector(Transition) - var res: Vector(Transition); + var res: Vector(Transition) for st = 0..(dfaStates.size()-1) for ch = 0..255 - var nextState = dfaStates.at(st).next.at(ch); + var nextState = dfaStates.at(st).next.at(ch) if ( nextState >= 0 ) - res.pushBack(Transition(Int(st), nextState, ch)); - return res; + res.pushBack(Transition(Int(st), nextState, ch)) + return res fun match(this: @Automaton, str: StringRef): Bool if ( dfaStates isEmpty ) - return false; + return false - var curStateIdx = 0; + var curStateIdx = 0 for i=0 .. str.size - var c = Int(str(i)); - var nextStateIdx = dfaStates(curStateIdx).next(c); + var c = Int(str(i)) + var nextStateIdx = dfaStates(curStateIdx).next(c) //cout << "Match: in DFA state " << curStateIdx << "; moving to DFA state " << nextStateIdx << " after char " << c << endl; if ( nextStateIdx < 0 ) - return false; - curStateIdx = nextStateIdx; - return dfaStates(curStateIdx).isMatch; + return false + curStateIdx = nextStateIdx + return dfaStates(curStateIdx).isMatch fun createDfaStates(this: @Automaton, start: Ptr(NfaState)) - var noNfaNodes = nfaStatesFactory._numStates; - var tmpList = NfaNodeList(noNfaNodes); + var noNfaNodes = nfaStatesFactory._numStates + var tmpList = NfaNodeList(noNfaNodes) - var exploredChars = Bitset(256); + var exploredChars = Bitset(256) - var listId = 0; // This will not be the same as the index of the DFA containing the list + var listId = 0 // This will not be the same as the index of the DFA containing the list - dfaStates.reserve(noNfaNodes/4); // TODO: Check why we need this + dfaStates.reserve(noNfaNodes/4) // TODO: Check why we need this // Create the first DFA state - tmpList.initFromState(++listId, start); - dfaStates.pushBack(DfaState(tmpList)); + tmpList.initFromState(++listId, start) + dfaStates.pushBack(DfaState(tmpList)) // Create the rest of the DFA states, starting from the first state and making all possible transitions // For each new DFA state ... - var i=0; + var i=0 while i 1 ) progType = asInt(programArgs(1)); - if ( programArgs.size() > 2 ) reType = asInt(programArgs(2)); - if ( programArgs.size() > 3 ) reLen = asInt(programArgs(3)); - if ( programArgs.size() > 4 ) testRepCount = asInt(programArgs(4)); - if ( programArgs.size() > 5 ) totalRepCount = asInt(programArgs(5)); - programArgs.popFront(); - programArgs.popFront(); - programArgs.popFront(); - programArgs.popFront(); - programArgs.popFront(); - programArgs.popFront(); + var progType = 1 + var reType = 1 + var reLen = 5 + var testRepCount = 1 + var totalRepCount = 1 + if ( programArgs.size() > 1 ) progType = asInt(programArgs(1)) + if ( programArgs.size() > 2 ) reType = asInt(programArgs(2)) + if ( programArgs.size() > 3 ) reLen = asInt(programArgs(3)) + if ( programArgs.size() > 4 ) testRepCount = asInt(programArgs(4)) + if ( programArgs.size() > 5 ) totalRepCount = asInt(programArgs(5)) + programArgs.popFront() + programArgs.popFront() + programArgs.popFront() + programArgs.popFront() + programArgs.popFront() + programArgs.popFront() if ( progType == 1 ) - var re = getReOfType(reType, reLen); - testRt(re.asStringRef(), testRepCount, totalRepCount); + var re = getReOfType(reType, reLen) + testRt(re.asStringRef(), testRepCount, totalRepCount) else [ct] for t=1..4 [ct] for n=5..26 if ( reType == ctEval(t) && reLen == ctEval(n) ) - [ct] var re = getReOfType(t, n); - testCt(re.asStringRef(), testRepCount, totalRepCount); + [ct] var re = getReOfType(t, n) + testCt(re.asStringRef(), testRepCount, totalRepCount) [ct] for n=5..11 if ( reType == 4 && reLen == ctEval(n) ) - [ct] var re = getReOfType(4, n); - testCt(re.asStringRef(), testRepCount, totalRepCount); + [ct] var re = getReOfType(4, n) + testCt(re.asStringRef(), testRepCount, totalRepCount) else [ct] if ( testType == 3 ) - timedTest("(a|b)?"**100 + "(a|b)"**100 + "z", "a"**100 + "z", 1, 1000); + timedTest("(a|b)?"**100 + "(a|b)"**100 + "z", "a"**100 + "z", 1, 1000) diff --git a/tests/Frontend/Identifiers.spr b/tests/Frontend/Identifiers.spr index 9c6b9c07..6fda4fa4 100644 --- a/tests/Frontend/Identifiers.spr +++ b/tests/Frontend/Identifiers.spr @@ -1,21 +1,19 @@ -module Ids; +module Ids -fun pow(x,y: Double) = 1; -fun **(x,y: Double) = 2; -fun !@#$%^&*(x,y: Double) = 3; -fun <>(x,y: Double) = 4; -fun ::(x,y: Double) = 5; -fun a_::(x,y: Double) = 6; +fun pow(x,y: Double) = 1 +fun **(x,y: Double) = 2 +fun !@#$%^&*(x,y: Double) = 3 +fun <>(x,y: Double) = 4 +fun ::(x,y: Double) = 5 +fun a_::(x,y: Double) = 6 fun sprMain -{ - cout << pow(1,2) << endl; - cout << Ids.**(1,2) << endl; - cout << Ids.!@#$%^&*(1,2) << endl; - cout << Ids.<>(1,2) << endl; - cout << Ids.::(1,2) << endl; - cout << a_::(1,2) << endl; -} + cout << pow(1,2) << endl + cout << Ids.**(1,2) << endl + cout << Ids.!@#$%^&*(1,2) << endl + cout << Ids.<>(1,2) << endl + cout << Ids.::(1,2) << endl + cout << a_::(1,2) << endl /*<<(x,y: Double) = 4; -fun ::(x,y: Double) = 5; -fun a_::(x,y: Double) = 6; +fun pow(x,y: Double) = 1 +fun **(x,y: Double) = 2 +fun !@#$%^&*(x,y: Double) = 3 +fun <>(x,y: Double) = 4 +fun ::(x,y: Double) = 5 +fun a_::(x,y: Double) = 6 -fun ..(x,y: Int) = x+y; +fun ..(x,y: Int) = x+y -[autoCt] fun ~(n: Int): Int = 0xffffffff - n; +[autoCt] fun ~(n: Int): Int = 0xffffffff - n fun +++(l,r: Int): Int -{ - cout << l << " +++ " << r << " = " << (l+r) << endl; - return l+r; -} + cout << l << " +++ " << r << " = " << (l+r) << endl + return l+r fun +++:(l,r: Int): Int -{ - cout << l << " +++: " << r << " = " << (l+r) << endl; - return l+r; -} + cout << l << " +++: " << r << " = " << (l+r) << endl + return l+r fun +++(x: @Int): Int -{ - var r = x; - x += 1; - return r; -} + var r = x + x += 1 + return r fun inc(x: @Int): Int -{ - var r = x; - x += 1; - return r; -} + var r = x + x += 1 + return r -using oper_assoc_+++: = -1; -using oper_assoc_:: = -1; +using oper_assoc_+++: = -1 +using oper_assoc_:: = -1 fun sprMain -{ if ( programArgs.size() < 2 ) - return; - var n = programArgs(1) asInt; + return + var n = programArgs(1) asInt if n == 1 ; test1 else if n == 2 ; test2 @@ -56,22 +47,19 @@ fun sprMain else if n == 9 ; test9 else if n == 10 ; test10 else if n == 11 ; test11 -} fun test1 -{ - cout << ( 1 + 2 ) << endl; - cout << ( 1 + 2*3 ) << endl; - cout << ( 2*3 + 4 ) << endl; - var x = 10; - x = 2 + 3; - cout << (x) << endl; - cout << (2 < 1+3) << endl; - cout << (2 < 3 && 3 > 2) << endl; - cout << (true && false || false && true || true && true) << endl; - cout << (2 == 2 || 1 == 3) << endl; - cout << (2 != 2 || 1 != 3) << endl; -} + cout << ( 1 + 2 ) << endl + cout << ( 1 + 2*3 ) << endl + cout << ( 2*3 + 4 ) << endl + var x = 10 + x = 2 + 3 + cout << (x) << endl + cout << (2 < 1+3) << endl + cout << (2 < 3 && 3 > 2) << endl + cout << (true && false || false && true || true && true) << endl + cout << (2 == 2 || 1 == 3) << endl + cout << (2 != 2 || 1 != 3) << endl /*<<>>*/ fun test2 -{ - var b = true; - b = b && false; - cout << (b) << endl; - - var x = 10; - x *= 2+2; - cout << (x) << endl; - - x += 1+1; - cout << (x) << endl; -} + var b = true + b = b && false + cout << (b) << endl + + var x = 10 + x *= 2+2 + cout << (x) << endl + + x += 1+1 + cout << (x) << endl /*<<>>*/ fun test3 -{ - cout << (1 pow 2) << endl; - cout << (1 ** 2) << endl; - cout << (1 !@#$%^&* 2) << endl; - cout << (1 <> 2) << endl; - cout << (1 :: 2) << endl; - cout << (1 a_:: 2) << endl; -} + cout << (1 pow 2) << endl + cout << (1 ** 2) << endl + cout << (1 !@#$%^&* 2) << endl + cout << (1 <> 2) << endl + cout << (1 :: 2) << endl + cout << (1 a_:: 2) << endl /*<<>>*/ fun test4 -{ - cout << (-2) << endl; - cout << (+2) << endl; - cout << (~2) << endl; - cout << (!true) << endl; - cout << (!false) << endl; - cout << (! !true) << endl; - cout << (! !false) << endl; -} + cout << (-2) << endl + cout << (+2) << endl + cout << (~2) << endl + cout << (!true) << endl + cout << (!false) << endl + cout << (! !true) << endl + cout << (! !false) << endl /*<<>>*/ fun test5 -{ - cout << (2 +++ 3 +++ 4 +++ 5) << endl; - cout << (2 +++: 3 +++: 4 +++: 5) << endl; -} + cout << (2 +++ 3 +++ 4 +++ 5) << endl + cout << (2 +++: 3 +++: 4 +++: 5) << endl /*<<>>*/ fun test6 -{ - cout << ( 2+2*3 ) << endl; - cout << ( (2+2)*3 ) << endl; - cout << ( 2+(2*3) ) << endl; -} + cout << ( 2+2*3 ) << endl + cout << ( (2+2)*3 ) << endl + cout << ( 2+(2*3) ) << endl /*<<>>*/ fun test7 -{ - var x: StringRef = "42"; - cout << ( x size ) << endl; - cout << ( x front ) << endl; -} + var x: StringRef = "42" + cout << ( x size ) << endl + cout << ( x front ) << endl /*<<>>*/ fun test8 -{ - var x = 24; - cout << (x) << endl; - cout << (x+++) << endl; - cout << (x) << endl; - cout << (x inc) << endl; - cout << (x) << endl; -} + var x = 24 + cout << (x) << endl + cout << (x+++) << endl + cout << (x) << endl + cout << (x inc) << endl + cout << (x) << endl /*<<>>*/ fun test9 -{ - var x = 24; - cout << (x) << endl; - cout << (+++x) << endl; - cout << (x) << endl; - cout << (`inc` x) << endl; - cout << (x) << endl; -} + var x = 24 + cout << (x) << endl + cout << (+++x) << endl + cout << (x) << endl + cout << (`inc` x) << endl + cout << (x) << endl /*<<>>*/ fun test2 -{ - var x = 10; - - cout << (x+++) << endl; - cout << (x+++) << endl; - cout << (x+++) << endl; - cout << (x---) << endl; - cout << (x---) << endl; - cout << (x---) << endl; -} + var x = 10 + + cout << (x+++) << endl + cout << (x+++) << endl + cout << (x+++) << endl + cout << (x---) << endl + cout << (x---) << endl + cout << (x---) << endl /*<<>>*/ fun test3 -{ - var x = 10; - - cout << (+++x---) << endl; - cout << (+++x---) << endl; - cout << (+++x---) << endl; - cout << (---x+++) << endl; - cout << (---x+++) << endl; - cout << (---x+++) << endl; -} + var x = 10 + + cout << (+++x---) << endl + cout << (+++x---) << endl + cout << (+++x---) << endl + cout << (---x+++) << endl + cout << (---x+++) << endl + cout << (---x+++) << endl /*<<>>*/ fun test4 -{ - var x = 10; - - cout << (+++x + +++x) << endl; - x = 10; - cout << (+++x + x+++) << endl; - x = 10; - cout << ((x+++) + +++x) << endl; -} + var x = 10 + + cout << (+++x + +++x) << endl + x = 10 + cout << (+++x + x+++) << endl + x = 10 + cout << ((x+++) + +++x) << endl /*<< << endl; + cout << "Hello, world!" << endl + cout << <{Hello, world!}> << endl cout << <{Hello, - world!}> << endl; - cout << <{Hello,{} >"world"!}> << endl; -} + world!}> << endl + cout << <{Hello,{} >"world"!}> << endl /*<<"; return "sun"; } logic.compileProlog(" @@ -19,17 +19,15 @@ logic.compileProlog(" planet3(P) :- orbits(P, ${\"sun\"}). planet4(P) :- orbits(P, ${getSun()}). planet5(P) :- orbits(P, ${\"s\"+\"u\"+\"n\"}). -"); +") fun sprMain -{ - cout << "Is Mercury orbiting Sun? " << orbits("mercury", "sun")() << endl; - cout << "Is Mercury a planet? " << planet("mercury")() << endl; - cout << "Is Mercury a planet (2)? " << planet2("mercury")() << endl; - cout << "Is Mercury a planet (3)? " << planet3("mercury")() << endl; - cout << "Is Mercury a planet (4)? " << planet4("mercury")() << endl; - cout << "Is Mercury a planet (5)? " << planet5("mercury")() << endl; -} + cout << "Is Mercury orbiting Sun? " << orbits("mercury", "sun")() << endl + cout << "Is Mercury a planet? " << planet("mercury")() << endl + cout << "Is Mercury a planet (2)? " << planet2("mercury")() << endl + cout << "Is Mercury a planet (3)? " << planet3("mercury")() << endl + cout << "Is Mercury a planet (4)? " << planet4("mercury")() << endl + cout << "Is Mercury a planet (5)? " << planet5("mercury")() << endl /*<<>>*/ diff --git a/tests/Logic/FibPrologErr.spr b/tests/Logic/FibPrologErr.spr index 752e64bb..0c23b24f 100644 --- a/tests/Logic/FibPrologErr.spr +++ b/tests/Logic/FibPrologErr.spr @@ -1,5 +1,5 @@ //!! -import logic.prologFrontend; +import logic.prologFrontend //import "FibonacciErr.pl"; compileProlog(" @@ -11,16 +11,14 @@ compileProlog(" X1 is X-1, fib(X1, Y1), Y is Y1 + Y2. fib(sun, earth). %% ERROR -"); +") fun sprMain -{ if ( programArgs.size() < 2 ) - return; - var n = programArgs(1) asInt; + return + var n = programArgs(1) asInt - var res: LInt; - cout << fib(n, res)() << endl; - cout << "res=" << res.get() << endl; -} + var res: LInt + cout << fib(n, res)() << endl + cout << "res=" << res.get() << endl diff --git a/tests/Logic/FibTest.spr b/tests/Logic/FibTest.spr index 3c5a1aa6..d67a8d3b 100644 --- a/tests/Logic/FibTest.spr +++ b/tests/Logic/FibTest.spr @@ -1,28 +1,24 @@ //!! -import logic.prologFrontend; +import logic.prologFrontend fun fib(p_1: @LInt, p_2: @LInt): Predicate -{ - var l2_X2: LInt; - var l2_Y2: LInt; - var l2_X1: LInt; - var l2_Y1: LInt; + var l2_X2: LInt + var l2_Y2: LInt + var l2_X1: LInt + var l2_Y1: LInt return ( p_1 /=/ 0 && p_2 /=/ 0 || p_1 /=/ 1 && p_2 /=/ 1 || l2_X2 /=/ (p_1 /-/ 2) && rec(\fib, l2_X2, l2_Y2) && l2_X1 /=/ (p_1 /-/ 1) && rec(\fib, l2_X1, l2_Y1) && p_2 /=/ (l2_Y1 /+/ l2_Y2) - ); -} + ) fun sprMain -{ if ( programArgs.size() < 2 ) - return; - var n = programArgs(1) asInt; + return + var n = programArgs(1) asInt - var res: LInt; - cout << fib(n, res)() << endl; - cout << "res=" << res.get() << endl; -} + var res: LInt + cout << fib(n, res)() << endl + cout << "res=" << res.get() << endl /*<<>>*/ fun test2 -{ - var x: LStr; + var x: LStr [ct] if ( isValid(logicDebug) ) - cout << "Result constructed: x=" << x << endl; - var pred = male(x); + cout << "Result constructed: x=" << x << endl + var pred = male(x) while pred() - { [ct] if ( isValid(logicDebug) ) - cout << "In while, x=" << x << endl; + cout << "In while, x=" << x << endl if ( x.isSet() ) - cout << "Found male: " << x.get() << endl << flush; + cout << "Found male: " << x.get() << endl << flush else - { - cout << "Invalid male found!" << endl << flush; - os.exit(1); - } - } -} + cout << "Invalid male found!" << endl << flush + os.exit(1) /*<<< Exploring male space(2) Found male: castor Found male: zeus >>>*/ fun test3 -{ - var x: LStr; - var pred = female(x); + var x: LStr + var pred = female(x) while pred() - { //assert(x.isSet()); - cout << "Found female: " << x.get() << endl << flush; - } + cout << "Found female: " << x.get() << endl << flush -} /*<<< Exploring female space(3) Found female: leda Found female: clytaemnestra >>>*/ fun test4 -{ - var x: LStr; - var pred = person(x); + var x: LStr + var pred = person(x) while pred() - { //assert(x.isSet()); - cout << "Found person: " << x.get() << endl << flush; - } + cout << "Found person: " << x.get() << endl << flush -} /*<<< Exploring person space(4) Found person: castor Found person: zeus @@ -105,18 +87,14 @@ Found person: clytaemnestra fun test5 -{ - var father, mother, child: LStr; - var pred = parents(father, mother, child); + var father, mother, child: LStr + var pred = parents(father, mother, child) while pred() - { //assert(father.isSet()); //assert(mother.isSet()); //assert(child.isSet()); - cout << "Parent relation: (" << father.get() << " + " << mother.get() << ") = " << child.get() << endl << flush; - } + cout << "Parent relation: (" << father.get() << " + " << mother.get() << ") = " << child.get() << endl << flush -} /*<<< Parenting(5) Parent relation: (zeus + leda) = castor Parent relation: (zeus + leda) = clytaemnestra diff --git a/tests/Logic/Parents.spr b/tests/Logic/Parents.spr index 6eec110d..ec17c4a4 100644 --- a/tests/Logic/Parents.spr +++ b/tests/Logic/Parents.spr @@ -1,6 +1,6 @@ //!! -import logic.predicates; -import logic.recurse; +import logic.predicates +import logic.recurse //import assert; fun children(child, parent: @LStr) = ( @@ -9,7 +9,7 @@ fun children(child, parent: @LStr) = ( || child /=/ "Sam" && parent /=/ "Frank" || child /=/ "Denise" && parent /=/ "Frank" || child /=/ "Frank" && parent /=/ "Gary" - ); + ) fun gender(name, g: @LStr) = ( name /=/ "Frank" && g /=/ "male" @@ -17,28 +17,25 @@ fun gender(name, g: @LStr) = ( || name /=/ "Mary" && g /=/ "female" || name /=/ "Denise" && g /=/ "female" || name /=/ "Gary" && g /=/ "male" - ); + ) -fun male(name: @LStr) = gender(name, "male"); -fun female(name: @LStr) = gender(name, "female"); +fun male(name: @LStr) = gender(name, "male") +fun female(name: @LStr) = gender(name, "female") -fun parent(parent, child: @LStr) = children(child, parent); +fun parent(parent, child: @LStr) = children(child, parent) -fun father(name, child: @LStr) = children(child, name) && gender(name, "male"); -fun mother(name, child: @LStr) = children(child, name) && gender(name, "female"); +fun father(name, child: @LStr) = children(child, name) && gender(name, "male") +fun mother(name, child: @LStr) = children(child, name) && gender(name, "female") fun ancestor(a, c: @LStr): Predicate -{ - var parent: LStr; + var parent: LStr return children(c, a) \ - || children(c, parent) && rec(\ancestor, a, parent); -} + || children(c, parent) && rec(\ancestor, a, parent) fun sprMain -{ if ( programArgs.size() < 2 ) - return; - var n = programArgs(1) asInt; + return + var n = programArgs(1) asInt if n == 1; test1 else if n == 2; test2 @@ -47,28 +44,21 @@ fun sprMain else if n == 5; test5 else if n == 6; test6 else if n == 7; test7 -} fun test1 -{ - var x, y: LStr; - var pred = children(x, y); + var x, y: LStr + var pred = children(x, y) while pred() - { //assert(x.isSet()); //assert(y.isSet()); - cout << x.get() << " is a child of " << y.get() << endl; - } - cout << "---\n"; - var x2, y2: LStr; - var pred2 = gender(x2, y2); + cout << x.get() << " is a child of " << y.get() << endl + cout << "---\n" + var x2, y2: LStr + var pred2 = gender(x2, y2) while pred2() - { //assert(x2.isSet()); //assert(y2.isSet()); - cout << x2.get() << " is " << y2.get() << endl; - } -} + cout << x2.get() << " is " << y2.get() << endl /*<<< All facts(1) Sam is a child of Mary Denise is a child of Mary @@ -84,15 +74,11 @@ Gary is male >>>*/ fun test2 -{ - var x: LStr; - var pred = male(x); + var x: LStr + var pred = male(x) while pred() - { //assert(x.isSet()); - cout << "Male: " << x.get() << endl; - } -} + cout << "Male: " << x.get() << endl /*<<< All males KNOWN-PROBLEM(2) Male: Frank Male: Sam @@ -100,31 +86,23 @@ Male: Gary >>>*/ fun test3 -{ - var x: LStr; - var pred = female(x); + var x: LStr + var pred = female(x) while pred() - { //assert(x.isSet()); - cout << "Female: " << x.get() << endl; - } -} + cout << "Female: " << x.get() << endl /*<<< All females KNOWN-PROBLEM(3) Female: Mary Female: Denise >>>*/ fun test4 -{ - var x, y: LStr; - var pred = parent(x, y); + var x, y: LStr + var pred = parent(x, y) while pred() - { //assert(x.isSet()); //assert(y.isSet()); - cout << x.get() << " is a parent of " << y.get() << endl; - } -} + cout << x.get() << " is a parent of " << y.get() << endl /*<<< All parents(4) Mary is a parent of Sam Mary is a parent of Denise @@ -134,16 +112,12 @@ Gary is a parent of Frank >>>*/ fun test5 -{ - var x, y: LStr; - var pred = father(x, y); + var x, y: LStr + var pred = father(x, y) while pred() - { //assert(x.isSet()); //assert(y.isSet()); - cout << x.get() << " is the father of " << y.get() << endl; - } -} + cout << x.get() << " is the father of " << y.get() << endl /*<<< All fathers KNOWN-PROBLEM(5) Frank is the father of Sam Frank is the father of Denise @@ -151,32 +125,24 @@ Gary is the father of Frank >>>*/ fun test6 -{ - var x, y: LStr; - var pred = mother(x, y); + var x, y: LStr + var pred = mother(x, y) while pred() - { //assert(x.isSet()); //assert(y.isSet()); - cout << x.get() << " is the mother of " << y.get() << endl; - } -} + cout << x.get() << " is the mother of " << y.get() << endl /*<<< All mothers KNOWN-PROBLEM(6) Mary is the mother of Sam Mary is the mother of Denise >>>*/ fun test7 -{ - var x, y: LStr; - var pred = ancestor(x, y); + var x, y: LStr + var pred = ancestor(x, y) while pred() - { //assert(x.isSet()); //assert(y.isSet()); - cout << x.get() << " is an ancestor of " << y.get() << endl; - } -} + cout << x.get() << " is an ancestor of " << y.get() << endl /*-<<< All ancestors (7) Mary is an ancestor of Sam Mary is an ancestor of Denise diff --git a/tests/Logic/PrologErr1.spr b/tests/Logic/PrologErr1.spr index aaf4c57c..e0809fe1 100644 --- a/tests/Logic/PrologErr1.spr +++ b/tests/Logic/PrologErr1.spr @@ -1,5 +1,5 @@ //!! -import logic = logic.prolog; +import logic = logic.prolog logic.compileProlog(" orbits(mercury, sun). @@ -13,10 +13,8 @@ logic.compileProlog(" planet(P) :- orbits(P, sun).# // ERROR satellite(S) :- orbits(S, P), planet(P). -"); +") fun test1 -{ - var x: LStr; - var pred = satellite(x); -} + var x: LStr + var pred = satellite(x) diff --git a/tests/Logic/PrologErr2.spr b/tests/Logic/PrologErr2.spr index 6541e3bd..8e3c619e 100644 --- a/tests/Logic/PrologErr2.spr +++ b/tests/Logic/PrologErr2.spr @@ -1,5 +1,5 @@ //!! -import logic = logic.prolog; +import logic = logic.prolog logic.compileProlog(" orbits(mercury, sun). @@ -13,10 +13,8 @@ logic.compileProlog(" planet(P) :- orbits(P, sun), bubu ERROR satellite(S) :- orbits(S, P), planet(P). -"); +") fun test1 -{ - var x: LStr; - var pred = satellite(x); -} + var x: LStr + var pred = satellite(x) diff --git a/tests/Logic/PrologErr3.spr b/tests/Logic/PrologErr3.spr index 79fa164c..c13d9feb 100644 --- a/tests/Logic/PrologErr3.spr +++ b/tests/Logic/PrologErr3.spr @@ -1,5 +1,5 @@ //!! -import logic = logic.prolog; +import logic = logic.prolog logic.compileProlog(" orbits(mercury, sun). @@ -13,11 +13,9 @@ logic.compileProlog(" planet(P) :- orbits(P, sun). satellite(S) :- orbits(S, P), planet(P). -"); +") fun test1 -{ - var x: logic.LStr; - var pred = satellite(x); - var pred = satellite(x,x); // ERROR -} + var x: logic.LStr + var pred = satellite(x) + var pred = satellite(x,x) // ERROR diff --git a/tests/Logic/PrologParserTest.spr b/tests/Logic/PrologParserTest.spr index 41b38de3..fc999941 100644 --- a/tests/Logic/PrologParserTest.spr +++ b/tests/Logic/PrologParserTest.spr @@ -1,5 +1,5 @@ //!! -import logic = logic.prolog; +import logic = logic.prolog logic.compileProlog(" orbits(mercury, sun). @@ -13,7 +13,7 @@ logic.compileProlog(" planet(P) :- orbits(P, sun). satellite(S) :- orbits(S, P), planet(P). -"); +") logic.compileProlog(" children(sam, mary). @@ -38,7 +38,7 @@ logic.compileProlog(" ancestor(A, C) :- children(C, A). ancestor(A, C) :- children(C, P), ancestor(A, P). -"); +") [ct] var solarProlog = <{ orbits(mercury, sun). @@ -52,7 +52,7 @@ logic.compileProlog(" planet(P) :- orbits(P, sun). satellite(S) :- orbits(S, P), planet(P). -}>; +}> [ct] var parentsProlog = <{ children(sam, mary). @@ -77,35 +77,29 @@ logic.compileProlog(" ancestor(A, C) :- children(C, A). ancestor(A, C) :- children(C, P), ancestor(A, P). -}>; +}> fun sprMain -{ if ( programArgs.size() < 2 ) - return; - var n = programArgs(1) asInt; + return + var n = programArgs(1) asInt if n == 1; test1 else if n == 2; test2 else if n == 3; test3 else if n == 4; test4 -} fun test1 -{ - cout << "Is Mercury orbiting Sun? " << orbits("mercury", "sun")() << endl; - cout << "Is Mercury a planet? " << planet("mercury")() << endl; + cout << "Is Mercury orbiting Sun? " << orbits("mercury", "sun")() << endl + cout << "Is Mercury a planet? " << planet("mercury")() << endl - var x: logic.LStr; - var pred = satellite(x); + var x: logic.LStr + var pred = satellite(x) while pred() - { //assert(x.isSet()); - cout << "Satellite: " << x.get() << endl; - } -} + cout << "Satellite: " << x.get() << endl /*<<>>*/ fun test2 -{ - cout << "?- children(sam, mary) => " << children("sam", "mary")() << endl; - cout << "?- gender(sam, male) => " << gender("sam", "male")() << endl; - cout << "?- parent(mary, sam) => " << parent("mary", "sam")() << endl; - cout << "?- father(frank, sam) => " << father("frank", "sam")() << endl; - cout << "?- mother(mary, sam) => " << mother("mary", "sam")() << endl; - cout << "?- ancestor(garry, sam) => " << ancestor("garry", "sam")() << endl; - - var x, y: logic.LStr; - var pred = ancestor(x, y); + cout << "?- children(sam, mary) => " << children("sam", "mary")() << endl + cout << "?- gender(sam, male) => " << gender("sam", "male")() << endl + cout << "?- parent(mary, sam) => " << parent("mary", "sam")() << endl + cout << "?- father(frank, sam) => " << father("frank", "sam")() << endl + cout << "?- mother(mary, sam) => " << mother("mary", "sam")() << endl + cout << "?- ancestor(garry, sam) => " << ancestor("garry", "sam")() << endl + + var x, y: logic.LStr + var pred = ancestor(x, y) while pred() - { //assert(x.isSet()); //assert(y.isSet()); - cout << x.get() << " is an ancestor of " << y.get() << endl; - } -} + cout << x.get() << " is an ancestor of " << y.get() << endl /*<< true ?- gender(sam, male) => true diff --git a/tests/Logic/Solar.spr b/tests/Logic/Solar.spr index dbf524e7..f98a8f53 100644 --- a/tests/Logic/Solar.spr +++ b/tests/Logic/Solar.spr @@ -1,5 +1,5 @@ //!! -import logic.predicates; +import logic.predicates //import assert; @@ -11,38 +11,30 @@ fun orbits(a, b: @LStr) = ( || a /=/ "Moon" && b /=/ "Earth" || a /=/ "Phobos" && b /=/ "Mars" || a /=/ "Deimos" && b /=/ "Mars" - ); + ) -fun planet(p: @LStr) = orbits(p, "Sun"); +fun planet(p: @LStr) = orbits(p, "Sun") fun satellite(s: @LStr): Predicate -{ - var p: LStr; - return orbits(s, p) && planet(p); -} + var p: LStr + return orbits(s, p) && planet(p) fun sprMain -{ if ( programArgs.size() < 2 ) - return; - var n = programArgs(1) asInt; + return + var n = programArgs(1) asInt if n == 1; test1 else if n == 2; test2 else if n == 3; test3 -} fun test1 -{ - var x, y: LStr; - var pred = orbits(x, y); + var x, y: LStr + var pred = orbits(x, y) while pred() - { //assert(x.isSet()); //assert(y.isSet()); - cout << x.get() << " orbits " << y.get() << endl; - } -} + cout << x.get() << " orbits " << y.get() << endl /*<<>>*/ fun test2 -{ - var x: LStr; - var pred = planet(x); + var x: LStr + var pred = planet(x) while pred() - { //assert(x.isSet()); - cout << "Planet: " << x.get() << endl; - } -} + cout << "Planet: " << x.get() << endl /*<<>>*/ fun test3 -{ - var x: LStr; - var pred = satellite(x); + var x: LStr + var pred = satellite(x) while pred() - { //assert(x.isSet()); - cout << "Satellite: " << x.get() << endl; - } -} + cout << "Satellite: " << x.get() << endl /*<<>>*/ diff --git a/tests/PerfTests/FibRanges/fib_op_base.spr b/tests/PerfTests/FibRanges/fib_op_base.spr index 5957d714..5fe47be9 100644 --- a/tests/PerfTests/FibRanges/fib_op_base.spr +++ b/tests/PerfTests/FibRanges/fib_op_base.spr @@ -1,35 +1,27 @@ // !! -O2 -import std.algorithms; +import std.algorithms -fun fib(n: UInt): UInt { - var a: UInt = 0; - var b: UInt = 1; - for i = 0..n { - var aOld = a; - a = b; - b += aOld; - } - return b; -} +fun fib(n: UInt): UInt + var a: UInt = 0 + var b: UInt = 1 + for i = 0..n + var aOld = a + a = b + b += aOld + return b fun sprMain -{ if ( programArgs.size() < 2 ) - return; - var n = programArgs(1) asInt; + return + var n = programArgs(1) asInt - var res: UInt = 0; + var res: UInt = 0 for i = 1...n - { - var f = fib(i); + var f = fib(i) if ( f % 2 != 0 ) - { - res += f*f; - } - } - cout << res << endl; -} + res += f*f + cout << res << endl /*-<<>>*/ diff --git a/tests/PerfTests/ForPerf/spr_for.spr b/tests/PerfTests/ForPerf/spr_for.spr index a5e5e7bb..3fdf9b21 100644 --- a/tests/PerfTests/ForPerf/spr_for.spr +++ b/tests/PerfTests/ForPerf/spr_for.spr @@ -1,25 +1,21 @@ // !! -O2 -import std.ranges; +import std.ranges [noInline] fun testAccumulate(n: UInt): ULong -{ - var res: ULong = 0; + var res: ULong = 0 for i = 0..n for j = 0..n - res += i*j; - return res; -} + res += i*j + return res fun sprMain -{ if ( programArgs.size() < 2 ) - return; - var n = programArgs(1) asInt; + return + var n = programArgs(1) asInt - var res = testAccumulate(n); - cout << res << endl; -} + var res = testAccumulate(n) + cout << res << endl /*-<<>>*/ diff --git a/tests/PerfTests/ForPerf/spr_while.spr b/tests/PerfTests/ForPerf/spr_while.spr index 9a8a808f..d37560de 100644 --- a/tests/PerfTests/ForPerf/spr_while.spr +++ b/tests/PerfTests/ForPerf/spr_while.spr @@ -1,25 +1,21 @@ //!! -O2 fun testAccumulate(n: UInt): ULong -{ - var res: ULong = 0; - var i = 0; + var res: ULong = 0 + var i = 0 while i>>*/ diff --git a/tests/PerfTests/Hash/TestHashPerf.spr b/tests/PerfTests/Hash/TestHashPerf.spr index 9348dc35..bd40c403 100644 --- a/tests/PerfTests/Hash/TestHashPerf.spr +++ b/tests/PerfTests/Hash/TestHashPerf.spr @@ -1,198 +1,159 @@ //! ! -O2 -dump-assembly -dump-opt-assembly -g -import std.map; -import std.sortedMap; -import std.sortedTable; -import std.staticArray; -import std.array; -import std.ptr; -import time = time; -import os = os; +import std.map +import std.sortedMap +import std.sortedTable +import std.staticArray +import std.array +import std.ptr +import time = time +import os = os -using payloadSize = 16; +using payloadSize = 16 datatype Obj - value: UInt; - payload: StaticArray(Byte, payloadSize); + value: UInt + payload: StaticArray(Byte, payloadSize) fun >> (this: @Obj, os: @OutStream) { os << "Obj(" << value << ")"; } // TODO: Move this to Std ??? datatype Equal(type: Type) using T = type -fun () (this: Equal, x,y: this.T): Bool = x == y; +fun () (this: Equal, x,y: this.T): Bool = x == y -using ObjPtr = Ptr(Obj); -using TestHashMap = Map(UInt, ObjPtr); -using TestSortedMap = SortedMap(UInt, ObjPtr, Less(UInt), Equal(UInt)); +using ObjPtr = Ptr(Obj) +using TestHashMap = Map(UInt, ObjPtr) +using TestSortedMap = SortedMap(UInt, ObjPtr, Less(UInt), Equal(UInt)) -var objects: Array(Obj); -var insertKeys: Array(UInt); -var searchKeys: Array(UInt); +var objects: Array(Obj) +var insertKeys: Array(UInt) +var searchKeys: Array(UInt) fun testInsert(bag: @AnyType, n: Int) -{ for i = 0..n - { // The element to insert - var key = insertKeys(i); - var obj: ObjPtr = objects(i); - obj.get().value = key; + var key = insertKeys(i) + var obj: ObjPtr = objects(i) + obj.get().value = key // Insert it - bag(key) = obj; - } -} + bag(key) = obj fun testChange(bag: @AnyType, n: Int) -{ for i = 0..n - { // Search the element - var key = searchKeys(i); - var r = bag.equalRange(key); + var key = searchKeys(i) + var r = bag.equalRange(key) if ( r.isEmpty() ) - { - cout << "FAIL: Cannot find element " << key << " in map!" << endl; - os.exit(-1); - return; - } + cout << "FAIL: Cannot find element " << key << " in map!" << endl + os.exit(-1) + return // Remove it from the map - var obj = r.front().v2; - bag.remove(r); + var obj = r.front().v2 + bag.remove(r) // Reinsert with a new key - key = insertKeys(i) + 1; - obj.get().value = key; - bag(key) = obj; - } -} + key = insertKeys(i) + 1 + obj.get().value = key + bag(key) = obj [noInline] fun testHit(bag: @AnyType, n: Int) -{ for i = 0..n - { // Search the element - var key = searchKeys(i) + 1; - var r = bag.equalRange(key); + var key = searchKeys(i) + 1 + var r = bag.equalRange(key) if ( r.isEmpty() ) - { - cout << "FAIL: Cannot find element " << key << " in map!" << endl; - return; - } + cout << "FAIL: Cannot find element " << key << " in map!" << endl + return // Ensure that we have the correct element - var obj = r.front().v2; + var obj = r.front().v2 if ( obj.get().value != key ) - { - cout << "FAIL: Element with key " << key << " has an invalid value: " << obj.get().value << endl; - return; - } - } -} + cout << "FAIL: Element with key " << key << " has an invalid value: " << obj.get().value << endl + return fun testMiss(bag: @AnyType, n: Int) -{ for i = 0..n - { // Search the element // As all elements are shifted by one, we will find nothing - var key = searchKeys(i); - var r = bag.equalRange(key); + var key = searchKeys(i) + var r = bag.equalRange(key) if ( !r.isEmpty() ) - { - cout << "FAIL: Element " << key << " shouldn't be in the map!" << endl; - return; - } - } -} + cout << "FAIL: Element " << key << " shouldn't be in the map!" << endl + return fun testRemove(bag: @AnyType, n: Int) -{ for i = 0..n - { // Search the element - var key = searchKeys(i) + 1; - var r = bag.equalRange(key); + var key = searchKeys(i) + 1 + var r = bag.equalRange(key) if ( r.isEmpty() ) - { - cout << "FAIL: Cannot find element " << key << " in map!" << endl; - return; - } + cout << "FAIL: Cannot find element " << key << " in map!" << endl + return - var obj = r.front().v2; + var obj = r.front().v2 // Remove it - bag.remove(r); + bag.remove(r) // Ensure that we have the correct element if ( obj.get().value != key ) - { - cout << "FAIL: Element with key " << key << " has an invalid value: " << obj.get().value << endl; - return; - } - } -} + cout << "FAIL: Element with key " << key << " has an invalid value: " << obj.get().value << endl + return [noDefault] datatype TestTimer - desc: StringRef; - n: UInt; - timerImpl: time.Timer; + desc: StringRef + n: UInt + timerImpl: time.Timer fun ctor(this: @TestTimer, desc: StringRef, n: UInt) - this.desc ctor desc; - this.n ctor n; - timerImpl ctor; + this.desc ctor desc + this.n ctor n + timerImpl ctor fun dtor(this: @TestTimer) - var t = timerImpl.elapsed(); - var t_ns = t * 1000000.0 / Double(n); - cout << desc << ":\t" << t << ", " << t_ns << " ns" << endl; + var t = timerImpl.elapsed() + var t_ns = t * 1000000.0 / Double(n) + cout << desc << ":\t" << t << ", " << t_ns << " ns" << endl fun sprMain -{ if ( programArgs.size() < 2 ) - return; + return //var n = programArgs(1) asInt; - using n = 10000000; + using n = 10000000 // Preallocate the objects - objects = Array(Obj)(n); + objects = Array(Obj)(n) // Initialize the keys - insertKeys = Array(UInt)(n); - searchKeys = Array(UInt)(n); + insertKeys = Array(UInt)(n) + searchKeys = Array(UInt)(n) for i = 0..n - { - insertKeys(i) = 0x80000000 + i*2; - searchKeys(i) = 0x80000000 + i*2; - } + insertKeys(i) = 0x80000000 + i*2 + searchKeys(i) = 0x80000000 + i*2 // TODO: random shuffling - var hashBag: TestHashMap; - { - var t = TestTimer("Hash Insert", n); - testInsert(hashBag, n); - } - { - var t = TestTimer("Hash Change", n); - testChange(hashBag, n); - } - { - var t = TestTimer("Hash Hit", n); - testHit(hashBag, n); - } - { - var t = TestTimer("Hash Miss", n); - testMiss(hashBag, n); - } - { - var t = TestTimer("Hash Remove", n); - testRemove(hashBag, n); - } -} + var hashBag: TestHashMap + // format off + ; + var t = TestTimer("Hash Insert", n) + testInsert(hashBag, n) + ; + var t = TestTimer("Hash Change", n) + testChange(hashBag, n) + ; + var t = TestTimer("Hash Hit", n) + testHit(hashBag, n) + ; + var t = TestTimer("Hash Miss", n) + testMiss(hashBag, n) + ; + var t = TestTimer("Hash Remove", n) + testRemove(hashBag, n) + // format on /*-<< 1 - { - n = nextCollatz(n); - ++len; - } - return len; -} + n = nextCollatz(n) + ++len + return len fun sprMain -{ if ( programArgs.size() < 2 ) - return; - var n = programArgs(1) asInt; + return + var n = programArgs(1) asInt - var sum: ULong = 0; - var count = 0; + var sum: ULong = 0 + var count = 0 for i = 1.. - { - var len = collatzLen(i); + var len = collatzLen(i) if ( len >= n ) - break; + break // Main part of computing the root mean square - sum += len*len; - ++count; - } - var res = sqrt(Double(sum) / Double(count)); - cout << res << endl; -} + sum += len*len + ++count + var res = sqrt(Double(sum) / Double(count)) + cout << res << endl /*<< 0 && n == 0 ) - return ackermann(m - 1, 1); - return ackermann(m - 1, ackermann(m, n - 1)); -} + return ackermann(m - 1, 1) + return ackermann(m - 1, ackermann(m, n - 1)) [native("test")] fun test(n: Int) -{ - writeLnInt(ackermann(0, 0)); - writeLnInt(ackermann(0, 1)); - writeLnInt(ackermann(0, 2)); - writeLnInt(ackermann(0, 3)); - writeLnInt(ackermann(0, 4)); - write('\n'); - writeLnInt(ackermann(1, 0)); - writeLnInt(ackermann(1, 1)); - writeLnInt(ackermann(1, 2)); - writeLnInt(ackermann(1, 3)); - writeLnInt(ackermann(1, 4)); - write('\n'); - writeLnInt(ackermann(2, 0)); - writeLnInt(ackermann(2, 1)); - writeLnInt(ackermann(2, 2)); - writeLnInt(ackermann(2, 3)); - writeLnInt(ackermann(2, 4)); - write('\n'); - writeLnInt(ackermann(3, 0)); - writeLnInt(ackermann(3, 1)); - writeLnInt(ackermann(3, 2)); - writeLnInt(ackermann(3, 3)); - writeLnInt(ackermann(3, 4)); - write('\n'); - writeLnInt(ackermann(4, 0)); -} + writeLnInt(ackermann(0, 0)) + writeLnInt(ackermann(0, 1)) + writeLnInt(ackermann(0, 2)) + writeLnInt(ackermann(0, 3)) + writeLnInt(ackermann(0, 4)) + write('\n') + writeLnInt(ackermann(1, 0)) + writeLnInt(ackermann(1, 1)) + writeLnInt(ackermann(1, 2)) + writeLnInt(ackermann(1, 3)) + writeLnInt(ackermann(1, 4)) + write('\n') + writeLnInt(ackermann(2, 0)) + writeLnInt(ackermann(2, 1)) + writeLnInt(ackermann(2, 2)) + writeLnInt(ackermann(2, 3)) + writeLnInt(ackermann(2, 4)) + write('\n') + writeLnInt(ackermann(3, 0)) + writeLnInt(ackermann(3, 1)) + writeLnInt(ackermann(3, 2)) + writeLnInt(ackermann(3, 3)) + writeLnInt(ackermann(3, 4)) + write('\n') + writeLnInt(ackermann(4, 0)) /*<< b ) - a = a - b; + a = a - b else - b = b - a; - } + b = b - a - return a; -} + return a [native("test")] fun test(n: Int) -{ - writeLnInt(gcdDivision(60, 42)); - writeLnInt(gcdDivision(2346, 13556)); - writeLnInt(gcdDivision(8769534, 481263)); - - writeLnInt(gcdSubtraction(60, 42)); - writeLnInt(gcdSubtraction(2346, 13556)); - writeLnInt(gcdSubtraction(8769534, 481263)); -} + writeLnInt(gcdDivision(60, 42)) + writeLnInt(gcdDivision(2346, 13556)) + writeLnInt(gcdDivision(8769534, 481263)) + + writeLnInt(gcdSubtraction(60, 42)) + writeLnInt(gcdSubtraction(2346, 13556)) + writeLnInt(gcdSubtraction(8769534, 481263)) /*<< err - { - p2 = poly3(a, b, c, d, x2); - p1 = poly3(a, b, c, d, x1); - t = x2 - p2 * (x2 - x1) / (p2 - p1); - x1 = x2; - x2 = t; - } + p2 = poly3(a, b, c, d, x2) + p1 = poly3(a, b, c, d, x1) + t = x2 - p2 * (x2 - x1) / (p2 - p1) + x1 = x2 + x2 = t - return t; -} + return t [native("test")] fun test(n: Int) -{ - writeLnDouble(secantMethod(0.0, 1.0, 0.0, -612.0, 10.0, 30.0, 0.001)); - writeLnDouble(secantMethod(1.0, 2.0, 3.0, 4.0, -10.0, 10.0, 0.00001)); -} + writeLnDouble(secantMethod(0.0, 1.0, 0.0, -612.0, 10.0, 30.0, 0.001)) + writeLnDouble(secantMethod(1.0, 2.0, 3.0, 4.0, -10.0, 10.0, 0.00001)) /*<< y; } fun printRange(nr: ContiguousMemoryRange(Int)) -{ while !nr.isEmpty() - { - cout << nr.front(); - nr.popFront(); + cout << nr.front() + nr.popFront() if ( nr.isEmpty() ) - cout << endl; + cout << endl else - cout << " "; - } -} + cout << " " fun printRange(nr: List(Int).RangeType) -{ while !nr.isEmpty() - { - cout << nr.front(); - nr.popFront(); + cout << nr.front() + nr.popFront() if ( nr.isEmpty() ) - cout << endl; + cout << endl else - cout << " "; - } -} + cout << " " fun createRangeAscending(size: SizeType): ContiguousMemoryRange(Int) -{ - var ptr = allocRawPtr(Int, size); - var ptrEnd = ptr.advance(DiffType(size)); - var i = 0; + var ptr = allocRawPtr(Int, size) + var ptrEnd = ptr.advance(DiffType(size)) + var i = 0 - while i < size ; i = i + 1; - ptr.advance(i).value() = i; + while i < size ; i = i + 1 + ptr.advance(i).value() = i - return ContiguousMemoryRange(Int)(ptr, ptrEnd); -} + return ContiguousMemoryRange(Int)(ptr, ptrEnd) fun test1() -{ - cout << min(-3, 10) << endl; - cout << min(10, 10) << endl; - cout << min(MyObj(40), MyObj(23)).x << endl; -} + cout << min(-3, 10) << endl + cout << min(10, 10) << endl + cout << min(MyObj(40), MyObj(23)).x << endl /*<<>>*/ fun test2() -{ - cout << max(-3, 10) << endl; - cout << max(10, 10) << endl; - cout << max(MyObj(40), MyObj(23)).x << endl; -} + cout << max(-3, 10) << endl + cout << max(10, 10) << endl + cout << max(MyObj(40), MyObj(23)).x << endl /*<<>>*/ fun test3() -{ - cout << min(-5, 5, Greater()) << endl; - cout << min(35, 5, Greater()) << endl; - cout << min(3, 3, Greater()) << endl; -} + cout << min(-5, 5, Greater()) << endl + cout << min(35, 5, Greater()) << endl + cout << min(3, 3, Greater()) << endl /*<<>>*/ fun test4() -{ - cout << max(-5, 5, Greater()) << endl; - cout << max(35, 5, Greater()) << endl; - cout << max(3, 3, Greater()) << endl; -} + cout << max(-5, 5, Greater()) << endl + cout << max(35, 5, Greater()) << endl + cout << max(3, 3, Greater()) << endl /*<<>>*/ fun test5() -{ - var a = MyObj(10); - var b = MyObj(20); - - swap(a, b); - cout << a.x << endl; - cout << b.x << endl; - swap(a, a); - cout << a.x << endl; -} + var a = MyObj(10) + var b = MyObj(20) + + swap(a, b) + cout << a.x << endl + cout << b.x << endl + swap(a, a) + cout << a.x << endl /*<<>>*/ fun test6() -{ - var cmr = createRangeAscending(10); + var cmr = createRangeAscending(10) - advance(cmr, 5); - printRange(cmr); -} + advance(cmr, 5) + printRange(cmr) /*<<>>*/ fun test7() -{ - var cmr = createRangeAscending(10); - var l = List(Int)(cmr); - var lr = l.all(); - - retract(cmr, 5); - printRange(cmr); - retract(lr, 5); - printRange(lr); -} + var cmr = createRangeAscending(10) + var l = List(Int)(cmr) + var lr = l.all() + + retract(cmr, 5) + printRange(cmr) + retract(lr, 5) + printRange(lr) /*<<>>*/ fun test8() -{ - var cmr = createRangeAscending(20); - var cmr0 = createRangeAscending(0); + var cmr = createRangeAscending(20) + var cmr0 = createRangeAscending(0) - cout << rangeSize(cmr) << endl; - cout << rangeSize(cmr0) << endl; -} + cout << rangeSize(cmr) << endl + cout << rangeSize(cmr0) << endl /*<<>>*/ fun test9() -{ - var x = 10; - var nr = createRangeAscending(5); - var pair = x ~ nr; + var x = 10 + var nr = createRangeAscending(5) + var pair = x ~ nr - cout << pair.v1 << endl; - printRange(pair.v2); + cout << pair.v1 << endl + printRange(pair.v2) - var pair2 = 20 ~ (50 ~ "bla"); + var pair2 = 20 ~ (50 ~ "bla") - cout << pair2.v1 << endl; - cout << pair2.v2.v1 << endl; - cout << pair2.v2.v2 << endl; -} + cout << pair2.v1 << endl + cout << pair2.v2.v1 << endl + cout << pair2.v2.v2 << endl /*<< y; } datatype Even - ; + fun ()(this: Even, x: Int): Bool { return x % 2 == 0; } datatype Minus - ; + -fun ()(this: Minus, x: Int, y: Int) = x - y; +fun ()(this: Minus, x: Int, y: Int) = x - y fun printRange(nr: AnyType) -{ while !nr.isEmpty() - { - cout << nr.front(); - nr.popFront(); + cout << nr.front() + nr.popFront() if (nr.isEmpty() ) - cout << endl; + cout << endl else - cout << ' '; - } -} + cout << ' ' fun printEmpty(nr: AnyType) -{ - cout << ife(nr.isEmpty(), "empty", "not empty") << endl; -} + cout << ife(nr.isEmpty(), "empty", "not empty") << endl fun makeList(): List(Int) -{ - var li: List(Int); - - li.pushBack(3); - li.pushBack(1); - li.pushBack(-4); - li.pushBack(-8); - li.pushBack(-8); - li.pushBack(7); - li.pushBack(-4); - li.pushBack(-8); - li.pushBack(3); - li.pushBack(-5); - li.pushBack(-10); - li.pushBack(-6); - li.pushBack(-10); - li.pushBack(7); - li.pushBack(-8); - - return li; -} + var li: List(Int) + + li.pushBack(3) + li.pushBack(1) + li.pushBack(-4) + li.pushBack(-8) + li.pushBack(-8) + li.pushBack(7) + li.pushBack(-4) + li.pushBack(-8) + li.pushBack(3) + li.pushBack(-5) + li.pushBack(-10) + li.pushBack(-6) + li.pushBack(-10) + li.pushBack(7) + li.pushBack(-8) + + return li fun createRangeAscending(size: SizeType): ContiguousMemoryRange(Int) -{ - var ptr = allocRawPtr(Int, size); - var ptrEnd = ptr.advance(DiffType(size)); - var i = 0; + var ptr = allocRawPtr(Int, size) + var ptrEnd = ptr.advance(DiffType(size)) + var i = 0 - while i < size ; i = i + 1; - ptr.advance(i).value() = i; + while i < size ; i = i + 1 + ptr.advance(i).value() = i - return ContiguousMemoryRange(Int)(ptr, ptrEnd); -} + return ContiguousMemoryRange(Int)(ptr, ptrEnd) fun test1() -{ var nr = 0..10 - printRange(find(nr, 0)); - printRange(find(nr, 5)); - printEmpty(find(nr, 10)); -} + printRange(find(nr, 0)) + printRange(find(nr, 5)) + printEmpty(find(nr, 10)) /*<<>>*/ fun test2() -{ var nr1 = 11..99../2 var nr2 = 5..10 - printRange(findIf(nr2, Even())); - printEmpty(findIf(nr1, Even())); -} + printRange(findIf(nr2, Even())) + printEmpty(findIf(nr1, Even())) /*<<>>*/ fun test3() -{ var nr1 = 0..10 var nr2 = -10..40../3 var nr3 = 20..20../100 - printRange(findFirstOf(nr1, nr2)); - printEmpty(findFirstOf(nr3, nr2)); - printEmpty(findFirstOf(nr2, nr3)); -} + printRange(findFirstOf(nr1, nr2)) + printEmpty(findFirstOf(nr3, nr2)) + printEmpty(findFirstOf(nr2, nr3)) /*<<>>*/ fun test4() -{ var nr1 = 0..10../2 var nr2 = 5..40../3 var nr3 = 20..20../100 var nr4 = 10..20 - printRange(findFirstOfIf(nr1, nr2, Greater())); - printEmpty(findFirstOfIf(nr3, nr2, Greater())); - printEmpty(findFirstOfIf(nr2, nr3, Greater())); - printEmpty(findFirstOfIf(nr1, nr4, Greater())); -} + printRange(findFirstOfIf(nr1, nr2, Greater())) + printEmpty(findFirstOfIf(nr3, nr2, Greater())) + printEmpty(findFirstOfIf(nr2, nr3, Greater())) + printEmpty(findFirstOfIf(nr1, nr4, Greater())) /*<<>>*/ fun test5() -{ - var li = makeList(); + var li = makeList() - cout << count(li.all(), -8) << endl; - cout << count(li.all(), 100) << endl; -} + cout << count(li.all(), -8) << endl + cout << count(li.all(), 100) << endl /*<<>>*/ fun test6() -{ var nr = 1..9../2 - var li = makeList(); + var li = makeList() - cout << countIf(li.all(), Even()) << endl; - cout << countIf(nr, Even()) << endl; -} + cout << countIf(li.all(), Even()) << endl + cout << countIf(nr, Even()) << endl /*<<>>*/ fun test7() -{ var nr1 = 0..10 var nr2 = 0..10 var nr3 = 10..10../2 @@ -206,14 +181,13 @@ fun test7() var nr6 = 0..11 var nr7 = 0..9 - cout << equal(nr1, nr2) << endl; - cout << equal(nr1, nr3) << endl; - cout << equal(nr3, nr4) << endl; - cout << equal(nr1, nr5) << endl; - cout << equal(nr1, nr6) << endl; - cout << equal(nr1, nr7) << endl; - cout << equal(nr4, nr7) << endl; -} + cout << equal(nr1, nr2) << endl + cout << equal(nr1, nr3) << endl + cout << equal(nr3, nr4) << endl + cout << equal(nr1, nr5) << endl + cout << equal(nr1, nr6) << endl + cout << equal(nr1, nr7) << endl + cout << equal(nr4, nr7) << endl /*<<>>*/ fun test8() -{ var nr1 = 0..10 var nr2 = 0..10 var nr3 = 10..10../2 @@ -236,16 +209,15 @@ fun test8() var nr8 = -1..9 var nr9 = -3..50 - cout << equalIf(nr1, nr2, Greater()) << endl; - cout << equalIf(nr1, nr3, Greater()) << endl; - cout << equalIf(nr3, nr4, Greater()) << endl; - cout << equalIf(nr1, nr5, Greater()) << endl; - cout << equalIf(nr1, nr6, Greater()) << endl; - cout << equalIf(nr1, nr7, Greater()) << endl; - cout << equalIf(nr4, nr7, Greater()) << endl; - cout << equalIf(nr1, nr8, Greater()) << endl; - cout << equalIf(nr1, nr9, Greater()) << endl; -} + cout << equalIf(nr1, nr2, Greater()) << endl + cout << equalIf(nr1, nr3, Greater()) << endl + cout << equalIf(nr3, nr4, Greater()) << endl + cout << equalIf(nr1, nr5, Greater()) << endl + cout << equalIf(nr1, nr6, Greater()) << endl + cout << equalIf(nr1, nr7, Greater()) << endl + cout << equalIf(nr4, nr7, Greater()) << endl + cout << equalIf(nr1, nr8, Greater()) << endl + cout << equalIf(nr1, nr9, Greater()) << endl /*<<>>*/ fun test9() -{ var nr1 = 0..10 var nr2 = 0..10 var nr3 = 3..7 var nr4 = 20..20../20 var nr5 = 0..20 - printRange(findRange(nr1, nr2)); - printRange(findRange(nr1, nr3)); - printRange(findRange(nr1, nr1)); - printEmpty(findRange(nr1, nr5)); - printRange(findRange(nr1, nr4)); - printEmpty(findRange(nr4, nr1)); -} + printRange(findRange(nr1, nr2)) + printRange(findRange(nr1, nr3)) + printRange(findRange(nr1, nr1)) + printEmpty(findRange(nr1, nr5)) + printRange(findRange(nr1, nr4)) + printEmpty(findRange(nr4, nr1)) /*<<>>*/ fun test10() -{ var nr1 = 0..10 var nr2 = 3..5 var nr3 = 10..10 var nr4 = 4..11 - printRange(findRangeIf(nr1, nr2, Greater())); - printRange(findRangeIf(nr1, nr3, Greater())); - printEmpty(findRangeIf(nr1, nr4, Greater())); - printEmpty(findRangeIf(nr1, nr1, Greater())); -} + printRange(findRangeIf(nr1, nr2, Greater())) + printRange(findRangeIf(nr1, nr3, Greater())) + printEmpty(findRangeIf(nr1, nr4, Greater())) + printEmpty(findRangeIf(nr1, nr1, Greater())) /*<<>>*/ fun test11() -{ - var li = makeList(); + var li = makeList() - printRange(minElement(li.all())); + printRange(minElement(li.all())) var nr = 10..10 - printEmpty(minElement(nr)); -} + printEmpty(minElement(nr)) /*<<>>*/ fun test12() -{ - var li = makeList(); + var li = makeList() - printRange(minElementIf(li.all(), Greater())); + printRange(minElementIf(li.all(), Greater())) var nr = 10..10 - printEmpty(minElementIf(nr, Greater())); -} + printEmpty(minElementIf(nr, Greater())) /*<<>>*/ fun test13() -{ - var li = makeList(); + var li = makeList() - printRange(maxElement(li.all())); + printRange(maxElement(li.all())) var nr = 10..10 - printEmpty(maxElement(nr)); -} + printEmpty(maxElement(nr)) /*<<>>*/ fun test14() -{ - var li = makeList(); + var li = makeList() - printRange(maxElementIf(li.all(), Greater())); + printRange(maxElementIf(li.all(), Greater())) var nr = 10..10 - printEmpty(maxElementIf(nr, Greater())); -} + printEmpty(maxElementIf(nr, Greater())) /*<<>>*/ fun test15() -{ - var li = makeList(); - var pair = minMaxElement(li.all()); + var li = makeList() + var pair = minMaxElement(li.all()) - printRange(pair.v1); - printRange(pair.v2); + printRange(pair.v1) + printRange(pair.v2) var nr = 10..10 - var pair2 = minMaxElement(nr); + var pair2 = minMaxElement(nr) - printEmpty(pair2.v1); - printEmpty(pair2.v2); -} + printEmpty(pair2.v1) + printEmpty(pair2.v2) /*<<>>*/ fun test16() -{ - var li = makeList(); - var pair = minMaxElementIf(li.all(), Greater()); + var li = makeList() + var pair = minMaxElementIf(li.all(), Greater()) - printRange(pair.v1); - printRange(pair.v2); + printRange(pair.v1) + printRange(pair.v2) var nr = 10..10 - var pair2 = minMaxElementIf(nr, Greater()); - printEmpty(pair2.v1); - printEmpty(pair2.v2); -} + var pair2 = minMaxElementIf(nr, Greater()) + printEmpty(pair2.v1) + printEmpty(pair2.v2) /*<<>>*/ fun test17() -{ var nr1 = 0..10 var nr2 = 2..5 var nr3 = -1..20 var nr4 = 1..15 - cout << compare(nr1, nr2) << endl; - cout << compare(nr1, nr3) << endl; - cout << compare(nr1, nr1) << endl; - cout << compare(nr1, nr4) << endl; -} + cout << compare(nr1, nr2) << endl + cout << compare(nr1, nr3) << endl + cout << compare(nr1, nr1) << endl + cout << compare(nr1, nr4) << endl /*<<>>*/ fun test18() -{ var nr1 = 0..10 var nr2 = 2..5 var nr3 = -1..20 var nr4 = 1..15 - cout << compare(nr1, nr2, Greater()) << endl; - cout << compare(nr1, nr3, Greater()) << endl; - cout << compare(nr1, nr1, Greater()) << endl; - cout << compare(nr1, nr4, Greater()) << endl; -} + cout << compare(nr1, nr2, Greater()) << endl + cout << compare(nr1, nr3, Greater()) << endl + cout << compare(nr1, nr1, Greater()) << endl + cout << compare(nr1, nr4, Greater()) << endl /*<<>>*/ fun test19() -{ var nr1 = 0..10 var nr2 = 20..10 ../ -1 - cout << isSorted(nr1) << endl; - cout << isSorted(nr2) << endl; -} + cout << isSorted(nr1) << endl + cout << isSorted(nr2) << endl /*<<>>*/ fun test20() -{ var nr1 = 0..10 var nr2 = 10..5 ../ -1 - cout << isSorted(nr1, Greater()) << endl; - cout << isSorted(nr2, Greater()) << endl; -} + cout << isSorted(nr1, Greater()) << endl + cout << isSorted(nr2, Greater()) << endl /*<<>>*/ fun test21() -{ - var li = makeList(); + var li = makeList() - cout << indexOf(li.all(), -10) << endl; - cout << indexOf(li.all(), -50) << endl; -} + cout << indexOf(li.all(), -10) << endl + cout << indexOf(li.all(), -50) << endl /*<<>>*/ fun test22() -{ - var li = makeList(); + var li = makeList() var nr = 5..19../2 - cout << indexOfIf(li.all(), Even()) << endl; - cout << indexOfIf(nr, Even()) << endl; -} + cout << indexOfIf(li.all(), Even()) << endl + cout << indexOfIf(nr, Even()) << endl /*<<>>*/ fun test23() -{ - var li = makeList(); - var lr = li.all(); + var li = makeList() + var lr = li.all() - cout << foldLeft(lr, Minus(), 0) << endl; - cout << foldRight(lr, Minus(), 0) << endl; + cout << foldLeft(lr, Minus(), 0) << endl + cout << foldRight(lr, Minus(), 0) << endl - var nr = NumericRangeWithStep(Int)(); + var nr = NumericRangeWithStep(Int)() - cout << foldLeft(nr, Minus(), 100) << endl; -} + cout << foldLeft(nr, Minus(), 100) << endl /*<< y; } datatype Even - ; + fun ()(this: Even, x: Int): Bool { return x % 2 == 0; } fun printRange(nr: AnyType) -{ while !nr.isEmpty() - { - cout << nr.front(); - nr.popFront(); + cout << nr.front() + nr.popFront() if (nr.isEmpty() ) - cout << endl; + cout << endl else - cout << " "; - } -} + cout << " " fun printEmpty(nr: AnyType) -{ - cout << ife(nr.isEmpty(), "empty", "not empty") << endl; -} + cout << ife(nr.isEmpty(), "empty", "not empty") << endl fun makeList(): List(Int) -{ - var li: List(Int); - - li.pushBack(3); - li.pushBack(1); - li.pushBack(-4); - li.pushBack(-8); - li.pushBack(-8); - li.pushBack(7); - li.pushBack(-4); - li.pushBack(-8); - li.pushBack(3); - li.pushBack(-5); - li.pushBack(-10); - li.pushBack(-6); - li.pushBack(-10); - li.pushBack(7); - li.pushBack(-8); - - return li; -} + var li: List(Int) + + li.pushBack(3) + li.pushBack(1) + li.pushBack(-4) + li.pushBack(-8) + li.pushBack(-8) + li.pushBack(7) + li.pushBack(-4) + li.pushBack(-8) + li.pushBack(3) + li.pushBack(-5) + li.pushBack(-10) + li.pushBack(-6) + li.pushBack(-10) + li.pushBack(7) + li.pushBack(-8) + + return li fun makeList(li: @List(Int)) -{ - li.pushBack(3); - li.pushBack(1); - li.pushBack(-4); - li.pushBack(-8); - li.pushBack(-8); - li.pushBack(7); - li.pushBack(-4); - li.pushBack(-8); - li.pushBack(3); - li.pushBack(-5); - li.pushBack(-10); - li.pushBack(-6); - li.pushBack(-10); - li.pushBack(7); - li.pushBack(-8); -} + li.pushBack(3) + li.pushBack(1) + li.pushBack(-4) + li.pushBack(-8) + li.pushBack(-8) + li.pushBack(7) + li.pushBack(-4) + li.pushBack(-8) + li.pushBack(3) + li.pushBack(-5) + li.pushBack(-10) + li.pushBack(-6) + li.pushBack(-10) + li.pushBack(7) + li.pushBack(-8) // fun printRange(nr: List(Int).RangeType) // { @@ -109,122 +97,108 @@ fun makeList(li: @List(Int)) // } fun createRangeAscending(size: SizeType): ContiguousMemoryRange(Int) -{ - var ptr = allocRawPtr(Int, size); - var ptrEnd = ptr.advance(DiffType(size)); - var i = 0; + var ptr = allocRawPtr(Int, size) + var ptrEnd = ptr.advance(DiffType(size)) + var i = 0 - while i < size ; i = i + 1; - ptr.advance(i).value() = i; + while i < size ; i = i + 1 + ptr.advance(i).value() = i - return ContiguousMemoryRange(Int)(ptr, ptrEnd); -} + return ContiguousMemoryRange(Int)(ptr, ptrEnd) fun test1() -{ - var nr = NumericRangeWithStep(Int)(0, 10, 1); - var li: List(Int); - makeList(li); - var lr = li.all(); + var nr = NumericRangeWithStep(Int)(0, 10, 1) + var li: List(Int) + makeList(li) + var lr = li.all() - printRange(copy(nr, lr)); - printRange(lr); -} + printRange(copy(nr, lr)) + printRange(lr) /*<<>>*/ fun test2() -{ - var li: List(Int); - makeList(li); - var lr = li.all(); - - replace(lr, -8, 42); - printRange(lr); - replace(lr, 100, 43); - printRange(lr); -} + var li: List(Int) + makeList(li) + var lr = li.all() + + replace(lr, -8, 42) + printRange(lr) + replace(lr, 100, 43) + printRange(lr) /*<<>>*/ fun test3() -{ - var li: List(Int); - makeList(li); - var lr = li.all(); - - replaceIf(lr, Even(), -1); - printRange(lr); - replaceIf(lr, Even(), 42); - printRange(lr); -} + var li: List(Int) + makeList(li) + var lr = li.all() + + replaceIf(lr, Even(), -1) + printRange(lr) + replaceIf(lr, Even(), 42) + printRange(lr) /*<<>>*/ fun test4() -{ - var li: List(Int); - makeList(li); - var lr = li.all(); - - reverse(lr); - printRange(lr); -} + var li: List(Int) + makeList(li) + var lr = li.all() + + reverse(lr) + printRange(lr) /*<<>>*/ fun test5() -{ - var v = Vector(Int)(makeList().all()); - var vr = v.all(); + var v = Vector(Int)(makeList().all()) + var vr = v.all() - sort(vr); - printRange(vr); + sort(vr) + printRange(vr) - var ev = Vector(Int)(); - var er = ev.all(); + var ev = Vector(Int)() + var er = ev.all() - sort(er); - printRange(er); + sort(er) + printRange(er) - var vec = Vector(Int)(NumericRangeWithStep(Int)(10000, 0, -1)); + var vec = Vector(Int)(NumericRangeWithStep(Int)(10000, 0, -1)) - sort(vec.all()); + sort(vec.all()) if ( !isSorted(vec.all()) ) - cout << "Test failed" << endl; -} + cout << "Test failed" << endl /*<<>>*/ fun test6() -{ - var v = Vector(Int)(makeList().all()); - var vr = v.all(); + var v = Vector(Int)(makeList().all()) + var vr = v.all() - sort(vr, Greater()); - printRange(vr); + sort(vr, Greater()) + printRange(vr) - var ve = Vector(Int)(); - var er = ve.all(); + var ve = Vector(Int)() + var er = ve.all() - sort(er, Greater()); - printRange(er); + sort(er, Greater()) + printRange(er) - var vec = Vector(Int)(NumericRangeWithStep(Int)(0, 10000, 1)); + var vec = Vector(Int)(NumericRangeWithStep(Int)(0, 10000, 1)) - sort(vec.all(), Greater()); + sort(vec.all(), Greater()) if ( !isSorted(vec.all(), Greater()) ) - cout << "Test failed" << endl; -} + cout << "Test failed" << endl /*<<>>*/ diff --git a/tests/StdLib/AlgorithmsTest4.spr b/tests/StdLib/AlgorithmsTest4.spr index df61b339..66fad9c0 100644 --- a/tests/StdLib/AlgorithmsTest4.spr +++ b/tests/StdLib/AlgorithmsTest4.spr @@ -1,134 +1,118 @@ //!! -import std.algorithms; -import std.contiguousMemoryRange(ContiguousMemoryRange); -import std.rawPtr(RawPtr, allocRawPtr); -import std.list(List); -import std.vector(Vector); -import std.array(Array); +import std.algorithms +import std.contiguousMemoryRange(ContiguousMemoryRange) +import std.rawPtr(RawPtr, allocRawPtr) +import std.list(List) +import std.vector(Vector) +import std.array(Array) fun sprMain -{ if ( programArgs.size() < 2 ) - return; - var n = programArgs(1) asInt; + return + var n = programArgs(1) asInt if n == 1; test1 else if n == 2; test2 else if n == 3; test3 else if n == 4; test4 -} [initCtor] datatype MyObj - x: Int; + x: Int fun <(this, other: @MyObj): Bool { return x < other.x; } datatype Greater - ; + fun ()(this: Greater, x: Int, y: Int): Bool { return x > y; } datatype Even - ; + fun ()(this: Even, x: Int): Bool { return x % 2 == 0; } datatype Minus - ; + -fun ()(this: Minus, x: Int, y: Int) = x - y; +fun ()(this: Minus, x: Int, y: Int) = x - y fun printRange(nr: AnyType) -{ while !nr.isEmpty() - { - cout << nr.front(); - nr.popFront(); + cout << nr.front() + nr.popFront() if (nr.isEmpty() ) - cout << endl; + cout << endl else - cout << ' '; - } -} + cout << ' ' fun makeList(): List(Int) -{ - var li: List(Int); - - li.pushBack(3); - li.pushBack(1); - li.pushBack(-4); - li.pushBack(-8); - li.pushBack(-8); - li.pushBack(7); - li.pushBack(-4); - li.pushBack(-8); - li.pushBack(3); - li.pushBack(-5); - li.pushBack(-10); - li.pushBack(-6); - li.pushBack(-10); - li.pushBack(7); - li.pushBack(-8); - - return li; -} + var li: List(Int) + + li.pushBack(3) + li.pushBack(1) + li.pushBack(-4) + li.pushBack(-8) + li.pushBack(-8) + li.pushBack(7) + li.pushBack(-4) + li.pushBack(-8) + li.pushBack(3) + li.pushBack(-5) + li.pushBack(-10) + li.pushBack(-6) + li.pushBack(-10) + li.pushBack(7) + li.pushBack(-8) + + return li fun createRangeAscending(size: SizeType): ContiguousMemoryRange(Int) -{ - var ptr = allocRawPtr(Int, size); - var ptrEnd = ptr.advance(DiffType(size)); - var i = 0; + var ptr = allocRawPtr(Int, size) + var ptrEnd = ptr.advance(DiffType(size)) + var i = 0 - while i < size ; i = i + 1; - ptr.advance(i).value() = i; + while i < size ; i = i + 1 + ptr.advance(i).value() = i - return ContiguousMemoryRange(Int)(ptr, ptrEnd); -} + return ContiguousMemoryRange(Int)(ptr, ptrEnd) fun test1() -{ - var arr = Array(Int)(20, 0); - var nr1 = NumericRangeWithStep(Int)(0, 10, 1); - var nr2 = NumericRangeWithStep(Int)(0, 11, 2); - - printRange(merge(nr1, nr2, arr.all())); - printRange(arr.all()); -} + var arr = Array(Int)(20, 0) + var nr1 = NumericRangeWithStep(Int)(0, 10, 1) + var nr2 = NumericRangeWithStep(Int)(0, 11, 2) + + printRange(merge(nr1, nr2, arr.all())) + printRange(arr.all()) /*<<>>*/ fun test2() -{ - var arr = Array(Int)(20, 0); - var nr1 = NumericRangeWithStep(Int)(10, 0, -1); - var nr2 = NumericRangeWithStep(Int)(11, 0, -2); - - printRange(merge(nr1, nr2, arr.all(), Greater())); - printRange(arr.all()); -} + var arr = Array(Int)(20, 0) + var nr1 = NumericRangeWithStep(Int)(10, 0, -1) + var nr2 = NumericRangeWithStep(Int)(11, 0, -2) + + printRange(merge(nr1, nr2, arr.all(), Greater())) + printRange(arr.all()) /*<<>>*/ fun test3() -{ - var v = Vector(Int)(makeList().all()); - - sort(v.all()); - cout << binarySearch(v.all(), 7) << endl; - cout << binarySearch(v.all(), -5) << endl; - cout << binarySearch(v.all(), 9) << endl; - cout << binarySearch(v.all(), -100) << endl; - cout << binarySearch(v.all(), 200) << endl; - cout << binarySearch(v.all(), -10) << endl; - v.assign(NumericRangeWithStep(Int)(0, 100000, 2)); - cout << binarySearch(v.all(), 56872) << endl; - cout << binarySearch(v.all(), 56871) << endl; -} + var v = Vector(Int)(makeList().all()) + + sort(v.all()) + cout << binarySearch(v.all(), 7) << endl + cout << binarySearch(v.all(), -5) << endl + cout << binarySearch(v.all(), 9) << endl + cout << binarySearch(v.all(), -100) << endl + cout << binarySearch(v.all(), 200) << endl + cout << binarySearch(v.all(), -10) << endl + v.assign(NumericRangeWithStep(Int)(0, 100000, 2)) + cout << binarySearch(v.all(), 56872) << endl + cout << binarySearch(v.all(), 56871) << endl /*<<>>*/ fun test4() -{ - var v = Vector(Int)(makeList().all()); - - sort(v.all(), Greater()); - cout << binarySearch(v.all(), 7, Greater()) << endl; - cout << binarySearch(v.all(), -5, Greater()) << endl; - cout << binarySearch(v.all(), 9, Greater()) << endl; - cout << binarySearch(v.all(), -100, Greater()) << endl; - cout << binarySearch(v.all(), 200, Greater()) << endl; - cout << binarySearch(v.all(), -10, Greater()) << endl; - v.assign(NumericRangeWithStep(Int)(100000, 0, -2)); - cout << binarySearch(v.all(), 56872, Greater()) << endl; - cout << binarySearch(v.all(), 56871, Greater()) << endl; -} + var v = Vector(Int)(makeList().all()) + + sort(v.all(), Greater()) + cout << binarySearch(v.all(), 7, Greater()) << endl + cout << binarySearch(v.all(), -5, Greater()) << endl + cout << binarySearch(v.all(), 9, Greater()) << endl + cout << binarySearch(v.all(), -100, Greater()) << endl + cout << binarySearch(v.all(), 200, Greater()) << endl + cout << binarySearch(v.all(), -10, Greater()) << endl + v.assign(NumericRangeWithStep(Int)(100000, 0, -2)) + cout << binarySearch(v.all(), 56872, Greater()) << endl + cout << binarySearch(v.all(), 56871, Greater()) << endl /*<<>>*/ fun test2() -{ - var a = Array(MyObj)(createRangeAscending(4)); + var a = Array(MyObj)(createRangeAscending(4)) - printSizeInfo(a); - printArray(a); -} + printSizeInfo(a) + printArray(a) /*<<>>*/ fun test3() -{ - var a1: Array(MyObj); - var a2 = Array(MyObj)(createRangeAscending(4)); - var a3: Array(MyObj) = a1; - var a4 = a2; - - printSizeInfo(a3); - printSizeInfo(a4); - printArray(a4); -} + var a1: Array(MyObj) + var a2 = Array(MyObj)(createRangeAscending(4)) + var a3: Array(MyObj) = a1 + var a4 = a2 + + printSizeInfo(a3) + printSizeInfo(a4) + printArray(a4) /*<<>>*/ fun test4() -{ - var a = Array(MyObj)(6); + var a = Array(MyObj)(6) - printSizeInfo(a); - printArray(a); -} + printSizeInfo(a) + printArray(a) /*<<>>*/ fun test5() -{ - var a = Array(MyObj)(6, MyObj(42)); + var a = Array(MyObj)(6, MyObj(42)) - printSizeInfo(a); - printArray(a); -} + printSizeInfo(a) + printArray(a) /*<<>>*/ fun test7() -{ - var a = Array(MyObj)(createRangeAscending(8)); + var a = Array(MyObj)(createRangeAscending(8)) - a.at(1).x = 111; - a.at(5).x = 555; - printArray(a); -} + a.at(1).x = 111 + a.at(5).x = 555 + printArray(a) /*<<>>*/ fun test8() -{ - var a = Array(MyObj)(createRangeAscending(4)); - var r = a.all(); - - while !r.isEmpty() ; r.popFront(); - cout << r.front().x << endl; - r = ContiguousMemoryRange(MyObj)(a.all()); - while !r.isEmpty() ; r.popFront(); - r.front().x = r.front().x + 1; - printSizeInfo(a); - printArray(a); -} + var a = Array(MyObj)(createRangeAscending(4)) + var r = a.all() + + while !r.isEmpty() ; r.popFront() + cout << r.front().x << endl + r = ContiguousMemoryRange(MyObj)(a.all()) + while !r.isEmpty() ; r.popFront() + r.front().x = r.front().x + 1 + printSizeInfo(a) + printArray(a) /*<<>>*/ fun test9() -{ - var a1: Array(MyObj); - var a2 = Array(MyObj)(createRangeAscending(8)); - var a3 = Array(MyObj)(createRangeAscending(4)); - - a1.assign(createRangeAscending(5)); - printSizeInfo(a1); - a2.assign(createRangeAscending(4)); - printSizeInfo(a2); - printArray(a2); - a3.at(0) = MyObj(3); - a3.at(1) = MyObj(2); - a3.at(2) = MyObj(1); - a3.at(3) = MyObj(0); - a3.assign(createRangeAscending(4)); - printSizeInfo(a3); - printArray(a3); -} + var a1: Array(MyObj) + var a2 = Array(MyObj)(createRangeAscending(8)) + var a3 = Array(MyObj)(createRangeAscending(4)) + + a1.assign(createRangeAscending(5)) + printSizeInfo(a1) + a2.assign(createRangeAscending(4)) + printSizeInfo(a2) + printArray(a2) + a3.at(0) = MyObj(3) + a3.at(1) = MyObj(2) + a3.at(2) = MyObj(1) + a3.at(3) = MyObj(0) + a3.assign(createRangeAscending(4)) + printSizeInfo(a3) + printArray(a3) /*<<>>*/ fun test10() -{ - var a1 = Array(MyObj)(createRangeAscending(4)); - var a2 = Array(MyObj)(createRangeAscending(6)); - - a2 = a1; - printSizeInfo(a2); - printArray(a2); - printSizeInfo(a1 = a2); - printArray(a1); -} + var a1 = Array(MyObj)(createRangeAscending(4)) + var a2 = Array(MyObj)(createRangeAscending(6)) + + a2 = a1 + printSizeInfo(a2) + printArray(a2) + printSizeInfo(a1 = a2) + printArray(a1) /*<<>>*/ fun test11() -{ - var a1 = Array(MyObj)(createRangeAscending(4)); - var a2 = Array(MyObj)(createRangeAscending(4)); - var a3 = Array(MyObj)(createRangeAscending(6)); + var a1 = Array(MyObj)(createRangeAscending(4)) + var a2 = Array(MyObj)(createRangeAscending(4)) + var a3 = Array(MyObj)(createRangeAscending(6)) - cout << a1 == a2 << endl; - cout << a1 == a3 << endl; -} + cout << a1 == a2 << endl + cout << a1 == a3 << endl /*<<>>*/ fun test12() -{ - var a = Array(MyObj)(createRangeAscending(1000)); - var i = 0; + var a = Array(MyObj)(createRangeAscending(1000)) + var i = 0 - printSizeInfo(a); - while i < a.size() ; i = i + 1; - { + printSizeInfo(a) + while i < a.size() ; i = i + 1 if ( a.at(i).x != i ) - cout << "test failed" << endl; - } + cout << "test failed" << endl - var aa = a; + var aa = a - i = 0; - printSizeInfo(aa); - while i < aa.size() ; i = i + 1; - { + i = 0 + printSizeInfo(aa) + while i < aa.size() ; i = i + 1 if ( aa.at(i).x != i ) - cout << "test failed" << endl; - } + cout << "test failed" << endl - var aaa = Array(MyObj)(1000); + var aaa = Array(MyObj)(1000) - aaa.assign(createRangeAscending(1000)); - i = 0; - printSizeInfo(aaa); - while i < aaa.size() ; i = i + 1; - { + aaa.assign(createRangeAscending(1000)) + i = 0 + printSizeInfo(aaa) + while i < aaa.size() ; i = i + 1 if ( aaa.at(i).x != i ) - cout << "test failed" << endl; - } -} + cout << "test failed" << endl /*<<>>*/ fun test13() -{ - var v = Array(MyObj)(createRangeAscending(8)); - var r = v.subrange(0, 0); - - while !r.isEmpty() ; r.popFront(); - cout << r.front().x << endl; - r = v.subrange(0, 1); - while !r.isEmpty() ; r.popFront(); - cout << r.front().x << endl; - r = v.subrange(2, 3); - while !r.isEmpty() ; r.popFront(); - cout << r.front().x << endl; - r = v.subrange(0, v.size()); - while !r.isEmpty() ; r.popFront(); - cout << r.front().x << endl; -} + var v = Array(MyObj)(createRangeAscending(8)) + var r = v.subrange(0, 0) + + while !r.isEmpty() ; r.popFront() + cout << r.front().x << endl + r = v.subrange(0, 1) + while !r.isEmpty() ; r.popFront() + cout << r.front().x << endl + r = v.subrange(2, 3) + while !r.isEmpty() ; r.popFront() + cout << r.front().x << endl + r = v.subrange(0, v.size()) + while !r.isEmpty() ; r.popFront() + cout << r.front().x << endl /*<<= b, "intentional error"); - assert(foo.data == 100, "non-printable vars work too"); - assert(fact(c) != 120, "calling functions"); -} + assert(true) + assert(false) + assert(printerTrue()) + assert(printerTrue(), "this needs to be true") + assert(printerFalse()) + assert(2 == 1+1) + assert(2 != 1+1, "intentional error") + var a = 12 + var b = 13 + var c = 5 + var foo: FooType = 10 + assert(a == b) + assert(a+1 < b) + assert(a >= b, "intentional error") + assert(foo.data == 100, "non-printable vars work too") + assert(fact(c) != 120, "calling functions") /*<<= b[=13] has failed: intentional error -AssertTest.spr(47): assertion failure: check foo.data == 100 has failed: non-printable vars work too -AssertTest.spr(48): assertion failure: check fact(c[=5]) != 120 has failed: calling functions +AssertTest.spr(30): assertion failure: check printerFalse() has failed +AssertTest.spr(32): assertion failure: check 2 != 1+1 has failed: intentional error +AssertTest.spr(37): assertion failure: check a[=12] == b[=13] has failed +AssertTest.spr(38): assertion failure: check a[=12]+1 < b[=13] has failed +AssertTest.spr(39): assertion failure: check a[=12] >= b[=13] has failed: intentional error +AssertTest.spr(40): assertion failure: check foo.data == 100 has failed: non-printable vars work too +AssertTest.spr(41): assertion failure: check fact(c[=5]) != 120 has failed: calling functions >>>*/ diff --git a/tests/StdLib/CheckTest.spr b/tests/StdLib/CheckTest.spr index 7e818845..77e51ef4 100644 --- a/tests/StdLib/CheckTest.spr +++ b/tests/StdLib/CheckTest.spr @@ -1,62 +1,58 @@ //!! -import check; -import std.string(String); -import std.tuple; -import std.ranges; +import check +import std.string(String) +import std.tuple +import std.ranges -using enableChecks = true; +using enableChecks = true -fun check_associativity(x: Int) = x+2 == 2+x; +fun check_associativity(x: Int) = x+2 == 2+x -fun check_IntIdentity(x: Int) = (x+0) == x && (0+x) == x; +fun check_IntIdentity(x: Int) = (x+0) == x && (0+x) == x -fun classifier(x: Int): String { - if ( x < 10 ) return "<10"; - if ( x < 20 ) return "<20"; - if ( x < 30 ) return "<30"; - return ">=30"; -} +fun classifier(x: Int): String + if ( x < 10 ) return "<10" + if ( x < 20 ) return "<20" + if ( x < 30 ) return "<30" + return ">=30" -fun isTrivial(x: Int) = x<5; +fun isTrivial(x: Int) = x<5 -fun sprMain { +fun sprMain if ( programArgs.size() < 2 ) - return; - var n = programArgs(1) asInt; + return + var n = programArgs(1) asInt if n == 1; testOk else if n == 2; testFailure -} -fun testOk { - forAll(Int) check (fun x = true) ~ "that we have something running"; +fun testOk + forAll(Int) check (fun x = true) ~ "that we have something running" - forAll(Int) check \check_associativity ~ "Int associativity"; + forAll(Int) check \check_associativity ~ "Int associativity" - forAll(Int) check (fun x = (x+0) == x && (0+x) == x) ~ "that Int has 0 as identity"; + forAll(Int) check (fun x = (x+0) == x && (0+x) == x) ~ "that Int has 0 as identity" - forAll(Int) forWhich (fun x = x>0) take 10 check \check_IntIdentity ~ "that positive Ints have 0 as identity"; + forAll(Int) forWhich (fun x = x>0) take 10 check \check_IntIdentity ~ "that positive Ints have 0 as identity" - forAll(1..100) withClassifier \classifier withTrivials \isTrivial check (fun x = true) ~ "with classifier"; + forAll(1..100) withClassifier \classifier withTrivials \isTrivial check (fun x = true) ~ "with classifier" - forAll(elements(10..20)) check (fun x = 10<=x && x<20) ~ "that elements works"; + forAll(elements(10..20)) check (fun x = 10<=x && x<20) ~ "that elements works" - var g1 = elements(10..15); - var g2 = elements(20..25); - var g3 = elements(30..35); - var g4 = oneOf(values(g1, g2, g3)); - forAll(g4) check (fun x = 10<=x && x<50 && x % 10 < 5) ~ "that oneOf works"; + var g1 = elements(10..15) + var g2 = elements(20..25) + var g3 = elements(30..35) + var g4 = oneOf(values(g1, g2, g3)) + forAll(g4) check (fun x = 10<=x && x<50 && x % 10 < 5) ~ "that oneOf works" - var g5 = frequency(values(1 ~ g1, 6 ~ g2, 2 ~ g3)); - forAll(g5) check (fun x = 10<=x && x<50 && x % 10 < 5) ~ "that frequency works"; -} + var g5 = frequency(values(1 ~ g1, 6 ~ g2, 2 ~ g3)) + forAll(g5) check (fun x = 10<=x && x<50 && x % 10 < 5) ~ "that frequency works" //<<>>*/ fun test2() -{ - var r = ContiguousMemoryRange(MyObj)(createRangeAscending(5)); - - cout << r.isEmpty() << endl; - cout << r.size() << endl; - cout << r.front().x << endl; - cout << r.back().x << endl; -} + var r = ContiguousMemoryRange(MyObj)(createRangeAscending(5)) + + cout << r.isEmpty() << endl + cout << r.size() << endl + cout << r.front().x << endl + cout << r.back().x << endl /*<<>>*/ fun test3() -{ - var r = ContiguousMemoryRange(MyObj)(createRangeAscending(5)); + var r = ContiguousMemoryRange(MyObj)(createRangeAscending(5)) - while !r.isEmpty() ; r.popFront(); - cout << r.front().x << endl; -} + while !r.isEmpty() ; r.popFront() + cout << r.front().x << endl /*<<>>*/ fun test4() -{ - var r = ContiguousMemoryRange(MyObj)(createRangeAscending(5)); - - cout << r.front().x << endl; - cout << r.back().x << endl; - cout << r(0).x << endl; - cout << r(1).x << endl; - cout << r(2).x << endl; - cout << r(3).x << endl; - cout << r(4).x << endl; -} + var r = ContiguousMemoryRange(MyObj)(createRangeAscending(5)) + + cout << r.front().x << endl + cout << r.back().x << endl + cout << r(0).x << endl + cout << r(1).x << endl + cout << r(2).x << endl + cout << r(3).x << endl + cout << r(4).x << endl /*<<>>*/ fun test5() -{ - var size = 1000; - var r = ContiguousMemoryRange(MyObj)(createRangeAscending(size)); - var i = 0; + var size = 1000 + var r = ContiguousMemoryRange(MyObj)(createRangeAscending(size)) + var i = 0 - while i < size ; i = i + 1; - { + while i < size ; i = i + 1 if ( r(i).x != i ) - cout << "Test failed" << endl; - } -} + cout << "Test failed" << endl /*<<>>*/ fun test6() -{ - var i = 0; - var r = ContiguousMemoryRange(MyObj)(createRangeAscending(20)); + var i = 0 + var r = ContiguousMemoryRange(MyObj)(createRangeAscending(20)) - r.popFront(); - r.popBack(); + r.popFront() + r.popBack() if ( r.size() != 18 ) - cout << "Test failed" << endl; - i = 0; - while i < r.size() ; i = i + 1; - { + cout << "Test failed" << endl + i = 0 + while i < r.size() ; i = i + 1 if ( r(i).x != i + 1 ) - cout << "Test failed" << endl; - } - r.popFront(); - r.popBack(); + cout << "Test failed" << endl + r.popFront() + r.popBack() if ( r.size() != 16 ) - cout << "Test failed" << endl; - i = 0; - while i < r.size() ; i = i + 1; - { + cout << "Test failed" << endl + i = 0 + while i < r.size() ; i = i + 1 if ( r(i).x != i + 2 ) - cout << "Test failed" << endl; - } - r.popFront(2); + cout << "Test failed" << endl + r.popFront(2) if ( r.size() != 14 ) - cout << "Test failed" << endl; - i = 0; - while i < r.size() ; i = i + 1; - { + cout << "Test failed" << endl + i = 0 + while i < r.size() ; i = i + 1 if ( r(i).x != i + 4 ) - cout << "Test failed" << endl; - } - r.popBack(2); + cout << "Test failed" << endl + r.popBack(2) if ( r.size() != 12 ) - cout << "Test failed" << endl; - i = 0; - while i < r.size() ; i = i + 1; - { + cout << "Test failed" << endl + i = 0 + while i < r.size() ; i = i + 1 if ( r(i).x != i + 4 ) - cout << "Test failed" << endl; - } -} + cout << "Test failed" << endl /*<<>>*/ fun test7() -{ - var i = 0; - var r = ContiguousMemoryRange(MyObj)(createRangeAscending(20)); + var i = 0 + var r = ContiguousMemoryRange(MyObj)(createRangeAscending(20)) - while !r.isEmpty() ; r.popFront(3); - cout << r.front().x << endl; -} + while !r.isEmpty() ; r.popFront(3) + cout << r.front().x << endl /*<<>>*/ fun test8() -{ - var i = 0; - var r = ContiguousMemoryRange(MyObj)(createRangeAscending(10)); - - i = 0; - while i < r.size() ; i = i + 1; - r(r.size() - i - 1).x = i; - i = 0; - while i < r.size() ; i = i + 1; - { + var i = 0 + var r = ContiguousMemoryRange(MyObj)(createRangeAscending(10)) + + i = 0 + while i < r.size() ; i = i + 1 + r(r.size() - i - 1).x = i + i = 0 + while i < r.size() ; i = i + 1 if ( r(i).x != r.size() - i - 1 ) - cout << "Test failed" << endl; - } -} + cout << "Test failed" << endl /*<<>>*/ fun test9() -{ - var r1 = ContiguousMemoryRange(MyObj)(createRangeAscending(10)); - var r2 = ContiguousMemoryRange(MyObj)(createRangeAscending(20)); - var r3 = r2; - - cout << r1 == r2 << endl; - cout << r1 == r1 << endl; - cout << r2 == r3 << endl; - r3.popBack(); - cout << r2 == r3 << endl; -} + var r1 = ContiguousMemoryRange(MyObj)(createRangeAscending(10)) + var r2 = ContiguousMemoryRange(MyObj)(createRangeAscending(20)) + var r3 = r2 + + cout << r1 == r2 << endl + cout << r1 == r1 << endl + cout << r2 == r3 << endl + r3.popBack() + cout << r2 == r3 << endl /*<<>>*/ fun test2() -{ - var hs = Map(Int, Int)(60); + var hs = Map(Int, Int)(60) - cout << hs.isEmpty() << endl; - cout << hs.size() << endl; - cout << hs.bucketCount() << endl; - cout << hs.contains(10) << endl; -} + cout << hs.isEmpty() << endl + cout << hs.size() << endl + cout << hs.bucketCount() << endl + cout << hs.contains(10) << endl /*<<>>*/ fun test3() -{ - var hs = Map(Int, Int)(makeList().all()); - - cout << hs.isEmpty() << endl; - cout << hs.size() << endl; - cout << hs.bucketCount() << endl; - cout << hs.contains(53) << endl; - cout << hs.contains(106) << endl; - cout << hs.contains(4) << endl; - cout << hs.contains(9999) << endl; -} + var hs = Map(Int, Int)(makeList().all()) + + cout << hs.isEmpty() << endl + cout << hs.size() << endl + cout << hs.bucketCount() << endl + cout << hs.contains(53) << endl + cout << hs.contains(106) << endl + cout << hs.contains(4) << endl + cout << hs.contains(9999) << endl /*<<>>*/ fun test4() -{ - var hs = Map(Int, Int)(makeList().all()); - var hs2 = Map(Int, Int)(hs); - - cout << hs2.isEmpty() << endl; - cout << hs2.size() << endl; - cout << hs2.bucketCount() << endl; - cout << hs2.contains(53) << endl; - cout << hs2.contains(106) << endl; - cout << hs2.contains(4) << endl; - cout << hs2.contains(9999) << endl; -} + var hs = Map(Int, Int)(makeList().all()) + var hs2 = Map(Int, Int)(hs) + + cout << hs2.isEmpty() << endl + cout << hs2.size() << endl + cout << hs2.bucketCount() << endl + cout << hs2.contains(53) << endl + cout << hs2.contains(106) << endl + cout << hs2.contains(4) << endl + cout << hs2.contains(9999) << endl /*<<>>*/ fun test5() -{ - var hs = Map(Int, Int)(makeList().all()); - var hs2 = Map(Int, Int)(60); - - hs.swap(hs2); - cout << hs2.isEmpty() << endl; - cout << hs2.size() << endl; - cout << hs2.bucketCount() << endl; - cout << hs2.contains(53) << endl; - cout << hs2.contains(106) << endl; - cout << hs2.contains(4) << endl; - cout << hs2.contains(9999) << endl; - cout << hs.isEmpty() << endl; - cout << hs.size() << endl; - cout << hs.bucketCount() << endl; - cout << hs.contains(10) << endl; -} + var hs = Map(Int, Int)(makeList().all()) + var hs2 = Map(Int, Int)(60) + + hs.swap(hs2) + cout << hs2.isEmpty() << endl + cout << hs2.size() << endl + cout << hs2.bucketCount() << endl + cout << hs2.contains(53) << endl + cout << hs2.contains(106) << endl + cout << hs2.contains(4) << endl + cout << hs2.contains(9999) << endl + cout << hs.isEmpty() << endl + cout << hs.size() << endl + cout << hs.bucketCount() << endl + cout << hs.contains(10) << endl /*<<>>*/ fun test6() -{ - var hs = Map(Int, Int)(makeList().all()); - - hs.reserve(1000); - cout << hs.isEmpty() << endl; - cout << hs.size() << endl; - cout << hs.bucketCount() << endl; - cout << hs.contains(53) << endl; - cout << hs.contains(106) << endl; - cout << hs.contains(4) << endl; - cout << hs.contains(9999) << endl; -} + var hs = Map(Int, Int)(makeList().all()) + + hs.reserve(1000) + cout << hs.isEmpty() << endl + cout << hs.size() << endl + cout << hs.bucketCount() << endl + cout << hs.contains(53) << endl + cout << hs.contains(106) << endl + cout << hs.contains(4) << endl + cout << hs.contains(9999) << endl /*<<>>*/ fun test7() -{ - var hs = Map(Int, Int)(makeList().all()); + var hs = Map(Int, Int)(makeList().all()) - printRange(hs.all()); -} + printRange(hs.all()) /*<<>>*/ @@ -277,33 +253,27 @@ fun test8() >>>*/ fun test9() -{ - var hs = Map(Int, Int)(); - var i = 0; + var hs = Map(Int, Int)() + var i = 0 while i < 5 - { - hs.insert(i, i * i); - i = i + 1; - } - hs.insert(makeList().all()); - printRange(hs.all()); -} + hs.insert(i, i * i) + i = i + 1 + hs.insert(makeList().all()) + printRange(hs.all()) /*<<>>*/ fun test10() -{ - var hs = Map(Int, Int)(makeList().all()); - - hs.remove(5); - cout << hs.contains(5) << endl; - cout << hs.size() << endl; - hs.remove(20); - cout << hs.contains(5) << endl; - cout << hs.size() << endl; -} + var hs = Map(Int, Int)(makeList().all()) + + hs.remove(5) + cout << hs.contains(5) << endl + cout << hs.size() << endl + hs.remove(20) + cout << hs.contains(5) << endl + cout << hs.size() << endl /*<<>>*/ fun test11() -{ - var hs = Map(Int, Int)(makeList().all()); - - hs.remove(hs.equalRange(8)); - printRange(hs.all()); - cout << hs.size() << endl; - hs.remove(hs.equalRange(106)); - printRange(hs.all()); - cout << hs.size() << endl; - hs.remove(hs.equalRange(101)); - printRange(hs.all()); - cout << hs.size() << endl; - hs.remove(hs.equalRange(1000)); - printRange(hs.all()); - cout << hs.size() << endl; - hs.remove(hs.all()); - printRange(hs.all()); - cout << hs.size() << endl; - hs = Map(Int, Int)(makeList().all()); - - var r = hs.all(); - - r.popFront(); - hs.remove(r); - printRange(hs.all()); - cout << hs.size() << endl; -} + var hs = Map(Int, Int)(makeList().all()) + + hs.remove(hs.equalRange(8)) + printRange(hs.all()) + cout << hs.size() << endl + hs.remove(hs.equalRange(106)) + printRange(hs.all()) + cout << hs.size() << endl + hs.remove(hs.equalRange(101)) + printRange(hs.all()) + cout << hs.size() << endl + hs.remove(hs.equalRange(1000)) + printRange(hs.all()) + cout << hs.size() << endl + hs.remove(hs.all()) + printRange(hs.all()) + cout << hs.size() << endl + hs = Map(Int, Int)(makeList().all()) + + var r = hs.all() + + r.popFront() + hs.remove(r) + printRange(hs.all()) + cout << hs.size() << endl /*<<>>*/ fun test12() -{ - var hs = Map(Int, Int)(makeList().all()); + var hs = Map(Int, Int)(makeList().all()) - cout << hs.contains(106) << endl; - cout << hs.contains(53) << endl; - cout << hs.contains(52) << endl; - cout << hs.contains(12) << endl; -} + cout << hs.contains(106) << endl + cout << hs.contains(53) << endl + cout << hs.contains(52) << endl + cout << hs.contains(12) << endl /*<<>>*/ fun test13() -{ - var hs = Map(Int, Int)(makeList().all()); + var hs = Map(Int, Int)(makeList().all()) - hs.insert(5, 10); - cout << hs.count(5) << endl; - cout << hs.count(1) << endl; - cout << hs.count(53) << endl; -} + hs.insert(5, 10) + cout << hs.count(5) << endl + cout << hs.count(1) << endl + cout << hs.count(53) << endl /*<<>>*/ fun test14() -{ - var hs = Map(Int, Int)(makeList().all()); - - printRange(hs.equalRange(5)); - hs.insert(5, 432); - printRange(hs.equalRange(5)); - hs.insert(58, 32); - printRange(hs.equalRange(5)); - printRange(hs.equalRange(106)); - printRange(hs.equalRange(111)); - printRange(hs.equalRange(100)); -} + var hs = Map(Int, Int)(makeList().all()) + + printRange(hs.equalRange(5)) + hs.insert(5, 432) + printRange(hs.equalRange(5)) + hs.insert(58, 32) + printRange(hs.equalRange(5)) + printRange(hs.equalRange(106)) + printRange(hs.equalRange(111)) + printRange(hs.equalRange(100)) /*<<>>*/ fun test15() -{ - var hs = Map(Int, Int)(makeList().all()); + var hs = Map(Int, Int)(makeList().all()) - printRange(hs.find(5)); - printRange(hs.find(10)); - printRange(hs.find(53)); -} + printRange(hs.find(5)) + printRange(hs.find(10)) + printRange(hs.find(53)) /*<<>>*/ fun test16() -{ - var hs = Map(Int, Int)(makeList().all()); + var hs = Map(Int, Int)(makeList().all()) - hs.clear(); - cout << hs.isEmpty() << endl; - printRange(hs.all()); - cout << hs.contains(8) << endl; -} + hs.clear() + cout << hs.isEmpty() << endl + printRange(hs.all()) + cout << hs.contains(8) << endl /*<<>>*/ fun test17() -{ - var hs1 = Map(Int, Int)(makeList().all()); - var hs2: Map(Int, Int); + var hs1 = Map(Int, Int)(makeList().all()) + var hs2: Map(Int, Int) - hs2 = hs1; - printRange(hs2.all()); - hs1 = hs1; - printRange(hs1.all()); -} + hs2 = hs1 + printRange(hs2.all()) + hs1 = hs1 + printRange(hs1.all()) /*<<>>*/ fun test18() -{ - var hs = Map(Int, Int)(makeList().all()); - - cout << hs.at(145) << endl; - cout << hs.at(101) << endl; - cout << hs.at(4) << endl; - hs.at(1000); - cout << hs.contains(1000) << endl; - hs.at(4) = 999; - cout << hs.at(4) << endl; - hs.at(1200) = 555; - cout << hs.at(1200) << endl; -} + var hs = Map(Int, Int)(makeList().all()) + + cout << hs.at(145) << endl + cout << hs.at(101) << endl + cout << hs.at(4) << endl + hs.at(1000) + cout << hs.contains(1000) << endl + hs.at(4) = 999 + cout << hs.at(4) << endl + hs.at(1200) = 555 + cout << hs.at(1200) << endl /*<<>>*/ fun test19() -{ - var hs = Map(Int, Int)(makeList().all()); - var keys = hs.keys(); - var values = hs.values(); + var hs = Map(Int, Int)(makeList().all()) + var keys = hs.keys() + var values = hs.values() while !keys.isEmpty() - { - cout << keys.front(); - cout << ' '; - keys.popFront(); - } - cout << "." << endl; + cout << keys.front() + cout << ' ' + keys.popFront() + cout << "." << endl while !values.isEmpty() - { - cout << values.front(); - cout << ' '; - values.popFront(); - } - cout << "." << endl; -} + cout << values.front() + cout << ' ' + values.popFront() + cout << "." << endl /*<<>>*/ fun test20() -{ - var hs: Map(Int, Int); - var i = 0; + var hs: Map(Int, Int) + var i = 0 while i < 1000 - { - hs.insert(i, i * i); - i = i + 1; - } + hs.insert(i, i * i) + i = i + 1 while i < 1000 - { if ( !hs.contains(i) ) - cout << "Test failed" << endl; - i = i + 1; - } -} + cout << "Test failed" << endl + i = i + 1 /*<<>>*/ fun test21() -{ - var hs: Map(IntWrapper, Int); + var hs: Map(IntWrapper, Int) for i = 1..5 - { - hs.insert(i, i*10); - } -} + hs.insert(i, i*10) /*<<>>*/ fun test22() -{ - var hs: Map(IntWithNoHash, Int, MyTypeTraits); + var hs: Map(IntWithNoHash, Int, MyTypeTraits) for i = 1..5 - { - hs.insert(i, i*10); - } -} + hs.insert(i, i*10) /*<<>>*/ fun test2() -{ - var hs: Int Set = 60; - - cout << hs.isEmpty() << endl; - cout << hs.size() << endl; - cout << hs.bucketCount() << endl; - cout << hs.contains(10) << endl; -} + var hs: Int Set = 60 + + cout << hs.isEmpty() << endl + cout << hs.size() << endl + cout << hs.bucketCount() << endl + cout << hs.contains(10) << endl /*<<>>*/ fun test3() -{ - var hs: Int Set = makeList().all(); - - cout << hs.isEmpty() << endl; - cout << hs.size() << endl; - cout << hs.bucketCount() << endl; - cout << hs.contains(53) << endl; - cout << hs.contains(106) << endl; - cout << hs.contains(4) << endl; - cout << hs.contains(9999) << endl; -} + var hs: Int Set = makeList().all() + + cout << hs.isEmpty() << endl + cout << hs.size() << endl + cout << hs.bucketCount() << endl + cout << hs.contains(53) << endl + cout << hs.contains(106) << endl + cout << hs.contains(4) << endl + cout << hs.contains(9999) << endl /*<<>>*/ fun test4() -{ - var hs = Set(Int)(makeList().all()); - var hs2 = Set(Int)(hs); - - cout << hs2.isEmpty() << endl; - cout << hs2.size() << endl; - cout << hs2.bucketCount() << endl; - cout << hs2.contains(53) << endl; - cout << hs2.contains(106) << endl; - cout << hs2.contains(4) << endl; - cout << hs2.contains(9999) << endl; -} + var hs = Set(Int)(makeList().all()) + var hs2 = Set(Int)(hs) + + cout << hs2.isEmpty() << endl + cout << hs2.size() << endl + cout << hs2.bucketCount() << endl + cout << hs2.contains(53) << endl + cout << hs2.contains(106) << endl + cout << hs2.contains(4) << endl + cout << hs2.contains(9999) << endl /*<<>>*/ fun test5() -{ - var hs = Set(Int)(makeList().all()); - var hs2 = Set(Int)(60); - - hs.swap(hs2); - cout << hs2.isEmpty() << endl; - cout << hs2.size() << endl; - cout << hs2.bucketCount() << endl; - cout << hs2.contains(53) << endl; - cout << hs2.contains(106) << endl; - cout << hs2.contains(4) << endl; - cout << hs2.contains(9999) << endl; - cout << hs.isEmpty() << endl; - cout << hs.size() << endl; - cout << hs.bucketCount() << endl; - cout << hs.contains(10) << endl; -} + var hs = Set(Int)(makeList().all()) + var hs2 = Set(Int)(60) + + hs.swap(hs2) + cout << hs2.isEmpty() << endl + cout << hs2.size() << endl + cout << hs2.bucketCount() << endl + cout << hs2.contains(53) << endl + cout << hs2.contains(106) << endl + cout << hs2.contains(4) << endl + cout << hs2.contains(9999) << endl + cout << hs.isEmpty() << endl + cout << hs.size() << endl + cout << hs.bucketCount() << endl + cout << hs.contains(10) << endl /*<<>>*/ fun test6() -{ - var hs = Set(Int)(makeList().all()); - - hs.reserve(1000); - cout << hs.isEmpty() << endl; - cout << hs.size() << endl; - cout << hs.bucketCount() << endl; - cout << hs.contains(53) << endl; - cout << hs.contains(106) << endl; - cout << hs.contains(4) << endl; - cout << hs.contains(9999) << endl; -} + var hs = Set(Int)(makeList().all()) + + hs.reserve(1000) + cout << hs.isEmpty() << endl + cout << hs.size() << endl + cout << hs.bucketCount() << endl + cout << hs.contains(53) << endl + cout << hs.contains(106) << endl + cout << hs.contains(4) << endl + cout << hs.contains(9999) << endl /*<<>>*/ fun test7() -{ - var hs = Set(Int)(makeList().all()); + var hs = Set(Int)(makeList().all()) - printRange(hs.all()); -} + printRange(hs.all()) /*<<>>*/ fun test8() -{ - var hs = Set(Int)(0 .. 10); + var hs = Set(Int)(0 .. 10) - hs.insert(5); - cout << hs.contains(5) << endl; -} + hs.insert(5) + cout << hs.contains(5) << endl /*<<>>*/ fun test9() -{ - var hs = Set(Int)(0 .. 10); + var hs = Set(Int)(0 .. 10) - hs.insert(5 .. 15); - printRange(hs.all()); -} + hs.insert(5 .. 15) + printRange(hs.all()) /*<<>>*/ fun test10() -{ - var hs = Set(Int)(0 .. 10); - - hs.remove(5); - printRange(hs.all()); - hs.remove(20); - printRange(hs.all()); -} + var hs = Set(Int)(0 .. 10) + + hs.remove(5) + printRange(hs.all()) + hs.remove(20) + printRange(hs.all()) /*<<>>*/ fun test11() -{ - var hs = Set(Int)(makeList().all()); - - hs.remove(hs.equalRange(8)); - printRange(hs.all()); - cout << hs.size() << endl; - hs.remove(hs.equalRange(106)); - printRange(hs.all()); - cout << hs.size() << endl; - hs.remove(hs.equalRange(101)); - printRange(hs.all()); - cout << hs.size() << endl; - hs.remove(hs.equalRange(1000)); - printRange(hs.all()); - cout << hs.size() << endl; - hs.remove(hs.all()); - printRange(hs.all()); - cout << hs.size() << endl; - hs = Set(Int)(makeList().all()); - - var r = hs.all(); - - r.popFront(); - hs.remove(r); - printRange(hs.all()); - cout << hs.size() << endl; -} + var hs = Set(Int)(makeList().all()) + + hs.remove(hs.equalRange(8)) + printRange(hs.all()) + cout << hs.size() << endl + hs.remove(hs.equalRange(106)) + printRange(hs.all()) + cout << hs.size() << endl + hs.remove(hs.equalRange(101)) + printRange(hs.all()) + cout << hs.size() << endl + hs.remove(hs.equalRange(1000)) + printRange(hs.all()) + cout << hs.size() << endl + hs.remove(hs.all()) + printRange(hs.all()) + cout << hs.size() << endl + hs = Set(Int)(makeList().all()) + + var r = hs.all() + + r.popFront() + hs.remove(r) + printRange(hs.all()) + cout << hs.size() << endl /*<<>>*/ fun test12() -{ - var hs = Set(Int)(0 .. 10); + var hs = Set(Int)(0 .. 10) - cout << hs.contains(7) << endl; - cout << hs.contains(53) << endl; - cout << hs.contains(12) << endl; -} + cout << hs.contains(7) << endl + cout << hs.contains(53) << endl + cout << hs.contains(12) << endl /*<<>>*/ fun test13() -{ - var hs = Set(Int)(0 .. 10); - - hs.insert(5); - cout << hs.count(5) << endl; - cout << hs.count(1) << endl; - cout << hs.count(53) << endl; -} + var hs = Set(Int)(0 .. 10) + + hs.insert(5) + cout << hs.count(5) << endl + cout << hs.count(1) << endl + cout << hs.count(53) << endl /*<<>>*/ fun test14() -{ - var hs: Set(Int); - - hs.insert(0 .. 10); - printRange(hs.equalRange(5)); - hs.insert(5); - printRange(hs.equalRange(5)); - hs.insert(58); - printRange(hs.equalRange(5)); - printRange(hs.equalRange(58)); - printRange(hs.equalRange(111)); - printRange(hs.equalRange(100)); -} + var hs: Set(Int) + + hs.insert(0 .. 10) + printRange(hs.equalRange(5)) + hs.insert(5) + printRange(hs.equalRange(5)) + hs.insert(58) + printRange(hs.equalRange(5)) + printRange(hs.equalRange(58)) + printRange(hs.equalRange(111)) + printRange(hs.equalRange(100)) /*<<>>*/ fun test15() -{ - var hs = Set(Int)(0 .. 10); + var hs = Set(Int)(0 .. 10) - printRange(hs.find(5)); - printRange(hs.find(10)); - printRange(hs.find(53)); -} + printRange(hs.find(5)) + printRange(hs.find(10)) + printRange(hs.find(53)) /*<<>>*/ fun test16() -{ - var hs = Set(Int)(0 .. 10); - - hs.clear(); - cout << hs.isEmpty() << endl; - printRange(hs.all()); - cout << hs.contains(4) << endl; -} + var hs = Set(Int)(0 .. 10) + + hs.clear() + cout << hs.isEmpty() << endl + printRange(hs.all()) + cout << hs.contains(4) << endl /*<<>>*/ fun test17() -{ - var hs1 = Set(Int)(0 .. 10); - var hs2: Set(Int); - - hs2 = hs1; - printRange(hs2.all()); - hs1 = hs1; - printRange(hs1.all()); -} + var hs1 = Set(Int)(0 .. 10) + var hs2: Set(Int) + + hs2 = hs1 + printRange(hs2.all()) + hs1 = hs1 + printRange(hs1.all()) /*<<>>*/ fun test18() -{ - var hs1 = Set(Int)(makeList().all()); - var hs2 = hs1; - var hs3: Set(Int); - var hs4 = Set(Int)(0 .. 10); - - cout << hs1 == hs2 << endl; - cout << hs1 != hs2 << endl; - cout << hs1 == hs3 << endl; - cout << hs1 != hs3 << endl; - cout << hs1 == hs4 << endl; - cout << hs1 != hs4 << endl; - cout << hs3 == hs3 << endl; - cout << hs3 != hs3 << endl; - hs4.clear(); - cout << hs3 == hs4 << endl; - cout << hs3 != hs4 << endl; - hs2.remove(53); - cout << hs1 == hs2 << endl; - cout << hs1 != hs2 << endl; -} + var hs1 = Set(Int)(makeList().all()) + var hs2 = hs1 + var hs3: Set(Int) + var hs4 = Set(Int)(0 .. 10) + + cout << hs1 == hs2 << endl + cout << hs1 != hs2 << endl + cout << hs1 == hs3 << endl + cout << hs1 != hs3 << endl + cout << hs1 == hs4 << endl + cout << hs1 != hs4 << endl + cout << hs3 == hs3 << endl + cout << hs3 != hs3 << endl + hs4.clear() + cout << hs3 == hs4 << endl + cout << hs3 != hs4 << endl + hs2.remove(53) + cout << hs1 == hs2 << endl + cout << hs1 != hs2 << endl /*<<>>*/ fun test19() -{ - var hs = Set(Int)(0 .. 1000); + var hs = Set(Int)(0 .. 1000) for i = numericRange(0, 1000) - { if ( !hs.contains(i) ) - cout << "Test failed" << endl; - } -} + cout << "Test failed" << endl /*<<>>*/ diff --git a/tests/StdLib/ListTest.spr b/tests/StdLib/ListTest.spr index db30726d..faedea50 100644 --- a/tests/StdLib/ListTest.spr +++ b/tests/StdLib/ListTest.spr @@ -1,13 +1,12 @@ //!! -import std.list; -import std.contiguousMemoryRange; -import std.rawPtr; +import std.list +import std.contiguousMemoryRange +import std.rawPtr fun sprMain -{ if ( programArgs.size() < 2 ) - return; - var n = programArgs(1) asInt; + return + var n = programArgs(1) asInt if n == 1 ; test1 else if n == 2 ; test2 @@ -35,74 +34,61 @@ fun sprMain else if n == 24 ; test24 else if n == 25 ; test25 else if n == 26 ; test26 -} [initCtor] datatype MyObj - x: Int; + x: Int fun <(this, other: @MyObj): Bool { return x < other.x; } fun >>(this: MyObj, os: @OutStream) { os << x; } datatype Greater - ; + fun ()(this: Greater, x: MyObj, y: MyObj): Bool { return x.x > y.x; } datatype Even - ; + fun ()(this: Even, x: MyObj): Bool { return x.x % 2 == 0; } fun createRangeAscending(size: SizeType): ContiguousMemoryRange(MyObj) -{ - var ptr = allocRawPtr(MyObj, size); - var ptrEnd = ptr.advance(DiffType(size)); - var i = 0; + var ptr = allocRawPtr(MyObj, size) + var ptrEnd = ptr.advance(DiffType(size)) + var i = 0 - while i < size ; i = i + 1; - { - var o: @AnyType = ptr.advance(i).value(); + while i < size ; i = i + 1 + var o: @AnyType = ptr.advance(i).value() - o.x = i; - } + o.x = i - return ContiguousMemoryRange(MyObj)(ptr, ptrEnd); -} + return ContiguousMemoryRange(MyObj)(ptr, ptrEnd) fun printList(li: @List(MyObj)) -{ - var i = 0; - var r = li.all(); + var i = 0 + var r = li.all() while !r.isEmpty() - { - cout << r.front().x; + cout << r.front().x if ( i < li.size() - 1 ) - cout << ' '; + cout << ' ' else - cout << endl; - i = i + 1; - r.popFront(); - } -} + cout << endl + i = i + 1 + r.popFront() fun printSizeInfo(li: @List(MyObj)) -{ - cout << li.isEmpty() << endl; - cout << li.size() << endl; -} + cout << li.isEmpty() << endl + cout << li.size() << endl fun test1() -{ - var li: List(MyObj); - - printSizeInfo(li); - li.pushBack(MyObj(42)); - printSizeInfo(li); - printList(li); - li.popBack(); - printSizeInfo(li); -} + var li: List(MyObj) + + printSizeInfo(li) + li.pushBack(MyObj(42)) + printSizeInfo(li) + printList(li) + li.popBack() + printSizeInfo(li) /*<<>>*/ fun test2() -{ - var li = List(MyObj)(createRangeAscending(4)); - - printSizeInfo(li); - printList(li); - li.popBack(); - printSizeInfo(li); - printList(li); - li.pushBack(MyObj(42)); - printSizeInfo(li); - printList(li); -} + var li = List(MyObj)(createRangeAscending(4)) + + printSizeInfo(li) + printList(li) + li.popBack() + printSizeInfo(li) + printList(li) + li.pushBack(MyObj(42)) + printSizeInfo(li) + printList(li) /*<<>>*/ fun test3() -{ - var li1: List(MyObj); - var li2 = List(MyObj)(createRangeAscending(4)); - var li3 = List(MyObj)(li1); - var li4 = List(MyObj)(li2); - - printSizeInfo(li3); - printSizeInfo(li4); - printList(li4); -} + var li1: List(MyObj) + var li2 = List(MyObj)(createRangeAscending(4)) + var li3 = List(MyObj)(li1) + var li4 = List(MyObj)(li2) + + printSizeInfo(li3) + printSizeInfo(li4) + printList(li4) /*<<>>*/ fun test5() -{ - var li1: List(MyObj); - var li2 = List(MyObj)(createRangeAscending(8)); - - li1.assign(createRangeAscending(5)); - printSizeInfo(li1); - printList(li1); - li2.assign(createRangeAscending(4)); - printSizeInfo(li2); - printList(li2); -} + var li1: List(MyObj) + var li2 = List(MyObj)(createRangeAscending(8)) + + li1.assign(createRangeAscending(5)) + printSizeInfo(li1) + printList(li1) + li2.assign(createRangeAscending(4)) + printSizeInfo(li2) + printList(li2) /*<<>>*/ fun test6() -{ - var li1 = List(MyObj)(createRangeAscending(8)); - var li2 = List(MyObj)(createRangeAscending(1)); - - cout << li1.front().x << endl; - li1.front().x = 42; - cout << li1.front().x << endl; - cout << li1.back().x << endl; - li1.back().x = 84; - cout << li1.back().x << endl; - cout << li2.front().x << endl; - li2.front().x = 41; - cout << li2.front().x << endl; - cout << li2.back().x << endl; - li2.back().x = 83; - cout << li2.back().x << endl; -} + var li1 = List(MyObj)(createRangeAscending(8)) + var li2 = List(MyObj)(createRangeAscending(1)) + + cout << li1.front().x << endl + li1.front().x = 42 + cout << li1.front().x << endl + cout << li1.back().x << endl + li1.back().x = 84 + cout << li1.back().x << endl + cout << li2.front().x << endl + li2.front().x = 41 + cout << li2.front().x << endl + cout << li2.back().x << endl + li2.back().x = 83 + cout << li2.back().x << endl /*<<>>*/ fun test7() -{ - var li: List(MyObj); + var li: List(MyObj) - li.pushBack(MyObj(3)); - li.pushBack(MyObj(2)); - li.pushBack(MyObj(1)); - li.pushBack(MyObj(0)); + li.pushBack(MyObj(3)) + li.pushBack(MyObj(2)) + li.pushBack(MyObj(1)) + li.pushBack(MyObj(0)) - var r = li.all(); + var r = li.all() - while !r.isEmpty() ; r.popFront(); - cout << r.front().x << endl; + while !r.isEmpty() ; r.popFront() + cout << r.front().x << endl - r = li.all(); - while !r.isEmpty() ; r.popFront(); - r.front().x = r.front().x + 1; - printSizeInfo(li); - printList(li); -} + r = li.all() + while !r.isEmpty() ; r.popFront() + r.front().x = r.front().x + 1 + printSizeInfo(li) + printList(li) /*<<>>*/ fun test8() -{ - var li: List(MyObj); - var i = 0; - - while i < 4 ; i = i + 1; - li.pushBack(MyObj(i)); - printSizeInfo(li); - printList(li); - li.popBack(); - li.popBack(); - printSizeInfo(li); - printList(li); - li.popBack(); - li.popBack(); - printSizeInfo(li); - li.pushBack(MyObj(42)); - li.pushBack(MyObj(43)); - printSizeInfo(li); - printList(li); - li.popBack(); - li.popBack(); - i = 0; - while i < 20 ; i = i + 1; - li.pushBack(MyObj(i)); - printSizeInfo(li); - printList(li); -} + var li: List(MyObj) + var i = 0 + + while i < 4 ; i = i + 1 + li.pushBack(MyObj(i)) + printSizeInfo(li) + printList(li) + li.popBack() + li.popBack() + printSizeInfo(li) + printList(li) + li.popBack() + li.popBack() + printSizeInfo(li) + li.pushBack(MyObj(42)) + li.pushBack(MyObj(43)) + printSizeInfo(li) + printList(li) + li.popBack() + li.popBack() + i = 0 + while i < 20 ; i = i + 1 + li.pushBack(MyObj(i)) + printSizeInfo(li) + printList(li) /*<<>>*/ fun test9() -{ - var li = List(MyObj)(createRangeAscending(4)); - - li.resize(4); - printSizeInfo(li); - printList(li); - li.resize(2); - printSizeInfo(li); - printList(li); - li.resize(6); - printSizeInfo(li); - printList(li); - - var lili: List(MyObj); - - lili.resize(6); - printSizeInfo(lili); - printList(lili); -} + var li = List(MyObj)(createRangeAscending(4)) + + li.resize(4) + printSizeInfo(li) + printList(li) + li.resize(2) + printSizeInfo(li) + printList(li) + li.resize(6) + printSizeInfo(li) + printList(li) + + var lili: List(MyObj) + + lili.resize(6) + printSizeInfo(lili) + printList(lili) /*<<>>*/ fun test11() -{ - var li1: List(MyObj) = createRangeAscending(4); - var li2: List(MyObj) = createRangeAscending(6); - var li3: List(MyObj); - - li2 = li1; - printSizeInfo(li2); - printList(li2); - li2 = li3; - li1 = li2; - printSizeInfo(li1); -} + var li1: List(MyObj) = createRangeAscending(4) + var li2: List(MyObj) = createRangeAscending(6) + var li3: List(MyObj) + + li2 = li1 + printSizeInfo(li2) + printList(li2) + li2 = li3 + li1 = li2 + printSizeInfo(li1) /*<<>>*/ fun test12() -{ - var li: List(MyObj) = createRangeAscending(4); - var r = li.all(); - - li.insertBefore(MyObj(42), li.all()); - printSizeInfo(li); - printList(li); - li.insertAfter(MyObj(43), li.all()); - printSizeInfo(li); - printList(li); - r = li.all(); - r.popFront(); - r.popFront(); - li.insertBefore(MyObj(11), r); - printSizeInfo(li); - printList(li); - r = li.all(); - r.popBack(); - r.popBack(); - li.insertAfter(MyObj(22), r); - printSizeInfo(li); - printList(li); -} + var li: List(MyObj) = createRangeAscending(4) + var r = li.all() + + li.insertBefore(MyObj(42), li.all()) + printSizeInfo(li) + printList(li) + li.insertAfter(MyObj(43), li.all()) + printSizeInfo(li) + printList(li) + r = li.all() + r.popFront() + r.popFront() + li.insertBefore(MyObj(11), r) + printSizeInfo(li) + printList(li) + r = li.all() + r.popBack() + r.popBack() + li.insertAfter(MyObj(22), r) + printSizeInfo(li) + printList(li) /*<<>>*/ fun test14() -{ - var li: List(MyObj) = createRangeAscending(6); - var r = li.all(); - - li.remove(li.all()); - printSizeInfo(li); - li.assign(createRangeAscending(6)); - r = li.all(); - r.popBack(); - li.remove(r); - printSizeInfo(li); - printList(li); - li.assign(createRangeAscending(6)); - r = li.all(); - r.popFront(); - li.remove(r); - printSizeInfo(li); - printList(li); - li.assign(createRangeAscending(6)); - r = li.all(); - r.popFront(); - r.popFront(); - r.popBack(); - li.remove(r); - printSizeInfo(li); - printList(li); - li.assign(createRangeAscending(6)); - r = li.all(); - r.popFront(); - r.popFront(); - r.popBack(); - r.popBack(); - r.popBack(); - li.remove(r); - printSizeInfo(li); - printList(li); - li.assign(createRangeAscending(6)); - r = li.all(); - r.popFront(); - r.popFront(); - r.popFront(); - r.popBack(); - r.popBack(); - r.popBack(); - li.remove(r); - printSizeInfo(li); - printList(li); -} + var li: List(MyObj) = createRangeAscending(6) + var r = li.all() + + li.remove(li.all()) + printSizeInfo(li) + li.assign(createRangeAscending(6)) + r = li.all() + r.popBack() + li.remove(r) + printSizeInfo(li) + printList(li) + li.assign(createRangeAscending(6)) + r = li.all() + r.popFront() + li.remove(r) + printSizeInfo(li) + printList(li) + li.assign(createRangeAscending(6)) + r = li.all() + r.popFront() + r.popFront() + r.popBack() + li.remove(r) + printSizeInfo(li) + printList(li) + li.assign(createRangeAscending(6)) + r = li.all() + r.popFront() + r.popFront() + r.popBack() + r.popBack() + r.popBack() + li.remove(r) + printSizeInfo(li) + printList(li) + li.assign(createRangeAscending(6)) + r = li.all() + r.popFront() + r.popFront() + r.popFront() + r.popBack() + r.popBack() + r.popBack() + li.remove(r) + printSizeInfo(li) + printList(li) /*<<>>*/ fun test16() -{ - var li: List(MyObj); - - li.unique(); - printSizeInfo(li); - li.pushBack(MyObj(42)); - li.unique(); - printSizeInfo(li); - printList(li); - li.pushBack(MyObj(42)); - li.unique(); - printSizeInfo(li); - printList(li); - li.clear(); - li.pushBack(MyObj(0)); - li.pushBack(MyObj(1)); - li.pushBack(MyObj(1)); - li.pushBack(MyObj(1)); - li.pushBack(MyObj(2)); - li.pushBack(MyObj(3)); - li.pushBack(MyObj(3)); - li.pushBack(MyObj(4)); - li.pushBack(MyObj(4)); - li.pushBack(MyObj(4)); - li.pushBack(MyObj(4)); - li.pushBack(MyObj(5)); - li.unique(); - printSizeInfo(li); - printList(li); -} + var li: List(MyObj) + + li.unique() + printSizeInfo(li) + li.pushBack(MyObj(42)) + li.unique() + printSizeInfo(li) + printList(li) + li.pushBack(MyObj(42)) + li.unique() + printSizeInfo(li) + printList(li) + li.clear() + li.pushBack(MyObj(0)) + li.pushBack(MyObj(1)) + li.pushBack(MyObj(1)) + li.pushBack(MyObj(1)) + li.pushBack(MyObj(2)) + li.pushBack(MyObj(3)) + li.pushBack(MyObj(3)) + li.pushBack(MyObj(4)) + li.pushBack(MyObj(4)) + li.pushBack(MyObj(4)) + li.pushBack(MyObj(4)) + li.pushBack(MyObj(5)) + li.unique() + printSizeInfo(li) + printList(li) /*<<>>*/ fun test17() -{ - var li1: List(MyObj); - var li2: List(MyObj); - var li3: List(MyObj) = createRangeAscending(6); - var li4: List(MyObj) = createRangeAscending(4); - var r = li1.all(); - var rr = li2.all(); - - li1.spliceBefore(li1.all(), li2); - printSizeInfo(li1); - printSizeInfo(li2); - li1.assign(li3.all()); - li2.assign(li4.all()); - li1.spliceBefore(li1.all(), li2); - printSizeInfo(li1); - printList(li1); - printSizeInfo(li2); - li1.assign(li3.all()); - li2.assign(li4.all()); - r = li1.all(); - r.popFront(); - r.popBack(); - r.popBack(); - li1.spliceBefore(r, li2); - printSizeInfo(li1); - printList(li1); - printSizeInfo(li2); - li1.clear(); - li2.clear(); - li1.spliceAfter(li1.all(), li2); - printSizeInfo(li1); - printSizeInfo(li2); - li1.assign(li3.all()); - li2.assign(li4.all()); - li1.spliceAfter(li1.all(), li2); - printSizeInfo(li1); - printList(li1); - printSizeInfo(li2); - li1.assign(li3.all()); - li2.assign(li4.all()); - r = li1.all(); - r.popFront(); - r.popBack(); - r.popBack(); - li1.spliceAfter(r, li2); - printSizeInfo(li1); - printList(li1); - printSizeInfo(li2); - li1.assign(li3.all()); - li2.assign(li4.all()); - r = li1.all(); - r.popFront(); - r.popBack(); - r.popBack(); - rr = li2.all(); - rr.popFront(); - rr.popBack(); - li1.spliceBefore(r, li2, rr); - printSizeInfo(li1); - printList(li1); - printSizeInfo(li2); - printList(li2); - li1.assign(li3.all()); - li2.assign(li4.all()); - r = li1.all(); - r.popFront(); - r.popBack(); - r.popBack(); - rr = li2.all(); - rr.popFront(); - rr.popBack(); - li1.spliceAfter(r, li2, rr); - printSizeInfo(li1); - printList(li1); - printSizeInfo(li2); - printList(li2); -} + var li1: List(MyObj) + var li2: List(MyObj) + var li3: List(MyObj) = createRangeAscending(6) + var li4: List(MyObj) = createRangeAscending(4) + var r = li1.all() + var rr = li2.all() + + li1.spliceBefore(li1.all(), li2) + printSizeInfo(li1) + printSizeInfo(li2) + li1.assign(li3.all()) + li2.assign(li4.all()) + li1.spliceBefore(li1.all(), li2) + printSizeInfo(li1) + printList(li1) + printSizeInfo(li2) + li1.assign(li3.all()) + li2.assign(li4.all()) + r = li1.all() + r.popFront() + r.popBack() + r.popBack() + li1.spliceBefore(r, li2) + printSizeInfo(li1) + printList(li1) + printSizeInfo(li2) + li1.clear() + li2.clear() + li1.spliceAfter(li1.all(), li2) + printSizeInfo(li1) + printSizeInfo(li2) + li1.assign(li3.all()) + li2.assign(li4.all()) + li1.spliceAfter(li1.all(), li2) + printSizeInfo(li1) + printList(li1) + printSizeInfo(li2) + li1.assign(li3.all()) + li2.assign(li4.all()) + r = li1.all() + r.popFront() + r.popBack() + r.popBack() + li1.spliceAfter(r, li2) + printSizeInfo(li1) + printList(li1) + printSizeInfo(li2) + li1.assign(li3.all()) + li2.assign(li4.all()) + r = li1.all() + r.popFront() + r.popBack() + r.popBack() + rr = li2.all() + rr.popFront() + rr.popBack() + li1.spliceBefore(r, li2, rr) + printSizeInfo(li1) + printList(li1) + printSizeInfo(li2) + printList(li2) + li1.assign(li3.all()) + li2.assign(li4.all()) + r = li1.all() + r.popFront() + r.popBack() + r.popBack() + rr = li2.all() + rr.popFront() + rr.popBack() + li1.spliceAfter(r, li2, rr) + printSizeInfo(li1) + printList(li1) + printSizeInfo(li2) + printList(li2) /*<<>>*/ fun test19() -{ - var li: List(MyObj); - - li.sort(Greater()); - printSizeInfo(li); - li.pushBack(MyObj(42)); - li.sort(Greater()); - printSizeInfo(li); - printList(li); - li.clear(); - li.pushBack(MyObj(10)); - li.pushBack(MyObj(5)); - li.pushBack(MyObj(5)); - li.pushBack(MyObj(1)); - li.pushBack(MyObj(4)); - li.pushBack(MyObj(7)); - li.pushBack(MyObj(7)); - li.pushBack(MyObj(7)); - li.pushBack(MyObj(10)); - li.pushBack(MyObj(100)); - li.pushBack(MyObj(0)); - li.sort(Greater()); - printSizeInfo(li); - printList(li); -} + var li: List(MyObj) + + li.sort(Greater()) + printSizeInfo(li) + li.pushBack(MyObj(42)) + li.sort(Greater()) + printSizeInfo(li) + printList(li) + li.clear() + li.pushBack(MyObj(10)) + li.pushBack(MyObj(5)) + li.pushBack(MyObj(5)) + li.pushBack(MyObj(1)) + li.pushBack(MyObj(4)) + li.pushBack(MyObj(7)) + li.pushBack(MyObj(7)) + li.pushBack(MyObj(7)) + li.pushBack(MyObj(10)) + li.pushBack(MyObj(100)) + li.pushBack(MyObj(0)) + li.sort(Greater()) + printSizeInfo(li) + printList(li) /*<<>>*/ fun test21() -{ - var li1: List(MyObj); - var li2: List(MyObj); - - li1.pushBack(MyObj(7)); - li1.pushBack(MyObj(5)); - li1.pushBack(MyObj(4)); - li1.pushBack(MyObj(4)); - li1.pushBack(MyObj(2)); - li1.pushBack(MyObj(1)); - li2.pushBack(MyObj(10)); - li2.pushBack(MyObj(6)); - li2.pushBack(MyObj(6)); - li2.pushBack(MyObj(5)); - li2.pushBack(MyObj(3)); - li2.pushBack(MyObj(1)); - li2.pushBack(MyObj(1)); - li2.pushBack(MyObj(0)); - li1.merge(li2, Greater()); - printSizeInfo(li2); - printSizeInfo(li1); - printList(li1); -} + var li1: List(MyObj) + var li2: List(MyObj) + + li1.pushBack(MyObj(7)) + li1.pushBack(MyObj(5)) + li1.pushBack(MyObj(4)) + li1.pushBack(MyObj(4)) + li1.pushBack(MyObj(2)) + li1.pushBack(MyObj(1)) + li2.pushBack(MyObj(10)) + li2.pushBack(MyObj(6)) + li2.pushBack(MyObj(6)) + li2.pushBack(MyObj(5)) + li2.pushBack(MyObj(3)) + li2.pushBack(MyObj(1)) + li2.pushBack(MyObj(1)) + li2.pushBack(MyObj(0)) + li1.merge(li2, Greater()) + printSizeInfo(li2) + printSizeInfo(li1) + printList(li1) /*<<>>*/ fun test22() -{ - var li: List(MyObj); - - li.reverse(); - printSizeInfo(li); - li.pushBack(MyObj(42)); - printSizeInfo(li); - printList(li); - li.clear(); - li.assign(createRangeAscending(8)); - li.reverse(); - printSizeInfo(li); - printList(li); -} + var li: List(MyObj) + + li.reverse() + printSizeInfo(li) + li.pushBack(MyObj(42)) + printSizeInfo(li) + printList(li) + li.clear() + li.assign(createRangeAscending(8)) + li.reverse() + printSizeInfo(li) + printList(li) /*<<>>*/ fun test23() -{ - var li: List(MyObj) = createRangeAscending(10); - var pred: Even; + var li: List(MyObj) = createRangeAscending(10) + var pred: Even - li.removeIf(pred); - printSizeInfo(li); - printList(li); -} + li.removeIf(pred) + printSizeInfo(li) + printList(li) /*<<>>*/ fun test24() -{ - var li: List(MyObj); - var pred: Greater; - - li.pushBack(MyObj(5)); - li.pushBack(MyObj(7)); - li.pushBack(MyObj(4)); - li.pushBack(MyObj(1)); - li.pushBack(MyObj(0)); - li.pushBack(MyObj(9)); - li.pushBack(MyObj(2)); - li.unique(pred); - printSizeInfo(li); - printList(li); -} + var li: List(MyObj) + var pred: Greater + + li.pushBack(MyObj(5)) + li.pushBack(MyObj(7)) + li.pushBack(MyObj(4)) + li.pushBack(MyObj(1)) + li.pushBack(MyObj(0)) + li.pushBack(MyObj(9)) + li.pushBack(MyObj(2)) + li.unique(pred) + printSizeInfo(li) + printList(li) /*<<>>*/ fun test25() -{ - var l1: List(MyObj) = createRangeAscending(4); - var l2: List(MyObj) = createRangeAscending(4); - var l3: List(MyObj) = createRangeAscending(6); + var l1: List(MyObj) = createRangeAscending(4) + var l2: List(MyObj) = createRangeAscending(4) + var l3: List(MyObj) = createRangeAscending(6) - cout << l1 == l2 << endl; - cout << l1 == l3 << endl; -} + cout << l1 == l2 << endl + cout << l1 == l3 << endl /*<<>>*/ fun test26() -{ - var li: List(MyObj) = createRangeAscending(1000); - var r = li.all(); - var i = 0; + var li: List(MyObj) = createRangeAscending(1000) + var r = li.all() + var i = 0 - printSizeInfo(li); - while !r.isEmpty() ; r.popFront(); - { + printSizeInfo(li) + while !r.isEmpty() ; r.popFront() if ( r.front().x != i ) - cout << "test failed" << endl; - i = i + 1; - } + cout << "test failed" << endl + i = i + 1 - var lili: List(MyObj) = li; + var lili: List(MyObj) = li - i = 0; - r = lili.all(); - printSizeInfo(lili); - while !r.isEmpty() ; r.popFront(); - { + i = 0 + r = lili.all() + printSizeInfo(lili) + while !r.isEmpty() ; r.popFront() if ( r.front().x != i ) - cout << "test failed" << endl; - i = i + 1; - } - - var lilili: List(MyObj); - - lilili.assign(createRangeAscending(1000)); - i = 0; - r = lilili.all(); - printSizeInfo(lilili); - while !r.isEmpty() ; r.popFront(); - { + cout << "test failed" << endl + i = i + 1 + + var lilili: List(MyObj) + + lilili.assign(createRangeAscending(1000)) + i = 0 + r = lilili.all() + printSizeInfo(lilili) + while !r.isEmpty() ; r.popFront() if ( r.front().x != i ) - cout << "test failed" << endl; - i = i + 1; - } -} + cout << "test failed" << endl + i = i + 1 /*<<>(this: @MyObj, os: @OutStream) - os << "MyObj(" << x << ")"; + os << "MyObj(" << x << ")" fun print(this: @MyObj) - cout << "MyObj.print" << endl; + cout << "MyObj.print" << endl fun print(this: @MyObj, arg: StringRef) - cout << "MyObj.print(" << arg << ")" << endl; + cout << "MyObj.print(" << arg << ")" << endl datatype Foo - obj: MyObj; + obj: MyObj fun ctor(this: @Foo, x: Int) - obj ctor x; + obj ctor x -fun get(this: @Foo) = obj; +fun get(this: @Foo) = obj fun sprMain -{ if ( programArgs.size() < 2 ) - return; - var n = programArgs(1) asInt; + return + var n = programArgs(1) asInt if n == 1; test1 else if n == 2; test2 @@ -40,80 +39,71 @@ fun sprMain else if n == 6; test6 else if n == 7; test7 else if n == 8; test8 -} -[native("malloc")] fun mallocRt(size: SizeType): @Byte; -[native("free")] fun freeRt(p: @Byte); +[native("malloc")] fun mallocRt(size: SizeType): @Byte +[native("free")] fun freeRt(p: @Byte) fun newObj(x: Int): @MyObj -{ - var ptr: @Byte; + var ptr: @Byte - ptr := mallocRt(sizeOf(MyObj)); + ptr := mallocRt(sizeOf(MyObj)) - var oPtr: @MyObj; + var oPtr: @MyObj - oPtr := reinterpretCast(@MyObj, ptr); + oPtr := reinterpretCast(@MyObj, ptr) - oPtr.ctor(x); + oPtr.ctor(x) - return oPtr; -} + return oPtr fun delObj(oPtr: @MyObj) -{ - oPtr.dtor(); + oPtr.dtor() - var ptr: @Byte; + var ptr: @Byte - ptr := reinterpretCast(@Byte, oPtr); + ptr := reinterpretCast(@Byte, oPtr) - freeRt(ptr); -} + freeRt(ptr) fun test1() -{ - var p: Ptr(MyObj); - var scp: ScopedPtr(MyObj); - var shp: SharedPtr(MyObj); + var p: Ptr(MyObj) + var scp: ScopedPtr(MyObj) + var shp: SharedPtr(MyObj) if ( !isNullRef(reinterpretCast(@Byte, p.get())) || !p.isNull() ) - cout << "test failed" << endl; + cout << "test failed" << endl if ( !isNullRef(reinterpretCast(@Byte, scp.get())) || !scp.isNull() ) - cout << "test failed" << endl; + cout << "test failed" << endl if ( !isNullRef(reinterpretCast(@Byte, shp.get())) || !shp.isNull() ) - cout << "test failed" << endl; -} + cout << "test failed" << endl /*<<>>*/ fun test2() -{ - var obj: @MyObj = newObj(42); - var obj2: @MyObj = newObj(84); - var p = Ptr(MyObj)(obj); - var pp = Ptr(MyObj)(obj2); - - cout << p.get().x << endl; - p.reset(); + var obj: @MyObj = newObj(42) + var obj2: @MyObj = newObj(84) + var p = Ptr(MyObj)(obj) + var pp = Ptr(MyObj)(obj2) + + cout << p.get().x << endl + p.reset() if ( !isNullRef(reinterpretCast(@Byte, p.get())) || !p.isNull() ) - cout << "test failed" << endl; - p.reset(obj); - cout << p.get().x << endl; - p = pp; - cout << p.get().x << endl; - p.reset(obj); - p.get().x = p.get().x + 1; - cout << p.get().x << endl; - p.swap(pp); - cout << p.get().x << endl; - cout << pp.get().x << endl; + cout << "test failed" << endl + p.reset(obj) + cout << p.get().x << endl + p = pp + cout << p.get().x << endl + p.reset(obj) + p.get().x = p.get().x + 1 + cout << p.get().x << endl + p.swap(pp) + cout << p.get().x << endl + cout << pp.get().x << endl if ( p == pp ) - cout << "test failed" << endl; - p = pp; + cout << "test failed" << endl + p = pp if ( p != pp ) - cout << "test failed" << endl; -} + cout << "test failed" << endl /*<<>>*/ fun test3() -{ - var obj: @MyObj = newObj(42); - var p = ScopedPtr(MyObj)(obj); + var obj: @MyObj = newObj(42) + var p = ScopedPtr(MyObj)(obj) - cout << p.get().x << endl; - p.reset(); + cout << p.get().x << endl + p.reset() if ( !isNullRef(reinterpretCast(@Byte, p.get())) || !p.isNull() ) - cout << "test failed" << endl; - obj := newObj(42); - p.reset(obj); - cout << p.get().x << endl; - p.get().x = p.get().x + 1; - cout << p.get().x << endl; -} + cout << "test failed" << endl + obj := newObj(42) + p.reset(obj) + cout << p.get().x << endl + p.get().x = p.get().x + 1 + cout << p.get().x << endl /*<<>>*/ fun test4() -{ - var obj: @MyObj = newObj(42); - var p = SharedPtr(MyObj)(obj); + var obj: @MyObj = newObj(42) + var p = SharedPtr(MyObj)(obj) if ( !p.isUnique() ) - cout << "test failed" << endl; + cout << "test failed" << endl if ( true ) - { - var pp = p; + var pp = p if ( p.isUnique() ) - cout << "test failed" << endl; - p.get().x = 0; - cout << p.useCount() << endl; - } - cout << p.useCount() << endl; + cout << "test failed" << endl + p.get().x = 0 + cout << p.useCount() << endl + cout << p.useCount() << endl if ( !p.isUnique() ) - cout << "test failed" << endl; - cout << p.get().x << endl; - p.reset(); + cout << "test failed" << endl + cout << p.get().x << endl + p.reset() if ( !isNullRef(reinterpretCast(@Byte, p.get())) || !p.isNull() ) - cout << "test failed" << endl; - obj := newObj(42); - p.reset(obj); - cout << p.get().x << endl; - p.get().x += 1; - cout << p.get().x << endl; -} + cout << "test failed" << endl + obj := newObj(42) + p.reset(obj) + cout << p.get().x << endl + p.get().x += 1 + cout << p.get().x << endl /*<<>>*/ fun test7 -{ - var v: Vector(Ptr(MyObj)); - v += Ptr(MyObj)(newObj(10)); - v += Ptr(MyObj)(newObj(11)); - v += Ptr(MyObj)(newObj(12)); - v += Ptr(MyObj)(newObj(13)); + var v: Vector(Ptr(MyObj)) + v += Ptr(MyObj)(newObj(10)) + v += Ptr(MyObj)(newObj(11)) + v += Ptr(MyObj)(newObj(12)) + v += Ptr(MyObj)(newObj(13)) for x = v.all() - cout << x.x << endl; - v.all() delete; - cout << "---" << endl; -} + cout << x.x << endl + v.all() delete + cout << "---" << endl /*<< y; } datatype Even - ; + fun ()(this: Even, x: Int): Bool { return x % 2 == 0; } datatype Minus - ; -fun ()(this: Minus, x: Int, y: Int) = x - y; + +fun ()(this: Minus, x: Int, y: Int) = x - y datatype Square - ; -fun ()(this: Square, x: AnyType) = x * x; + +fun ()(this: Square, x: AnyType) = x * x datatype Multiply - ; -fun ()(this: Multiply, x: AnyType, y: AnyType) = x * y; + +fun ()(this: Multiply, x: AnyType, y: AnyType) = x * y datatype Fact - _res: Int = 1; - _k: Int = 0; + _res: Int = 1 + _k: Int = 0 fun ()(this: @Fact): Int - ++_k; - _res *= _k; + ++_k + _res *= _k - return _res; + return _res -fun isOdd(n: Int) = n%2==1; +fun isOdd(n: Int) = n%2==1 fun printRange(nr: Range) -{ while !nr.isEmpty() - { - cout << nr.front(); - nr.popFront(); + cout << nr.front() + nr.popFront() if (nr.isEmpty() ) - cout << endl; + cout << endl else - cout << ' '; - } -} + cout << ' ' fun makeList(): List(Int) -{ - var li: List(Int); - - li.pushBack(3); - li.pushBack(1); - li.pushBack(-4); - li.pushBack(-8); - li.pushBack(-8); - li.pushBack(7); - li.pushBack(-4); - li.pushBack(-8); - li.pushBack(3); - li.pushBack(-5); - li.pushBack(-10); - li.pushBack(-6); - li.pushBack(-10); - li.pushBack(7); - li.pushBack(-8); - - return li; -} + var li: List(Int) + + li.pushBack(3) + li.pushBack(1) + li.pushBack(-4) + li.pushBack(-8) + li.pushBack(-8) + li.pushBack(7) + li.pushBack(-4) + li.pushBack(-8) + li.pushBack(3) + li.pushBack(-5) + li.pushBack(-10) + li.pushBack(-6) + li.pushBack(-10) + li.pushBack(7) + li.pushBack(-8) + + return li fun createRangeAscending(size: SizeType): ContiguousMemoryRange(Int) -{ - var ptr = allocRawPtr(Int, size); - var ptrEnd = ptr.advance(DiffType(size)); - var i = 0; + var ptr = allocRawPtr(Int, size) + var ptrEnd = ptr.advance(DiffType(size)) + var i = 0 while i < size ; i++ - ptr.advance(i).value() = i; + ptr.advance(i).value() = i - return ContiguousMemoryRange(Int)(ptr, ptrEnd); -} + return ContiguousMemoryRange(Int)(ptr, ptrEnd) fun test1() -{ - var l = makeList(); - var lr = l.all(); - var v = Vector(Int)(lr); - var vr = v.all(); - var ev = Vector(Int)(); - var evr = ev.all(); - - printRange(retro(lr)); - printRange(retro(retro(lr))); - printRange(retro(vr)); - cout << retro(evr).isEmpty() << endl; - - var rvr = retro(vr); - - cout << rvr.front() << endl; -} + var l = makeList() + var lr = l.all() + var v = Vector(Int)(lr) + var vr = v.all() + var ev = Vector(Int)() + var evr = ev.all() + + printRange(retro(lr)) + printRange(retro(retro(lr))) + printRange(retro(vr)) + cout << retro(evr).isEmpty() << endl + + var rvr = retro(vr) + + cout << rvr.front() << endl /*<<>>*/ fun test2() -{ - var li = makeList(); - var lr = li.all(); - - printRange(take(lr, 5)); - printRange(take(take(lr, 5), 3)); - cout << take(lr, 0).isEmpty() << endl; - printRange(take(lr, 100)); -} + var li = makeList() + var lr = li.all() + + printRange(take(lr, 5)) + printRange(take(take(lr, 5), 3)) + cout << take(lr, 0).isEmpty() << endl + printRange(take(lr, 100)) /*<<>>*/ fun test3() -{ - var li = makeList(); - var lr = li.all(); + var li = makeList() + var lr = li.all() - cout << takeWhile(lr, Even()).isEmpty() << endl; - lr.popFront(); - lr.popFront(); - printRange(takeWhile(lr, Even())); + cout << takeWhile(lr, Even()).isEmpty() << endl + lr.popFront() + lr.popFront() + printRange(takeWhile(lr, Even())) - var nr = NumericRangeWithStep(Int)(0, 10, 2); + var nr = NumericRangeWithStep(Int)(0, 10, 2) - printRange(takeWhile(nr, Even())); -} + printRange(takeWhile(nr, Even())) /*<<>>*/ fun test4() -{ - var li = makeList(); - var lr = li.all(); + var li = makeList() + var lr = li.all() - cout << takeWhile(lr, Even(), 2).isEmpty() << endl; - lr.popFront(); - lr.popFront(); - printRange(takeWhile(lr, Even(), 2)); + cout << takeWhile(lr, Even(), 2).isEmpty() << endl + lr.popFront() + lr.popFront() + printRange(takeWhile(lr, Even(), 2)) - var nr = NumericRangeWithStep(Int)(0, 10, 2); + var nr = NumericRangeWithStep(Int)(0, 10, 2) - printRange(takeWhile(nr, Even(), 3)); -} + printRange(takeWhile(nr, Even(), 3)) /*<<>>*/ fun test5() -{ - var li = makeList(); - var lr = li.all(); + var li = makeList() + var lr = li.all() - printRange(filter(lr, Even())); - printRange(lr filter Even()); - printRange(lr filter ((fun x = x%2 == 0))); + printRange(filter(lr, Even())) + printRange(lr filter Even()) + printRange(lr filter ((fun x = x%2 == 0))) - var nr = NumericRangeWithStep(Int)(1, 11, 2); + var nr = NumericRangeWithStep(Int)(1, 11, 2) - cout << filter(nr, Even()).isEmpty() << endl; -} + cout << filter(nr, Even()).isEmpty() << endl /*<<>>*/ fun test6() -{ - var li = makeList(); - var lr = li.all(); - - printRange(transform(lr, Square())); - printRange(lr map Square()); - printRange(lr map ((fun x = x*x))); -} + var li = makeList() + var lr = li.all() + + printRange(transform(lr, Square())) + printRange(lr map Square()) + printRange(lr map ((fun x = x*x))) /*<<>>*/ fun test7() -{ - var range = repeat(42); - var i = 0; + var range = repeat(42) + var i = 0 while i < 1000 - { if ( range.front() != 42 ) - cout << "Test failed" << endl; - i = i + 1; - range.popFront(); - } - printRange(repeat(42, 10)); -} + cout << "Test failed" << endl + i = i + 1 + range.popFront() + printRange(repeat(42, 10)) /*<<>>*/ fun test8() -{ - var li = makeList(); - var lr = li.all(); - var nr = NumericRangeWithStep(Int)(0, 5, 1); - var enr = NumericRangeWithStep(Int)(5, 5, 1); - var elr = List(Int)().all(); - - printRange(chain(lr, nr)); - printRange(chain(nr, lr)); - printRange(chain(nr, elr)); - printRange(chain(enr, nr)); - cout << chain(enr, elr).isEmpty() << endl; -} + var li = makeList() + var lr = li.all() + var nr = NumericRangeWithStep(Int)(0, 5, 1) + var enr = NumericRangeWithStep(Int)(5, 5, 1) + var elr = List(Int)().all() + + printRange(chain(lr, nr)) + printRange(chain(nr, lr)) + printRange(chain(nr, elr)) + printRange(chain(enr, nr)) + cout << chain(enr, elr).isEmpty() << endl /*<<>>*/ fun test9() -{ - var l = makeList(); - var lr = l.all(); + var l = makeList() + var lr = l.all() - printRange(stride(lr, 5)); + printRange(stride(lr, 5)) - var nr = NumericRangeWithStep(Int)(0, 10, 1); + var nr = NumericRangeWithStep(Int)(0, 10, 1) - printRange(stride(nr, 3)); + printRange(stride(nr, 3)) - var v = Vector(Int)(makeList().all()); - var vr = v.all(); + var v = Vector(Int)(makeList().all()) + var vr = v.all() - printRange(stride(vr, 5)); + printRange(stride(vr, 5)) - var nr2 = NumericRangeWithStep(Int)(0, 5, 1); + var nr2 = NumericRangeWithStep(Int)(0, 5, 1) - printRange(stride(nr2, 10)); -} + printRange(stride(nr2, 10)) /*<<>>*/ fun test10() -{ - var v = Vector(Int)(NumericRangeWithStep(Int)(0, 5, 1)); - var vr = v.all(); - - printRange(radial(vr, 0)); - printRange(radial(vr, 1)); - printRange(radial(vr, 2)); - printRange(radial(vr, 3)); - printRange(radial(vr, 4)); - - var v2 = Vector(Int)(NumericRangeWithStep(Int)(0, 4, 1)); - var vr2 = v2.all(); - - printRange(radial(vr2, 0)); - printRange(radial(vr2, 1)); - printRange(radial(vr2, 2)); - printRange(radial(vr2, 3)); -} + var v = Vector(Int)(NumericRangeWithStep(Int)(0, 5, 1)) + var vr = v.all() + + printRange(radial(vr, 0)) + printRange(radial(vr, 1)) + printRange(radial(vr, 2)) + printRange(radial(vr, 3)) + printRange(radial(vr, 4)) + + var v2 = Vector(Int)(NumericRangeWithStep(Int)(0, 4, 1)) + var vr2 = v2.all() + + printRange(radial(vr2, 0)) + printRange(radial(vr2, 1)) + printRange(radial(vr2, 2)) + printRange(radial(vr2, 3)) /*<<>>*/ fun test11() -{ - var nr = NumericRangeWithStep(Int)(0, 5, 1); - - printRange(cycle(nr, 4)); - cout << cycle(nr, 0).isEmpty() << endl; - printRange(cycle(nr, 1)); - printRange(take(cycle(nr), 13)); -} + var nr = NumericRangeWithStep(Int)(0, 5, 1) + + printRange(cycle(nr, 4)) + cout << cycle(nr, 0).isEmpty() << endl + printRange(cycle(nr, 1)) + printRange(take(cycle(nr), 13)) /*<<>>*/ -fun nextCollatz(n: Int) = ife(n%2==0, n/2, n*3+1); +fun nextCollatz(n: Int) = ife(n%2==0, n/2, n*3+1) fun test12() -{ - printRange(take(generate(Fact()), 5)); - printRange(generate(Fact(), 6)); - cout << generate(Fact(), 0).isEmpty() << endl; - cout << "---" << endl; - - printRange( generate1(13, \nextCollatz, 15) ); - printRange( generate1(13 ,\nextCollatz) takeUntil (fun n = n==1) ); -} + printRange(take(generate(Fact()), 5)) + printRange(generate(Fact(), 6)) + cout << generate(Fact(), 0).isEmpty() << endl + cout << "---" << endl + + printRange( generate1(13, \nextCollatz, 15) ) + printRange( generate1(13 ,\nextCollatz) takeUntil (fun n = n==1) ) /*<<>>*/ fun test13() -{ - printRange(numericRange(-5, 5, 2)); - printRange(numericRange(5, -5, -2)); - printRange(numericRange(-5, 5)); - printRange(numericRange(5, -5, -1)); - cout << "---" << endl; - printRange(-5 .. 5); - printRange(5 .. -5 ../ -1); - cout << "---" << endl; - printRange(-5...5); - printRange(5... -5 ../ -1); -} + printRange(numericRange(-5, 5, 2)) + printRange(numericRange(5, -5, -2)) + printRange(numericRange(-5, 5)) + printRange(numericRange(5, -5, -1)) + cout << "---" << endl + printRange(-5 .. 5) + printRange(5 .. -5 ../ -1) + cout << "---" << endl + printRange(-5...5) + printRange(5... -5 ../ -1) /*<<>>*/ fun test14() -{ - printRange(zip(numericRange(0, 6), numericRange(3, 12), Multiply())); + printRange(zip(numericRange(0, 6), numericRange(3, 12), Multiply())) - var zr = zip(numericRange(0, 4), numericRange(0, -4, -1)); + var zr = zip(numericRange(0, 4), numericRange(0, -4, -1)) for p = zr - cout << p.v1 << ' ' << p.v2 << '\n'; -} + cout << p.v1 << ' ' << p.v2 << '\n' /*<<>>*/ fun test15() -{ - var r = 1...10; - printRange(r); + var r = 1...10 + printRange(r) while !r.isEmpty() - cout << ' ' << (r++); - cout << endl; + cout << ' ' << (r++) + cout << endl - r = 1...10; + r = 1...10 while ! !r // call isEmpty() by pre_! operator - cout << ' ' << (r++); - cout << endl; + cout << ' ' << (r++) + cout << endl - r = 1...10; + r = 1...10 while !r.isEmpty() && r.front() != 10 - cout << ' ' << (++r); - cout << endl; -} + cout << ' ' << (++r) + cout << endl /*<<
>>*/
 
 fun test16()
-{
-    var r = 1...10;
-    printRange(r);
+    var r = 1...10
+    printRange(r)
 
     while !r.isEmpty()
-        cout << ' ' << (r--);
-    cout << endl;
+        cout << ' ' << (r--)
+    cout << endl
 
-    r = 1...10;
+    r = 1...10
     while !r.isEmpty() && r.back() != 1
-        cout << ' ' << (--r);
-    cout << endl;
-}
+        cout << ' ' << (--r)
+    cout << endl
 /*<<
>>*/
 
 fun test17()
-{
-    printRange( filter(1...10, \isOdd) );     // 1 3 5 7 9
-    printRange( map(1...5, (fun n = n*2)) ); // 2 4 6 8 10
+    printRange( filter(1...10, \isOdd) )     // 1 3 5 7 9
+    printRange( map(1...5, (fun n = n*2)) ) // 2 4 6 8 10
 
-    printRange( 1...10 filter \isOdd );       // 1 3 5 7 9
-    printRange( 1...5 map ((fun n = n*2)) ); // 2 4 6 8 10
+    printRange( 1...10 filter \isOdd )       // 1 3 5 7 9
+    printRange( 1...5 map ((fun n = n*2)) ) // 2 4 6 8 10
 
-    printRange( 1...10 filter \isOdd map (fun n = n*2) );  // 2 6 10 14 18
-}
+    printRange( 1...10 filter \isOdd map (fun n = n*2) )  // 2 6 10 14 18
 /*<<>>*/
 
 fun test18()
-{
-    printRange( (1..) take 10 );
-    printRange( (21..) take 10 );
-    printRange( (Byte(1)..) take 10 );
-    printRange( Byte(120).. );
-    printRange( (Long(1)..) take 10 );
-}
+    printRange( (1..) take 10 )
+    printRange( (21..) take 10 )
+    printRange( (Byte(1)..) take 10 )
+    printRange( Byte(120).. )
+    printRange( (Long(1)..) take 10 )
 /*<<>>*/
 
 fun test19()
-{
-    var count = 0;
-    var rcount: @Int = count;
-    printRange( (0..10) map (fun.{rcount} (n: Int): Int { ++rcount; return n; }) );
-    cout << count << endl;
-}
+    var count = 0
+    var rcount: @Int = count
+    printRange( (0..10) map (fun.{rcount} (n: Int): Int { ++rcount; return n; }) )
+    cout << count << endl
 /*<<>>*/
 
 fun test2()
-{
-    var sm = SortedMap(Int, Int, Less(Int), Equal(Int))(60);
+    var sm = SortedMap(Int, Int, Less(Int), Equal(Int))(60)
 
-    cout << sm.isEmpty() << endl;
-    cout << sm.size() << endl;
-    cout << sm.capacity() << endl;
-    cout << sm.contains(10) << endl;
-}
+    cout << sm.isEmpty() << endl
+    cout << sm.size() << endl
+    cout << sm.capacity() << endl
+    cout << sm.contains(10) << endl
 /*<<>>*/
 
 fun test3()
-{
-    var sm = SortedMap(Int, Int, Less(Int), Equal(Int))(makeList().all());
-
-    cout << sm.isEmpty() << endl;
-    cout << sm.size() << endl;
-    cout << sm.capacity() << endl;
-    cout << sm.contains(53) << endl;
-    cout << sm.contains(106) << endl;
-    cout << sm.contains(4) << endl;
-    cout << sm.contains(9999) << endl;
-}
+    var sm = SortedMap(Int, Int, Less(Int), Equal(Int))(makeList().all())
+
+    cout << sm.isEmpty() << endl
+    cout << sm.size() << endl
+    cout << sm.capacity() << endl
+    cout << sm.contains(53) << endl
+    cout << sm.contains(106) << endl
+    cout << sm.contains(4) << endl
+    cout << sm.contains(9999) << endl
 /*<<>>*/
 
 fun test4()
-{
-    var sm = SortedMap(Int, Int, Less(Int), Equal(Int))(makeList().all());
-    var sm2 = SortedMap(Int, Int, Less(Int), Equal(Int))(sm);
-
-    cout << sm2.isEmpty() << endl;
-    cout << sm2.size() << endl;
-    cout << sm2.capacity() << endl;
-    cout << sm2.contains(53) << endl;
-    cout << sm2.contains(106) << endl;
-    cout << sm2.contains(4) << endl;
-    cout << sm2.contains(9999) << endl;
-}
+    var sm = SortedMap(Int, Int, Less(Int), Equal(Int))(makeList().all())
+    var sm2 = SortedMap(Int, Int, Less(Int), Equal(Int))(sm)
+
+    cout << sm2.isEmpty() << endl
+    cout << sm2.size() << endl
+    cout << sm2.capacity() << endl
+    cout << sm2.contains(53) << endl
+    cout << sm2.contains(106) << endl
+    cout << sm2.contains(4) << endl
+    cout << sm2.contains(9999) << endl
 /*<<>>*/
 
 fun test5()
-{
-    var sm = SortedMap(Int, Int, Less(Int), Equal(Int))(makeList().all());
-    var sm2 = SortedMap(Int, Int, Less(Int), Equal(Int))(60);
-
-    sm.swap(sm2);
-    cout << sm2.isEmpty() << endl;
-    cout << sm2.size() << endl;
-    cout << sm2.capacity() << endl;
-    cout << sm2.contains(53) << endl;
-    cout << sm2.contains(106) << endl;
-    cout << sm2.contains(4) << endl;
-    cout << sm2.contains(9999) << endl;
-    cout << sm.isEmpty() << endl;
-    cout << sm.size() << endl;
-    cout << sm.capacity() << endl;
-    cout << sm.contains(10) << endl;
-}
+    var sm = SortedMap(Int, Int, Less(Int), Equal(Int))(makeList().all())
+    var sm2 = SortedMap(Int, Int, Less(Int), Equal(Int))(60)
+
+    sm.swap(sm2)
+    cout << sm2.isEmpty() << endl
+    cout << sm2.size() << endl
+    cout << sm2.capacity() << endl
+    cout << sm2.contains(53) << endl
+    cout << sm2.contains(106) << endl
+    cout << sm2.contains(4) << endl
+    cout << sm2.contains(9999) << endl
+    cout << sm.isEmpty() << endl
+    cout << sm.size() << endl
+    cout << sm.capacity() << endl
+    cout << sm.contains(10) << endl
 /*<<>>*/
 
 fun test6()
-{
-    var sm = SortedMap(Int, Int, Less(Int), Equal(Int))(makeList().all());
-
-    sm.reserve(1000);
-    cout << sm.isEmpty() << endl;
-    cout << sm.size() << endl;
-    cout << sm.capacity() << endl;
-    cout << sm.contains(53) << endl;
-    cout << sm.contains(106) << endl;
-    cout << sm.contains(4) << endl;
-    cout << sm.contains(9999) << endl;
-}
+    var sm = SortedMap(Int, Int, Less(Int), Equal(Int))(makeList().all())
+
+    sm.reserve(1000)
+    cout << sm.isEmpty() << endl
+    cout << sm.size() << endl
+    cout << sm.capacity() << endl
+    cout << sm.contains(53) << endl
+    cout << sm.contains(106) << endl
+    cout << sm.contains(4) << endl
+    cout << sm.contains(9999) << endl
 /*<<>>*/
 
 fun test7()
-{
-    var sm = SortedMap(Int, Int, Less(Int), Equal(Int))(makeList().all());
+    var sm = SortedMap(Int, Int, Less(Int), Equal(Int))(makeList().all())
 
-    printRange(sm.all());
-}
+    printRange(sm.all())
 /*<<>>*/
@@ -250,33 +226,27 @@ fun test8()
 >>>*/
 
 fun test9()
-{
-    var sm = SortedMap(Int, Int, Less(Int), Equal(Int))();
-    var i = 0;
+    var sm = SortedMap(Int, Int, Less(Int), Equal(Int))()
+    var i = 0
 
     while i < 5
-    {
-        sm.insert(i, i * i);
-        i = i + 1;
-    }
-    sm.insert(makeList().all());
-    printRange(sm.all());
-}
+        sm.insert(i, i * i)
+        i = i + 1
+    sm.insert(makeList().all())
+    printRange(sm.all())
 /*<<>>*/
 
 fun test10()
-{
-    var sm = SortedMap(Int, Int, Less(Int), Equal(Int))(makeList().all());
-
-    sm.remove(5);
-    cout << sm.contains(5) << endl;
-    cout << sm.size() << endl;
-    sm.remove(20);
-    cout << sm.contains(5) << endl;
-    cout << sm.size() << endl;
-}
+    var sm = SortedMap(Int, Int, Less(Int), Equal(Int))(makeList().all())
+
+    sm.remove(5)
+    cout << sm.contains(5) << endl
+    cout << sm.size() << endl
+    sm.remove(20)
+    cout << sm.contains(5) << endl
+    cout << sm.size() << endl
 /*<<>>*/
 
 fun test11()
-{
-    var sm = SortedMap(Int, Int, Less(Int), Equal(Int))(makeList().all());
-
-    sm.remove(sm.equalRange(8));
-    printRange(sm.all());
-    cout << sm.size() << endl;
-    sm.remove(sm.equalRange(106));
-    printRange(sm.all());
-    cout << sm.size() << endl;
-    sm.remove(sm.equalRange(101));
-    printRange(sm.all());
-    cout << sm.size() << endl;
-    sm.remove(sm.equalRange(1000));
-    printRange(sm.all());
-    cout << sm.size() << endl;
-    sm.remove(sm.all());
-    printRange(sm.all());
-    cout << sm.size() << endl;
-    sm = SortedMap(Int, Int, Less(Int), Equal(Int))(makeList().all());
-
-    var r = sm.all();
-
-    r.popFront();
-    sm.remove(r);
-    printRange(sm.all());
-    cout << sm.size() << endl;
-}
+    var sm = SortedMap(Int, Int, Less(Int), Equal(Int))(makeList().all())
+
+    sm.remove(sm.equalRange(8))
+    printRange(sm.all())
+    cout << sm.size() << endl
+    sm.remove(sm.equalRange(106))
+    printRange(sm.all())
+    cout << sm.size() << endl
+    sm.remove(sm.equalRange(101))
+    printRange(sm.all())
+    cout << sm.size() << endl
+    sm.remove(sm.equalRange(1000))
+    printRange(sm.all())
+    cout << sm.size() << endl
+    sm.remove(sm.all())
+    printRange(sm.all())
+    cout << sm.size() << endl
+    sm = SortedMap(Int, Int, Less(Int), Equal(Int))(makeList().all())
+
+    var r = sm.all()
+
+    r.popFront()
+    sm.remove(r)
+    printRange(sm.all())
+    cout << sm.size() << endl
 /*<<>>*/
 
 fun test12()
-{
-    var sm = SortedMap(Int, Int, Less(Int), Equal(Int))(makeList().all());
+    var sm = SortedMap(Int, Int, Less(Int), Equal(Int))(makeList().all())
 
-    cout << sm.contains(106) << endl;
-    cout << sm.contains(53) << endl;
-    cout << sm.contains(52) << endl;
-    cout << sm.contains(12) << endl;
-}
+    cout << sm.contains(106) << endl
+    cout << sm.contains(53) << endl
+    cout << sm.contains(52) << endl
+    cout << sm.contains(12) << endl
 /*<<>>*/
 
 fun test13()
-{
-    var sm = SortedMap(Int, Int, Less(Int), Equal(Int))(makeList().all());
+    var sm = SortedMap(Int, Int, Less(Int), Equal(Int))(makeList().all())
 
-    sm.insert(5, 10);
-    cout << sm.count(5) << endl;
-    cout << sm.count(1) << endl;
-    cout << sm.count(53) << endl;
-}
+    sm.insert(5, 10)
+    cout << sm.count(5) << endl
+    cout << sm.count(1) << endl
+    cout << sm.count(53) << endl
 /*<<>>*/
 
 fun test14()
-{
-    var sm = SortedMap(Int, Int, Less(Int), Equal(Int))(makeList().all());
-
-    printRange(sm.equalRange(5));
-    sm.insert(5, 432);
-    printRange(sm.equalRange(5));
-    sm.insert(58, 32);
-    printRange(sm.equalRange(5));
-    printRange(sm.equalRange(106));
-    printRange(sm.equalRange(111));
-    printRange(sm.equalRange(100));
-}
+    var sm = SortedMap(Int, Int, Less(Int), Equal(Int))(makeList().all())
+
+    printRange(sm.equalRange(5))
+    sm.insert(5, 432)
+    printRange(sm.equalRange(5))
+    sm.insert(58, 32)
+    printRange(sm.equalRange(5))
+    printRange(sm.equalRange(106))
+    printRange(sm.equalRange(111))
+    printRange(sm.equalRange(100))
 /*<<>>*/
 
 fun test15()
-{
-    var sm = SortedMap(Int, Int, Less(Int), Equal(Int))(makeList().all());
+    var sm = SortedMap(Int, Int, Less(Int), Equal(Int))(makeList().all())
 
-    printRange(sm.find(5));
-    printRange(sm.find(10));
-    printRange(sm.find(53));
-}
+    printRange(sm.find(5))
+    printRange(sm.find(10))
+    printRange(sm.find(53))
 /*<<>>*/
 
 fun test16()
-{
-    var sm = SortedMap(Int, Int, Less(Int), Equal(Int))(makeList().all());
+    var sm = SortedMap(Int, Int, Less(Int), Equal(Int))(makeList().all())
 
-    sm.clear();
-    cout << sm.isEmpty() << endl;
-    printRange(sm.all());
-    cout << sm.contains(8) << endl;
-}
+    sm.clear()
+    cout << sm.isEmpty() << endl
+    printRange(sm.all())
+    cout << sm.contains(8) << endl
 /*<<>>*/
 
 fun test17()
-{
-    var sm1 = SortedMap(Int, Int, Less(Int), Equal(Int))(makeList().all());
-    var sm2: SortedMap(Int, Int, Less(Int), Equal(Int));
+    var sm1 = SortedMap(Int, Int, Less(Int), Equal(Int))(makeList().all())
+    var sm2: SortedMap(Int, Int, Less(Int), Equal(Int))
 
-    sm2 = sm1;
-    printRange(sm2.all());
-    sm1 = sm1;
-    printRange(sm1.all());
-}
+    sm2 = sm1
+    printRange(sm2.all())
+    sm1 = sm1
+    printRange(sm1.all())
 /*<<>>*/
 
 fun test18()
-{
-    var sm = SortedMap(Int, Int, Less(Int), Equal(Int))(makeList().all());
-
-    cout << sm.at(145) << endl;
-    cout << sm.at(101) << endl;
-    cout << sm.at(4) << endl;
-    sm.at(1000);
-    cout << sm.contains(1000) << endl;
-    sm.at(4) = 999;
-    cout << sm.at(4) << endl;
-    sm.at(1200) = 555;
-    cout << sm.at(1200) << endl;
-}
+    var sm = SortedMap(Int, Int, Less(Int), Equal(Int))(makeList().all())
+
+    cout << sm.at(145) << endl
+    cout << sm.at(101) << endl
+    cout << sm.at(4) << endl
+    sm.at(1000)
+    cout << sm.contains(1000) << endl
+    sm.at(4) = 999
+    cout << sm.at(4) << endl
+    sm.at(1200) = 555
+    cout << sm.at(1200) << endl
 /*<<>>*/
 
 fun test19()
-{
-    var sm = SortedMap(Int, Int, Less(Int), Equal(Int))(makeList().all());
-    var keys = sm.keys();
-    var values = sm.values();
+    var sm = SortedMap(Int, Int, Less(Int), Equal(Int))(makeList().all())
+    var keys = sm.keys()
+    var values = sm.values()
 
     while !keys.isEmpty()
-    {
-        cout << keys.front();
-        cout << ' ';
-        keys.popFront();
-    }
-    cout << "." << endl;
+        cout << keys.front()
+        cout << ' '
+        keys.popFront()
+    cout << "." << endl
     while !values.isEmpty()
-    {
-        cout << values.front();
-        cout << ' ';
-        values.popFront();
-    }
-    cout << "." << endl;
-}
+        cout << values.front()
+        cout << ' '
+        values.popFront()
+    cout << "." << endl
 /*<<>>*/
 
 fun test20()
-{
-    var sm: SortedMap(Int, Int, Less(Int), Equal(Int));
-    var i = 0;
+    var sm: SortedMap(Int, Int, Less(Int), Equal(Int))
+    var i = 0
 
     while i < 1000
-    {
-        sm.insert(i, i * i);
-        i = i + 1;
-    }
+        sm.insert(i, i * i)
+        i = i + 1
     while i < 1000
-    {
         if ( !sm.contains(i) )
-            cout << "Test failed" << endl;
-        i = i + 1;
-    }
-}
+            cout << "Test failed" << endl
+        i = i + 1
 /*<<>>*/
diff --git a/tests/StdLib/SortedSetTest.spr b/tests/StdLib/SortedSetTest.spr
index 1892d3b9..fa18844a 100644
--- a/tests/StdLib/SortedSetTest.spr
+++ b/tests/StdLib/SortedSetTest.spr
@@ -1,14 +1,13 @@
-import std.sortedSet;
-import std.sortedTable(Less);
-import std.ranges;
-import std.list;
-import std.vector;
+import std.sortedSet
+import std.sortedTable(Less)
+import std.ranges
+import std.list
+import std.vector
 
 fun sprMain
-{
     if ( programArgs.size() < 2 )
-        return;
-    var n = programArgs(1) asInt;
+        return
+    var n = programArgs(1) asInt
 
     if      n == 1  ; test1
     else if n == 2  ; test2
@@ -29,60 +28,51 @@ fun sprMain
     else if n == 17 ; test17
     else if n == 18 ; test18
     else if n == 19 ; test19
-}
 
 fun makeList(): List(Int)
-{
-    var li: List(Int);
-
-    li.pushBack(3);
-    li.pushBack(145);
-    li.pushBack(834);
-    li.pushBack(8);
-    li.pushBack(73);
-    li.pushBack(73);
-    li.pushBack(101);
-    li.pushBack(4);
-    li.pushBack(8);
-    li.pushBack(4);
-    li.pushBack(106);
-    li.pushBack(3);
-    li.pushBack(5);
-    li.pushBack(53);
-    li.pushBack(62);
-
-    return li;
-}
+    var li: List(Int)
+
+    li.pushBack(3)
+    li.pushBack(145)
+    li.pushBack(834)
+    li.pushBack(8)
+    li.pushBack(73)
+    li.pushBack(73)
+    li.pushBack(101)
+    li.pushBack(4)
+    li.pushBack(8)
+    li.pushBack(4)
+    li.pushBack(106)
+    li.pushBack(3)
+    li.pushBack(5)
+    li.pushBack(53)
+    li.pushBack(62)
+
+    return li
 
 fun printRange(nr: AnyType)
-{
-    var v: Vector(Int) = nr;
+    var v: Vector(Int) = nr
 
-    var r = v.all();
+    var r = v.all()
     while !r.isEmpty()
-    {
-        cout << r.front();
-        r.popFront();
+        cout << r.front()
+        r.popFront()
         if (r.isEmpty() )
-            cout << endl;
+            cout << endl
         else
-            cout << ' ';
-    }
-}
+            cout << ' '
 
 datatype Equal(type: Type)
     using ValueType = type
 fun ()(this: Equal, x, y: this.ValueType): Bool = x == y
 
 fun test1()
-{
-    var ss: SortedSet(Int, Less(Int), Equal(Int));
-
-    cout << ss.isEmpty() << endl;
-    cout << ss.size() << endl;
-    cout << ss.capacity() << endl;
-    cout << ss.contains(10) << endl;
-}
+    var ss: SortedSet(Int, Less(Int), Equal(Int))
+
+    cout << ss.isEmpty() << endl
+    cout << ss.size() << endl
+    cout << ss.capacity() << endl
+    cout << ss.contains(10) << endl
 /*<<>>*/
 
 fun test2()
-{
-    var ss = SortedSet(Int, Less(Int), Equal(Int))(60);
-
-    cout << ss.isEmpty() << endl;
-    cout << ss.size() << endl;
-    cout << ss.capacity() << endl;
-    cout << ss.contains(10) << endl;
-}
+    var ss = SortedSet(Int, Less(Int), Equal(Int))(60)
+
+    cout << ss.isEmpty() << endl
+    cout << ss.size() << endl
+    cout << ss.capacity() << endl
+    cout << ss.contains(10) << endl
 /*<<>>*/
 
 fun test3()
-{
-    var ss = SortedSet(Int, Less(Int), Equal(Int))(makeList().all());
-
-    cout << ss.isEmpty() << endl;
-    cout << ss.size() << endl;
-    cout << ss.capacity() << endl;
-    cout << ss.contains(53) << endl;
-    cout << ss.contains(106) << endl;
-    cout << ss.contains(4) << endl;
-    cout << ss.contains(9999) << endl;
-}
+    var ss = SortedSet(Int, Less(Int), Equal(Int))(makeList().all())
+
+    cout << ss.isEmpty() << endl
+    cout << ss.size() << endl
+    cout << ss.capacity() << endl
+    cout << ss.contains(53) << endl
+    cout << ss.contains(106) << endl
+    cout << ss.contains(4) << endl
+    cout << ss.contains(9999) << endl
 /*<<>>*/
 
 fun test4()
-{
-    var ss = SortedSet(Int, Less(Int), Equal(Int))(makeList().all());
-    var ss2 = SortedSet(Int, Less(Int), Equal(Int))(ss);
-
-    cout << ss2.isEmpty() << endl;
-    cout << ss2.size() << endl;
-    cout << ss2.capacity() << endl;
-    cout << ss2.contains(53) << endl;
-    cout << ss2.contains(106) << endl;
-    cout << ss2.contains(4) << endl;
-    cout << ss2.contains(9999) << endl;
-}
+    var ss = SortedSet(Int, Less(Int), Equal(Int))(makeList().all())
+    var ss2 = SortedSet(Int, Less(Int), Equal(Int))(ss)
+
+    cout << ss2.isEmpty() << endl
+    cout << ss2.size() << endl
+    cout << ss2.capacity() << endl
+    cout << ss2.contains(53) << endl
+    cout << ss2.contains(106) << endl
+    cout << ss2.contains(4) << endl
+    cout << ss2.contains(9999) << endl
 /*<<>>*/
 
 fun test5()
-{
-    var ss = SortedSet(Int, Less(Int), Equal(Int))(makeList().all());
-    var ss2 = SortedSet(Int, Less(Int), Equal(Int))(60);
-
-    ss.swap(ss2);
-    cout << ss2.isEmpty() << endl;
-    cout << ss2.size() << endl;
-    cout << ss2.capacity() << endl;
-    cout << ss2.contains(53) << endl;
-    cout << ss2.contains(106) << endl;
-    cout << ss2.contains(4) << endl;
-    cout << ss2.contains(9999) << endl;
-    cout << ss.isEmpty() << endl;
-    cout << ss.size() << endl;
-    cout << ss.capacity() << endl;
-    cout << ss.contains(10) << endl;
-}
+    var ss = SortedSet(Int, Less(Int), Equal(Int))(makeList().all())
+    var ss2 = SortedSet(Int, Less(Int), Equal(Int))(60)
+
+    ss.swap(ss2)
+    cout << ss2.isEmpty() << endl
+    cout << ss2.size() << endl
+    cout << ss2.capacity() << endl
+    cout << ss2.contains(53) << endl
+    cout << ss2.contains(106) << endl
+    cout << ss2.contains(4) << endl
+    cout << ss2.contains(9999) << endl
+    cout << ss.isEmpty() << endl
+    cout << ss.size() << endl
+    cout << ss.capacity() << endl
+    cout << ss.contains(10) << endl
 /*<<>>*/
 
 fun test6()
-{
-    var ss = SortedSet(Int, Less(Int), Equal(Int))(makeList().all());
-
-    ss.reserve(1000);
-    cout << ss.isEmpty() << endl;
-    cout << ss.size() << endl;
-    cout << ss.capacity() << endl;
-    cout << ss.contains(53) << endl;
-    cout << ss.contains(106) << endl;
-    cout << ss.contains(4) << endl;
-    cout << ss.contains(9999) << endl;
-}
+    var ss = SortedSet(Int, Less(Int), Equal(Int))(makeList().all())
+
+    ss.reserve(1000)
+    cout << ss.isEmpty() << endl
+    cout << ss.size() << endl
+    cout << ss.capacity() << endl
+    cout << ss.contains(53) << endl
+    cout << ss.contains(106) << endl
+    cout << ss.contains(4) << endl
+    cout << ss.contains(9999) << endl
 /*<<>>*/
 
 fun test7()
-{
-    var ss = SortedSet(Int, Less(Int), Equal(Int))(makeList().all());
+    var ss = SortedSet(Int, Less(Int), Equal(Int))(makeList().all())
 
-    printRange(ss.all());
-}
+    printRange(ss.all())
 /*<<>>*/
 
 fun test8()
-{
-    var ss = SortedSet(Int, Less(Int), Equal(Int))(0 .. 10);
+    var ss = SortedSet(Int, Less(Int), Equal(Int))(0 .. 10)
 
-    ss.insert(5);
-    cout << ss.contains(5) << endl;
-}
+    ss.insert(5)
+    cout << ss.contains(5) << endl
 /*<<>>*/
 
 fun test9()
-{
-    var ss = SortedSet(Int, Less(Int), Equal(Int))(0 .. 10);
+    var ss = SortedSet(Int, Less(Int), Equal(Int))(0 .. 10)
 
-    ss.insert(5 .. 15);
-    printRange(ss.all());
-}
+    ss.insert(5 .. 15)
+    printRange(ss.all())
 /*<<>>*/
 
 fun test10()
-{
-    var ss = SortedSet(Int, Less(Int), Equal(Int))(0 .. 10);
-
-    ss.remove(5);
-    printRange(ss.all());
-    ss.remove(20);
-    printRange(ss.all());
-}
+    var ss = SortedSet(Int, Less(Int), Equal(Int))(0 .. 10)
+
+    ss.remove(5)
+    printRange(ss.all())
+    ss.remove(20)
+    printRange(ss.all())
 /*<<>>*/
 
 fun test11()
-{
-    var ss = SortedSet(Int, Less(Int), Equal(Int))(makeList().all());
-
-    ss.remove(ss.equalRange(8));
-    printRange(ss.all());
-    cout << ss.size() << endl;
-    ss.remove(ss.equalRange(106));
-    printRange(ss.all());
-    cout << ss.size() << endl;
-    ss.remove(ss.equalRange(101));
-    printRange(ss.all());
-    cout << ss.size() << endl;
-    ss.remove(ss.equalRange(1000));
-    printRange(ss.all());
-    cout << ss.size() << endl;
-    ss.remove(ss.all());
-    printRange(ss.all());
-    cout << ss.size() << endl;
-    ss = SortedSet(Int, Less(Int), Equal(Int))(makeList().all());
-
-    var r = ss.all();
-
-    r.popFront();
-    ss.remove(r);
-    printRange(ss.all());
-    cout << ss.size() << endl;
-}
+    var ss = SortedSet(Int, Less(Int), Equal(Int))(makeList().all())
+
+    ss.remove(ss.equalRange(8))
+    printRange(ss.all())
+    cout << ss.size() << endl
+    ss.remove(ss.equalRange(106))
+    printRange(ss.all())
+    cout << ss.size() << endl
+    ss.remove(ss.equalRange(101))
+    printRange(ss.all())
+    cout << ss.size() << endl
+    ss.remove(ss.equalRange(1000))
+    printRange(ss.all())
+    cout << ss.size() << endl
+    ss.remove(ss.all())
+    printRange(ss.all())
+    cout << ss.size() << endl
+    ss = SortedSet(Int, Less(Int), Equal(Int))(makeList().all())
+
+    var r = ss.all()
+
+    r.popFront()
+    ss.remove(r)
+    printRange(ss.all())
+    cout << ss.size() << endl
 /*<<>>*/
 
 fun test12()
-{
-    var ss = SortedSet(Int, Less(Int), Equal(Int))(0 .. 10);
+    var ss = SortedSet(Int, Less(Int), Equal(Int))(0 .. 10)
 
-    cout << ss.contains(7) << endl;
-    cout << ss.contains(53) << endl;
-    cout << ss.contains(12) << endl;
-}
+    cout << ss.contains(7) << endl
+    cout << ss.contains(53) << endl
+    cout << ss.contains(12) << endl
 /*<<>>*/
 
 fun test13()
-{
-    var ss = SortedSet(Int, Less(Int), Equal(Int))(0 .. 10);
-
-    ss.insert(5);
-    cout << ss.count(5) << endl;
-    cout << ss.count(1) << endl;
-    cout << ss.count(53) << endl;
-}
+    var ss = SortedSet(Int, Less(Int), Equal(Int))(0 .. 10)
+
+    ss.insert(5)
+    cout << ss.count(5) << endl
+    cout << ss.count(1) << endl
+    cout << ss.count(53) << endl
 /*<<>>*/
 
 fun test14()
-{
-    var ss: SortedSet(Int, Less(Int), Equal(Int));
-
-    ss.insert(0 .. 10);
-    printRange(ss.equalRange(5));
-    ss.insert(5);
-    printRange(ss.equalRange(5));
-    ss.insert(58);
-    printRange(ss.equalRange(5));
-    printRange(ss.equalRange(58));
-    printRange(ss.equalRange(111));
-    printRange(ss.equalRange(100));
-}
+    var ss: SortedSet(Int, Less(Int), Equal(Int))
+
+    ss.insert(0 .. 10)
+    printRange(ss.equalRange(5))
+    ss.insert(5)
+    printRange(ss.equalRange(5))
+    ss.insert(58)
+    printRange(ss.equalRange(5))
+    printRange(ss.equalRange(58))
+    printRange(ss.equalRange(111))
+    printRange(ss.equalRange(100))
 /*<<>>*/
 
 fun test15()
-{
-    var ss = SortedSet(Int, Less(Int), Equal(Int))(0 .. 10);
+    var ss = SortedSet(Int, Less(Int), Equal(Int))(0 .. 10)
 
-    printRange(ss.find(5));
-    printRange(ss.find(10));
-    printRange(ss.find(53));
-}
+    printRange(ss.find(5))
+    printRange(ss.find(10))
+    printRange(ss.find(53))
 /*<<>>*/
 
 fun test16()
-{
-    var ss = SortedSet(Int, Less(Int), Equal(Int))(0 .. 10);
-
-    ss.clear();
-    cout << ss.isEmpty() << endl;
-    printRange(ss.all());
-    cout << ss.contains(4) << endl;
-}
+    var ss = SortedSet(Int, Less(Int), Equal(Int))(0 .. 10)
+
+    ss.clear()
+    cout << ss.isEmpty() << endl
+    printRange(ss.all())
+    cout << ss.contains(4) << endl
 /*<<>>*/
 
 fun test17()
-{
-    var ss1 = SortedSet(Int, Less(Int), Equal(Int))(0 .. 10);
-    var ss2: SortedSet(Int, Less(Int), Equal(Int));
-
-    ss2 = ss1;
-    printRange(ss2.all());
-    ss1 = ss1;
-    printRange(ss1.all());
-}
+    var ss1 = SortedSet(Int, Less(Int), Equal(Int))(0 .. 10)
+    var ss2: SortedSet(Int, Less(Int), Equal(Int))
+
+    ss2 = ss1
+    printRange(ss2.all())
+    ss1 = ss1
+    printRange(ss1.all())
 /*<<>>*/
 
 fun test18()
-{
-    var ss1 = SortedSet(Int, Less(Int), Equal(Int))(makeList().all());
-    var ss2 = ss1;
-    var ss3: SortedSet(Int, Less(Int), Equal(Int));
-    var ss4 = SortedSet(Int, Less(Int), Equal(Int))(0 .. 10);
-
-    cout << ss1 == ss2 << endl;
-    cout << ss1 != ss2 << endl;
-    cout << ss1 == ss3 << endl;
-    cout << ss1 != ss3 << endl;
-    cout << ss1 == ss4 << endl;
-    cout << ss1 != ss4 << endl;
-    cout << ss3 == ss3 << endl;
-    cout << ss3 != ss3 << endl;
-    ss4.clear();
-    cout << ss3 == ss4 << endl;
-    cout << ss3 != ss4 << endl;
-    ss2.remove(53);
-    cout << ss1 == ss2 << endl;
-    cout << ss1 != ss2 << endl;
-}
+    var ss1 = SortedSet(Int, Less(Int), Equal(Int))(makeList().all())
+    var ss2 = ss1
+    var ss3: SortedSet(Int, Less(Int), Equal(Int))
+    var ss4 = SortedSet(Int, Less(Int), Equal(Int))(0 .. 10)
+
+    cout << ss1 == ss2 << endl
+    cout << ss1 != ss2 << endl
+    cout << ss1 == ss3 << endl
+    cout << ss1 != ss3 << endl
+    cout << ss1 == ss4 << endl
+    cout << ss1 != ss4 << endl
+    cout << ss3 == ss3 << endl
+    cout << ss3 != ss3 << endl
+    ss4.clear()
+    cout << ss3 == ss4 << endl
+    cout << ss3 != ss4 << endl
+    ss2.remove(53)
+    cout << ss1 == ss2 << endl
+    cout << ss1 != ss2 << endl
 /*<<>>*/
 
 fun test19()
-{
-    var ss = SortedSet(Int, Less(Int), Equal(Int))(0 .. 1000);
+    var ss = SortedSet(Int, Less(Int), Equal(Int))(0 .. 1000)
 
     for i = numericRange(0, 1000)
-    {
         if ( !ss.contains(i) )
-            cout << "Test failed" << endl;
-    }
-}
+            cout << "Test failed" << endl
 /*<<>>*/
diff --git a/tests/StdLib/StaticArrayTest.spr b/tests/StdLib/StaticArrayTest.spr
index dadb61de..14710980 100644
--- a/tests/StdLib/StaticArrayTest.spr
+++ b/tests/StdLib/StaticArrayTest.spr
@@ -1,13 +1,12 @@
 //!!
-import std.staticArray;
-import std.contiguousMemoryRange;
-import std.rawPtr;
+import std.staticArray
+import std.contiguousMemoryRange
+import std.rawPtr
 
 fun sprMain
-{
     if ( programArgs.size() < 2 )
-        return;
-    var n = programArgs(1) asInt;
+        return
+    var n = programArgs(1) asInt
 
     if      n == 1  ; test1
     else if n == 2  ; test2
@@ -21,55 +20,42 @@ fun sprMain
     else if n == 10 ; test10
     else if n == 11 ; test11
     else if n == 12 ; test12
-}
 
 [initCtor]
 datatype MyObj
-    x: Int;
+    x: Int
 
 fun createRangeAscending(size: SizeType): ContiguousMemoryRange(MyObj)
-{
-    var ptr = allocRawPtr(MyObj, size);
-    var ptrEnd = ptr.advance(DiffType(size));
-    var i = 0;
+    var ptr = allocRawPtr(MyObj, size)
+    var ptrEnd = ptr.advance(DiffType(size))
+    var i = 0
 
-    while i < size ; i = i + 1;
-    {
-        var o: @AnyType = ptr.advance(i).value();
+    while i < size ; i = i + 1
+        var o: @AnyType = ptr.advance(i).value()
 
-        o.x = i;
-    }
+        o.x = i
 
-    return ContiguousMemoryRange(MyObj)(ptr, ptrEnd);
-}
+    return ContiguousMemoryRange(MyObj)(ptr, ptrEnd)
 
 fun printStaticArray(a: @AnyType)
-{
-    var i = 0;
+    var i = 0
 
-    while i < a.size() ; i = i + 1;
-    {
-        cout << a.at(i).x;
+    while i < a.size() ; i = i + 1
+        cout << a.at(i).x
         if ( i < a.size() - 1 )
-            cout << ' ';
+            cout << ' '
         else
-            cout << endl;
-    }
-}
+            cout << endl
 
 fun printSizeInfo(a: @AnyType)
-{
-    cout << a.isEmpty() << endl;
-    cout << a.size() << endl;
-}
+    cout << a.isEmpty() << endl
+    cout << a.size() << endl
 
 fun test1()
-{
-    var a: StaticArray(MyObj, 10);
+    var a: StaticArray(MyObj, 10)
 
-    printSizeInfo(a);
-    printStaticArray(a);
-}
+    printSizeInfo(a)
+    printStaticArray(a)
 /*<<>>*/
 
 fun test2()
-{
-    var a: StaticArray(MyObj, 10) = MyObj(15);
+    var a: StaticArray(MyObj, 10) = MyObj(15)
 
-    printSizeInfo(a);
-    printStaticArray(a);
-}
+    printSizeInfo(a)
+    printStaticArray(a)
 /*<<>>*/
 
 fun test3()
-{
-    var a: StaticArray(MyObj, 10) = createRangeAscending(10);
+    var a: StaticArray(MyObj, 10) = createRangeAscending(10)
 
-    printSizeInfo(a);
-    printStaticArray(a);
-}
+    printSizeInfo(a)
+    printStaticArray(a)
 /*<<>>*/
 
 fun test4()
-{
-    var a1: StaticArray(MyObj, 4);
-    var a2 = StaticArray(MyObj, 4)(createRangeAscending(4));
-    var a3: StaticArray(MyObj, 4) = a1;
-    var a4 = a2;
-
-    printSizeInfo(a3);
-    printSizeInfo(a4);
-    printStaticArray(a4);
-}
+    var a1: StaticArray(MyObj, 4)
+    var a2 = StaticArray(MyObj, 4)(createRangeAscending(4))
+    var a3: StaticArray(MyObj, 4) = a1
+    var a4 = a2
+
+    printSizeInfo(a3)
+    printSizeInfo(a4)
+    printStaticArray(a4)
 /*<<>>*/
 
 fun test6()
-{
-    var a = StaticArray(MyObj, 8)(createRangeAscending(8));
+    var a = StaticArray(MyObj, 8)(createRangeAscending(8))
 
-    a.at(1).x = 111;
-    a.at(5).x = 555;
-    printStaticArray(a);
-}
+    a.at(1).x = 111
+    a.at(5).x = 555
+    printStaticArray(a)
 /*<<>>*/
 
 fun test7()
-{
-    var a = StaticArray(MyObj, 4)(createRangeAscending(4));
-    var r = a.all();
-
-    while !r.isEmpty() ; r.popFront();
-        cout << r.front().x << endl;
-    r = ContiguousMemoryRange(MyObj)(a.all());
-    while !r.isEmpty() ; r.popFront();
-        r.front().x = r.front().x + 1;
-    printSizeInfo(a);
-    printStaticArray(a);
-}
+    var a = StaticArray(MyObj, 4)(createRangeAscending(4))
+    var r = a.all()
+
+    while !r.isEmpty() ; r.popFront()
+        cout << r.front().x << endl
+    r = ContiguousMemoryRange(MyObj)(a.all())
+    while !r.isEmpty() ; r.popFront()
+        r.front().x = r.front().x + 1
+    printSizeInfo(a)
+    printStaticArray(a)
 /*<<>>*/
 
 fun test8()
-{
-    var a1: StaticArray(MyObj, 5);
-    var a2 = StaticArray(MyObj, 8)(createRangeAscending(8));
-    var a3 = StaticArray(MyObj, 4)(createRangeAscending(4));
-
-    a1.assign(createRangeAscending(5));
-    printSizeInfo(a1);
-    a2.assign(createRangeAscending(4));
-    printSizeInfo(a2);
-    printStaticArray(a2);
-    a3.at(0) = MyObj(3);
-    a3.at(1) = MyObj(2);
-    a3.at(2) = MyObj(1);
-    a3.at(3) = MyObj(0);
-    a3.assign(createRangeAscending(4));
-    printSizeInfo(a3);
-    printStaticArray(a3);
-}
+    var a1: StaticArray(MyObj, 5)
+    var a2 = StaticArray(MyObj, 8)(createRangeAscending(8))
+    var a3 = StaticArray(MyObj, 4)(createRangeAscending(4))
+
+    a1.assign(createRangeAscending(5))
+    printSizeInfo(a1)
+    a2.assign(createRangeAscending(4))
+    printSizeInfo(a2)
+    printStaticArray(a2)
+    a3.at(0) = MyObj(3)
+    a3.at(1) = MyObj(2)
+    a3.at(2) = MyObj(1)
+    a3.at(3) = MyObj(0)
+    a3.assign(createRangeAscending(4))
+    printSizeInfo(a3)
+    printStaticArray(a3)
 /*<<>>*/
 
 fun test9()
-{
-    var a1: StaticArray(MyObj, 6);
-    var a2 = StaticArray(MyObj, 6)(createRangeAscending(6));
-
-    a2 = a1;
-    printSizeInfo(a2);
-    printStaticArray(a2);
-    printSizeInfo(a1 = a2);
-    printStaticArray(a1);
-}
+    var a1: StaticArray(MyObj, 6)
+    var a2 = StaticArray(MyObj, 6)(createRangeAscending(6))
+
+    a2 = a1
+    printSizeInfo(a2)
+    printStaticArray(a2)
+    printSizeInfo(a1 = a2)
+    printStaticArray(a1)
 /*<<>>*/
 
 fun test10()
-{
-    var a1 = StaticArray(MyObj, 4)(createRangeAscending(4));
-    var a2 = StaticArray(MyObj, 4)(createRangeAscending(4));
-    var a3 = StaticArray(MyObj, 4)(createRangeAscending(4));
+    var a1 = StaticArray(MyObj, 4)(createRangeAscending(4))
+    var a2 = StaticArray(MyObj, 4)(createRangeAscending(4))
+    var a3 = StaticArray(MyObj, 4)(createRangeAscending(4))
 
-    a3.at(2) = MyObj(10);
-    cout << a1 == a2 << endl;
-    cout << a1 == a3 << endl;
-}
+    a3.at(2) = MyObj(10)
+    cout << a1 == a2 << endl
+    cout << a1 == a3 << endl
 /*<<>>*/
 
 fun test11()
-{
-    var a = StaticArray(MyObj, 1000)(createRangeAscending(1000));
-    var i = 0;
+    var a = StaticArray(MyObj, 1000)(createRangeAscending(1000))
+    var i = 0
 
-    printSizeInfo(a);
-    while i < a.size() ; i = i + 1;
-    {
+    printSizeInfo(a)
+    while i < a.size() ; i = i + 1
         if ( a.at(i).x != i )
-            cout << "test failed" << endl;
-    }
+            cout << "test failed" << endl
 
-    var aa = a;
+    var aa = a
 
-    i = 0;
-    printSizeInfo(aa);
-    while i < aa.size() ; i = i + 1;
-    {
+    i = 0
+    printSizeInfo(aa)
+    while i < aa.size() ; i = i + 1
         if ( aa.at(i).x != i )
-            cout << "test failed" << endl;
-    }
+            cout << "test failed" << endl
 
-    var aaa = StaticArray(MyObj, 1000)();
+    var aaa = StaticArray(MyObj, 1000)()
 
-    aaa.assign(createRangeAscending(1000));
-    i = 0;
-    printSizeInfo(aaa);
-    while i < aaa.size() ; i = i + 1;
-    {
+    aaa.assign(createRangeAscending(1000))
+    i = 0
+    printSizeInfo(aaa)
+    while i < aaa.size() ; i = i + 1
         if ( aaa.at(i).x != i )
-            cout << "test failed" << endl;
-    }
-}
+            cout << "test failed" << endl
 /*<<>>*/
 
 fun test12()
-{
-    var v = StaticArray(MyObj, 8)(createRangeAscending(8));
-    var r = v.subrange(0, 0);
-
-    while !r.isEmpty() ; r.popFront();
-        cout << r.front().x << endl;
-    r = v.subrange(0, 1);
-    while !r.isEmpty() ; r.popFront();
-        cout << r.front().x << endl;
-    r = v.subrange(2, 3);
-    while !r.isEmpty() ; r.popFront();
-        cout << r.front().x << endl;
-    r = v.subrange(0, v.size());
-    while !r.isEmpty() ; r.popFront();
-        cout << r.front().x << endl;
-}
+    var v = StaticArray(MyObj, 8)(createRangeAscending(8))
+    var r = v.subrange(0, 0)
+
+    while !r.isEmpty() ; r.popFront()
+        cout << r.front().x << endl
+    r = v.subrange(0, 1)
+    while !r.isEmpty() ; r.popFront()
+        cout << r.front().x << endl
+    r = v.subrange(2, 3)
+    while !r.isEmpty() ; r.popFront()
+        cout << r.front().x << endl
+    r = v.subrange(0, v.size())
+    while !r.isEmpty() ; r.popFront()
+        cout << r.front().x << endl
 /*<<>(o: MyObj1, os: @OutStream) {
-    os << o.x;
-}
-fun >>(o: MyObj2, os: @OutStream) {
-    os << o.x << '#' << o.y;
-}
+fun >>(o: MyObj1, os: @OutStream) 
+    os << o.x
+fun >>(o: MyObj2, os: @OutStream) 
+    os << o.x << '#' << o.y
 
-using T2 = Tuple(MyObj1, MyObj2);
-using T4 = Tuple(MyObj1, MyObj2, Int rt, Bool rt);
+using T2 = Tuple(MyObj1, MyObj2)
+using T4 = Tuple(MyObj1, MyObj2, Int rt, Bool rt)
 
-fun arbitrary(t: Type): T2 Gen if t == T2 {
-    return mkGen(T2, \generateT2);
-}
+fun arbitrary(t: Type): T2 Gen if t == T2 
+    return mkGen(T2, \generateT2)
 
-fun arbitrary(t: Type): T4 Gen if t == T4 {
-    return mkGen(T4, \generateT4);
-}
+fun arbitrary(t: Type): T4 Gen if t == T4 
+    return mkGen(T4, \generateT4)
 
 //! Generate an arbitrary tuple 2
-fun generateT2(sizeHint: UInt): T2 {
-    var res: T2;
-    var h: Int = sizeHint + 5;
-    res.v1.x = randBetween(-h, h+1);
-    res.v2.x = randBetween(-h, h+1);
-    res.v2.y = randBetween(-h, h+1);
-    return res;
-}
+fun generateT2(sizeHint: UInt): T2 
+    var res: T2
+    var h: Int = sizeHint + 5
+    res.v1.x = randBetween(-h, h+1)
+    res.v2.x = randBetween(-h, h+1)
+    res.v2.y = randBetween(-h, h+1)
+    return res
 //! Generate an arbitrary tuple 4
-fun generateT4(sizeHint: UInt): T4 {
-    var res: T4;
-    var h: Int = sizeHint + 5;
-    res.v1.x = randBetween(-h, h+1);
-    res.v2.x = randBetween(-h, h+1);
-    res.v2.y = randBetween(-h, h+1);
-    res.v3 = randBetween(-h, h+1);
-    res.v4 = randBetween(0, 1) > 0;
-    return res;
-}
-
-fun isDefault2(t: T2) = t.v1.x == 0 && t.v2.x == 0 && t.v2.y == 0;
-fun isDefault4(t: T4) = t.v1.x == 0 && t.v2.x == 0 && t.v2.y == 0 && t.v3 == 0 && t.v4 == false;
-
-fun sprMain {
-    var t2_1 = MyObj1(3) ~ MyObj2(4,5);
-    var t4_1 = MyObj1(3) ~ MyObj2(4,5) ~ 6 ~ true;
-    var t2_2 = t2_1;
-    var t4_2 = t4_1;
-    var t2_3 = MyObj1(9999) ~ MyObj2(4,5);
-    var t4_3 = MyObj1(9999) ~ MyObj2(4,5) ~ 6 ~ true;
-
-    forAll(repeat(T2(), 3)) check \isDefault2 ~ "tuple's default ctor";
-    forAll(repeat(T4(), 3)) check \isDefault4 ~ "tuple's default ctor";
-
-    forAll(repeat(t2_1, 3)) check (fun x = !isDefault2(x)) ~ "tuple's values ctor";
-    forAll(repeat(t4_1, 3)) check (fun x = !isDefault4(x)) ~ "tuple's values ctor";
-
-    forAll(repeat(t2_2, 3)) check (fun.{t2_1} x = x == t2_1) ~ "tuple's copy ctor (and equality)";
-    forAll(repeat(t4_2, 3)) check (fun.{t4_1} x = x == t4_1) ~ "tuple's copy ctor (and equality)";
-
-    forAll(T2 arbitrary) check (fun.{t2_3} x = x != t2_3) ~ "tuple's inequality";
+fun generateT4(sizeHint: UInt): T4 
+    var res: T4
+    var h: Int = sizeHint + 5
+    res.v1.x = randBetween(-h, h+1)
+    res.v2.x = randBetween(-h, h+1)
+    res.v2.y = randBetween(-h, h+1)
+    res.v3 = randBetween(-h, h+1)
+    res.v4 = randBetween(0, 1) > 0
+    return res
+
+fun isDefault2(t: T2) = t.v1.x == 0 && t.v2.x == 0 && t.v2.y == 0
+fun isDefault4(t: T4) = t.v1.x == 0 && t.v2.x == 0 && t.v2.y == 0 && t.v3 == 0 && t.v4 == false
+
+fun sprMain 
+    var t2_1 = MyObj1(3) ~ MyObj2(4,5)
+    var t4_1 = MyObj1(3) ~ MyObj2(4,5) ~ 6 ~ true
+    var t2_2 = t2_1
+    var t4_2 = t4_1
+    var t2_3 = MyObj1(9999) ~ MyObj2(4,5)
+    var t4_3 = MyObj1(9999) ~ MyObj2(4,5) ~ 6 ~ true
+
+    forAll(repeat(T2(), 3)) check \isDefault2 ~ "tuple's default ctor"
+    forAll(repeat(T4(), 3)) check \isDefault4 ~ "tuple's default ctor"
+
+    forAll(repeat(t2_1, 3)) check (fun x = !isDefault2(x)) ~ "tuple's values ctor"
+    forAll(repeat(t4_1, 3)) check (fun x = !isDefault4(x)) ~ "tuple's values ctor"
+
+    forAll(repeat(t2_2, 3)) check (fun.{t2_1} x = x == t2_1) ~ "tuple's copy ctor (and equality)"
+    forAll(repeat(t4_2, 3)) check (fun.{t4_1} x = x == t4_1) ~ "tuple's copy ctor (and equality)"
+
+    forAll(T2 arbitrary) check (fun.{t2_3} x = x != t2_3) ~ "tuple's inequality"
 
     // Assignment
-    t2_2 = t2_3;
-    t4_2 = t4_3;
-    forAll(repeat(t2_2, 3)) check (fun.{t2_3} x = x == t2_3) ~ "tuple's assignment";
-    forAll(repeat(t4_2, 3)) check (fun.{t4_3} x = x == t4_3) ~ "tuple's assignment";
+    t2_2 = t2_3
+    t4_2 = t4_3
+    forAll(repeat(t2_2, 3)) check (fun.{t2_3} x = x == t2_3) ~ "tuple's assignment"
+    forAll(repeat(t4_2, 3)) check (fun.{t4_3} x = x == t4_3) ~ "tuple's assignment"
 
-    forAll(T2 arbitrary) check (fun x = (x first) == x.v1) ~ "first function";
-    forAll(T4 arbitrary) check (fun x = (x first) == x.v1) ~ "first function";
-    forAll(T2 arbitrary) check (fun x = (x second) == x.v2) ~ "second function";
-    forAll(T4 arbitrary) check (fun x = (x second) == x.v2) ~ "second function";
+    forAll(T2 arbitrary) check (fun x = (x first) == x.v1) ~ "first function"
+    forAll(T4 arbitrary) check (fun x = (x first) == x.v1) ~ "first function"
+    forAll(T2 arbitrary) check (fun x = (x second) == x.v2) ~ "second function"
+    forAll(T4 arbitrary) check (fun x = (x second) == x.v2) ~ "second function"
 
-    forAll(T4 arbitrary) check (fun x = (x tail).v1 == x.v2 && tail(tail(x)).v1 == x.v3 && tail(tail(x)).v2 == x.v4) ~ "tail function";
+    forAll(T4 arbitrary) check (fun x = (x tail).v1 == x.v2 && tail(tail(x)).v1 == x.v3 && tail(tail(x)).v2 == x.v4) ~ "tail function"
 
     // Constructing types
-    var a: Int * Bool;
-    var b: MyObj1 * MyObj2;
+    var a: Int * Bool
+    var b: MyObj1 * MyObj2
     //var b: MyObj1 * MyObj2 * Int;
     //var b: MyObj1 * MyObj2 * Int * Bool;
     [ct] if ( MyObj1 * MyObj2 != T2 ) { cout << "FAILURE: cannot construct tuple types (T2)" << endl; }
     //[ct] if ( MyObj1 * MyObj2 * Int * Bool != T4 ) { cout << "FAILURE: cannot construct tuple types (T4)" << endl; }
-}
 
 //<<< Tuple checks
diff --git a/tests/StdLib/VectorCtTest.spr b/tests/StdLib/VectorCtTest.spr
index 030b6733..b3bd78ed 100644
--- a/tests/StdLib/VectorCtTest.spr
+++ b/tests/StdLib/VectorCtTest.spr
@@ -1,53 +1,41 @@
 //!!
-import std.vector;
-import std.contiguousMemoryRange;
-import std.rawPtr;
+import std.vector
+import std.contiguousMemoryRange
+import std.rawPtr
 
 fun sprMain
-{
     if ( programArgs.size() < 2 )
-        return;
-    var n = programArgs(1) asInt;
+        return
+    var n = programArgs(1) asInt
 
     if      n == 1; test1
     else if n == 2; test2
-}
 
 [initCtor]
 datatype MyObj
     x: Int
 
 [ct] fun createRangeAscending(size: SizeType): ContiguousMemoryRange(MyObj)
-{
-    var ptr = allocRawPtr(MyObj, size);
-    var ptrEnd = ptr.advance(DiffType(size));
-    var i = 0;
+    var ptr = allocRawPtr(MyObj, size)
+    var ptrEnd = ptr.advance(DiffType(size))
+    var i = 0
 
-    while i < size ; i = i + 1;
-    {
-        var o: @MyObj = ptr.advance(i).value();
+    while i < size ; i = i + 1
+        var o: @MyObj = ptr.advance(i).value()
 
-        o.x = i;
-    }
+        o.x = i
 
-    return ContiguousMemoryRange(MyObj)(ptr, ptrEnd);
-}
+    return ContiguousMemoryRange(MyObj)(ptr, ptrEnd)
 
 [ct] fun createVector(size: SizeType): Vector(MyObj)
-{
-    var v = Vector(MyObj)(createRangeAscending(size));
-    return v;
-}
+    var v = Vector(MyObj)(createRangeAscending(size))
+    return v
 
 fun test1()
-{
-    [ct] var v = createVector(10);
-    cout << v.size() << endl;
+    [ct] var v = createVector(10)
+    cout << v.size() << endl
     [ct] for el = v.all()
-    {
-        cout << ctEval(el.x) << endl;
-    }
-}
+        cout << ctEval(el.x) << endl
 /*<<>>*/
 
 fun test2()
-{
-    [ct] var v = createVector(10);
-    var v2: Vector(MyObj) = v;
-    cout << v2.size() << endl;
+    [ct] var v = createVector(10)
+    var v2: Vector(MyObj) = v
+    cout << v2.size() << endl
     for el = v2.all()
-    {
-        cout << el.x << endl;
-    }
-}
+        cout << el.x << endl
 /*<< 0) ~ "that size is syncrhonized with isEmpty";
+    forAll(repeat(Vec(), 3)) check (fun x = x.isEmpty && x.size == 0) ~ "that a vector can be empty"
+    forAll(Vec arbitrary) check (fun x = x.isEmpty || x.size > 0) ~ "that size is syncrhonized with isEmpty"
 
     forAll(TestRange arbitrary) check (fun r: Bool {
-            var v: Vec = r;
-            if ( v.isEmpty != r.isEmpty ) return false;
-            if ( v.size != (r rangeSize) ) return false;
-            var sz = v.size;
-            for i = 0..sz {
-                if ( v(i) != r.front ) return false;
-                r.popFront;
-            }
-            return true;
-    }) ~ "vector's range constructor";
+            var v: Vec = r
+            if ( v.isEmpty != r.isEmpty ) return false
+            if ( v.size != (r rangeSize) ) return false
+            var sz = v.size
+            for i = 0..sz 
+                if ( v(i) != r.front ) return false
+                r.popFront
+            return true
+    }) ~ "vector's range constructor"
 
     forAll(Vec arbitrary) check (fun vec: Bool {
-            var vec2: Vec = vec;
-            if ( vec2.isEmpty != vec.isEmpty ) return false;
-            if ( vec2.size != vec.size ) return false;
-            for i = 0..vec.size {
-                if ( vec2(i) != vec(i) ) return false;
-            }
-            return true;
-    }) ~ "vector's copy constructor";
+            var vec2: Vec = vec
+            if ( vec2.isEmpty != vec.isEmpty ) return false
+            if ( vec2.size != vec.size ) return false
+            for i = 0..vec.size 
+                if ( vec2(i) != vec(i) ) return false
+            return true
+    }) ~ "vector's copy constructor"
 
     forAll(DataVec arbitrary) check (fun (vec: DataVec): Bool {
             copyCtorCnt = 0
@@ -48,276 +45,265 @@ fun sprMain
                 if vec2(i) != vec(i)
                     return false
             if copyCtorCnt != 0
-                return false;
+                return false
             return true
-    }) ~ "vector's copy constructor (Data); no copy ctor";
+    }) ~ "vector's copy constructor (Data); no copy ctor"
 
     forAll(SizeType) check (fun sz: Bool {
-            var vec: Vec = sz;
-            if ( vec.size != sz ) return false;
-            for i = 0..sz {
-                if ( vec(i) != Vec.ValueType() ) return false;
-            }
-            return true;
-    }) ~ "vector's sized constructor";
+            var vec: Vec = sz
+            if ( vec.size != sz ) return false
+            for i = 0..sz 
+                if ( vec(i) != Vec.ValueType() ) return false
+            return true
+    }) ~ "vector's sized constructor"
 
     // TODO: swap
 
     forAll(Vec arbitrary) check(fun vec: Bool {
-            return vec.capacity >= vec.size;
-    }) ~ "that capacity is always greater or equal to size";
+            return vec.capacity >= vec.size
+    }) ~ "that capacity is always greater or equal to size"
 
     forAll(repeat(Vec(), 3)) check (fun vec: Bool {
-            return vec.capacity == 0;
-    }) ~ "that we have zero capacity of empty vectors";
+            return vec.capacity == 0
+    }) ~ "that we have zero capacity of empty vectors"
 
     forAll(Vec arbitrary) check(fun vec: Bool {
-            for i = 0..vec.size {
-                if ( vec(i) != vec.at(i) ) return false;
-            }
-            return true;
-    }) ~ "that at function yields the same as call operator";
+            for i = 0..vec.size 
+                if ( vec(i) != vec.at(i) ) return false
+            return true
+    }) ~ "that at function yields the same as call operator"
 
     forAll(Vec arbitrary) check(fun vec: Bool {
             return vec.isEmpty \
-                || vec.front == vec(0);
-    }) ~ "vector's front";
+                || vec.front == vec(0)
+    }) ~ "vector's front"
 
     forAll(Vec arbitrary) check(fun vec: Bool {
             return vec.isEmpty \
-                || vec.back == vec(vec.size-1);
-    }) ~ "vector's back";
+                || vec.back == vec(vec.size-1)
+    }) ~ "vector's back"
 
     forAll(Vec arbitrary) check(fun vec: Bool {
-            var r = vec.all;
-            if ( vec.size != (r rangeSize) ) return false;
-            for i = 0..vec.size {
-                if ( vec(i) != r.front ) return false;
-                r.popFront;
-            }
-            return r.isEmpty;
-    }) ~ "vector's returning range";
+            var r = vec.all
+            if ( vec.size != (r rangeSize) ) return false
+            for i = 0..vec.size 
+                if ( vec(i) != r.front ) return false
+                r.popFront
+            return r.isEmpty
+    }) ~ "vector's returning range"
 
     forAll(SubrangeTestData arbitrary) check(fun td: Bool {
-            var r = td.vec.all skip td.start take td.count;
-            return td.vec.subrange(td.start, td.count) equal r;
+            var r = td.vec.all skip td.start take td.count
+            return td.vec.subrange(td.start, td.count) equal r
 
-    }) ~ "vector's subrange";
+    }) ~ "vector's subrange"
 
     forAll(InsertValueTestData arbitrary) check(fun td: Bool {
-            var v = td.vec;
-            var r = v.subrange(td.idx, v.size-td.idx);
-            v.insertBefore(td.value, r);
+            var v = td.vec
+            var r = v.subrange(td.idx, v.size-td.idx)
+            v.insertBefore(td.value, r)
 
             return (
                    v.size == td.vec.size+1
                 && (v.all take td.idx equal (td.vec.all take td.idx))
                 && v(td.idx) == td.value
                 && (v.all skip (td.idx+1) equal (td.vec.all skip td.idx))
-            );
-    }) ~ "vector's insertBefore with a value";
+            )
+    }) ~ "vector's insertBefore with a value"
 
     forAll(InsertRangeTestData arbitrary) check(fun td: Bool {
-            var v = td.vec;
-            var r = v.subrange(td.idx, v.size-td.idx);
-            v.insertBefore(td.values.all, r);
+            var v = td.vec
+            var r = v.subrange(td.idx, v.size-td.idx)
+            v.insertBefore(td.values.all, r)
 
-            var diff = td.values.size;
+            var diff = td.values.size
             return (
                    v.size == td.vec.size+diff
                 && (v.all take td.idx equal (td.vec.all take td.idx))
                 && (v.subrange(td.idx, diff) equal td.values.all)
                 && (v.all skip (td.idx+diff) equal (td.vec.all skip td.idx))
-            );
-    }) ~ "vector's insertBefore with a range";
+            )
+    }) ~ "vector's insertBefore with a range"
 
     forAll(InsertValueTestData arbitrary) check(fun td: Bool {
-            var v = td.vec;
-            var r = v.subrange(0, td.idx);
-            v.insertAfter(td.value, r);
+            var v = td.vec
+            var r = v.subrange(0, td.idx)
+            v.insertAfter(td.value, r)
 
             return (
                    v.size == td.vec.size+1
                 && (v.all take td.idx equal (td.vec.all take td.idx))
                 && v(td.idx) == td.value
                 && (v.all skip (td.idx+1) equal (td.vec.all skip td.idx))
-            );
-    }) ~ "vector's insertAfter with a value";
+            )
+    }) ~ "vector's insertAfter with a value"
 
     forAll(InsertRangeTestData arbitrary) check(fun td: Bool {
-            var v = td.vec;
-            var r = v.subrange(0, td.idx);
-            v.insertAfter(td.values.all, r);
+            var v = td.vec
+            var r = v.subrange(0, td.idx)
+            v.insertAfter(td.values.all, r)
 
-            var diff = td.values.size;
+            var diff = td.values.size
             return (
                    v.size == td.vec.size+diff
                 && (v.all take td.idx equal (td.vec.all take td.idx))
                 && (v.subrange(td.idx, diff) equal td.values.all)
                 && (v.all skip (td.idx+diff) equal (td.vec.all skip td.idx))
-            );
-    }) ~ "vector's insertAfter with a range";
+            )
+    }) ~ "vector's insertAfter with a range"
 
     forAll(InsertValueTestData arbitrary) check(fun td: Bool {
-            var v = td.vec;
-            v.pushBack(td.value);
+            var v = td.vec
+            v.pushBack(td.value)
             return (
                    v.size == td.vec.size+1
                 && (v.subrange(0, td.vec.size) equal td.vec.all)
                 && v.back == td.value
-            );
-    }) ~ "vector's pushBack";
+            )
+    }) ~ "vector's pushBack"
 
     forAll(InsertValueTestData arbitrary) check(fun td: Bool {
-            var v = td.vec;
-            v += td.value;
+            var v = td.vec
+            v += td.value
             return (
                    v.size == td.vec.size+1
                 && (v.subrange(0, td.vec.size) equal td.vec.all)
                 && v.back == td.value
-            );
-    }) ~ "vector's pushBack operator";
+            )
+    }) ~ "vector's pushBack operator"
 
     forAll(InsertRangeTestData arbitrary) check(fun td: Bool {
-            var v = td.vec;
+            var v = td.vec
             for x = td.values.all
-                v += x;
+                v += x
 
-            var diff = td.values.size;
+            var diff = td.values.size
             return (
                    v.size == td.vec.size+diff
                 && (v.all take td.vec.size equal td.vec.all)
                 && (v.all skip td.vec.size equal td.values.all)
-            );
-    }) ~ "vector's pushBack operator with multiple values";
+            )
+    }) ~ "vector's pushBack operator with multiple values"
 
     forAll(InsertValueTestData arbitrary) check(fun td: Bool {
-            if ( td.vec.isEmpty ) return true;
-            var v = td.vec;
-            v popBack;
-            return v.size == td.vec.size-1;
-    }) ~ "vector's popBack";
+            if ( td.vec.isEmpty ) return true
+            var v = td.vec
+            v popBack
+            return v.size == td.vec.size-1
+    }) ~ "vector's popBack"
 
     forAll(SubrangeTestData arbitrary) check(fun td: Bool {
-            var v = td.vec;
-            v.remove(v.subrange(td.start, td.count));
+            var v = td.vec
+            v.remove(v.subrange(td.start, td.count))
             return (
                    v.size == td.vec.size-td.count
                 && (v.all take td.start equal (td.vec.all take td.start))
                 && (v.all skip td.start equal (td.vec.all skip td.start+td.count))
-            );
-    }) ~ "vector's remove of ranges";
+            )
+    }) ~ "vector's remove of ranges"
 
     forAll(SubrangeTestData arbitrary) check(fun td: Bool {
-            if ( td.vec.isEmpty ) return true;
-            var v = td.vec;
-            v.remove(td.start);
+            if ( td.vec.isEmpty ) return true
+            var v = td.vec
+            v.remove(td.start)
             return (
                    v.size == td.vec.size-1
                 && (v.all take td.start equal (td.vec.all take td.start))
                 && (v.all skip td.start equal (td.vec.all skip td.start+1))
-            );
-    }) ~ "vector's remove of an index";
+            )
+    }) ~ "vector's remove of an index"
 
     forAll(SubrangeTestData arbitrary) check(fun td: Bool {
-            var v = td.vec;
-            v.resize(td.start);
+            var v = td.vec
+            v.resize(td.start)
             return (
                    v.size == td.start
                 && (v.all take td.start equal (td.vec.all take td.start))
-            );
-    }) ~ "vector's resize shrink";
+            )
+    }) ~ "vector's resize shrink"
 
     forAll(SubrangeTestData arbitrary) check ((fun td: Bool {
-            var v = td.vec;
-            v.resize(v.size + td.start);
+            var v = td.vec
+            v.resize(v.size + td.start)
             return (
                    v.size == td.vec.size + td.start
                 && (v.all take td.start equal (td.vec.all take td.start))
                 && (v.all skip td.vec.size equal repeat(Int(), td.start))
-            );
-    }) ~ "vector's resize grow");
+            )
+    }) ~ "vector's resize grow")
 
     forAll(SubrangeTestData arbitrary) check ((fun td: Bool {
-            td.vec clear;
-            return td.vec.isEmpty && td.vec.size == 0;
-    }) ~ "that we can clear a vector");
+            td.vec clear
+            return td.vec.isEmpty && td.vec.size == 0
+    }) ~ "that we can clear a vector")
 
     forAll(InsertRangeTestData arbitrary) check ((fun td: Bool {
-            var v: Vec;
-            v = td.vec;
-            v = td.values;
-            return v.size == td.values.size && v == td.values;
-    }) ~ "assignment operator for vector");
+            var v: Vec
+            v = td.vec
+            v = td.values
+            return v.size == td.values.size && v == td.values
+    }) ~ "assignment operator for vector")
 
     forAll(Vec arbitrary) check ((fun v: Bool {
-            var vec = v;
-            return vec == v && vec == vec && !(vec != v);
-    }) ~ "vector's equality comparison");
-}
+            var vec = v
+            return vec == v && vec == vec && !(vec != v)
+    }) ~ "vector's equality comparison")
 
 //<<< Vector checks
 
 
-using Vec = Vector(Int);
-using TestRange = ContiguousMemoryRange(Int);
+using Vec = Vector(Int)
+using TestRange = ContiguousMemoryRange(Int)
 
-fun arbitrary(t: Type): Vec Gen if t == Vec {
-    return mkGen(Vec, \generateVec);
-}
+fun arbitrary(t: Type): Vec Gen if t == Vec 
+    return mkGen(Vec, \generateVec)
 
-fun arbitrary(t: Type): TestRange Gen if t == TestRange {
-    return mkGen(t, \generateTestRange);
-}
+fun arbitrary(t: Type): TestRange Gen if t == TestRange 
+    return mkGen(t, \generateTestRange)
 
 //! Generate an arbitrary vector
-fun generateVec(sizeHint: UInt): Vec {
-    var res: Vec;
-    var h: Int = sizeHint + 5;
-    var size = randBetween(0, h);
-    res.resize(size);
+fun generateVec(sizeHint: UInt): Vec 
+    var res: Vec
+    var h: Int = sizeHint + 5
+    var size = randBetween(0, h)
+    res.resize(size)
     for i = 0..size
-        res(i) = randBetween(-h, h+1);
-    return res;
-}
+        res(i) = randBetween(-h, h+1)
+    return res
 
 //! Generate an arbitrary test range
-fun generateTestRange(sizeHint: UInt): TestRange {
-    var h: Int = sizeHint + 3;
-    var size = randBetween(0, h+1);
+fun generateTestRange(sizeHint: UInt): TestRange 
+    var h: Int = sizeHint + 3
+    var size = randBetween(0, h+1)
 
     // Allocate a buffer of memory to hold the values
-    var ptr = allocRawPtr(Int, size);
-    var ptrEnd = ptr.advance(size);
+    var ptr = allocRawPtr(Int, size)
+    var ptrEnd = ptr.advance(size)
 
     // Populate with values
-    var i = 0;
-    while i < size ; i = i + 1;
-    {
-        var val: @AnyType = ptr.advance(i).value();
-        val = randBetween(-h, h+1);
-    }
-    return ContiguousMemoryRange(Int)(ptr, ptrEnd);
-}
+    var i = 0
+    while i < size ; i = i + 1
+        var val: @AnyType = ptr.advance(i).value()
+        val = randBetween(-h, h+1)
+    return ContiguousMemoryRange(Int)(ptr, ptrEnd)
 
 
 datatype SubrangeTestData
-    vec: Vec;
-    start, count: SizeType;
+    vec: Vec
+    start, count: SizeType
 
 fun >>(this: @SubrangeTestData, os: @OutStream)
-    os << vec << ", start=" << start << ", count=" << count;
+    os << vec << ", start=" << start << ", count=" << count
 
-fun arbitrary(t: Type): SubrangeTestData Gen if t == SubrangeTestData {
+fun arbitrary(t: Type): SubrangeTestData Gen if t == SubrangeTestData 
     return mkGen(SubrangeTestData, (fun (sizeHint: UInt): SubrangeTestData {
-        var res: SubrangeTestData;
-        res.vec = generateVec(sizeHint);
-        res.count = randBetween(0, res.vec.size);
-        res.start = randBetween(0, res.vec.size-res.count);
-        return res;
+        var res: SubrangeTestData
+        res.vec = generateVec(sizeHint)
+        res.count = randBetween(0, res.vec.size)
+        res.start = randBetween(0, res.vec.size-res.count)
+        return res
 
-    }));
-}
+    }))
 
 datatype InsertValueTestData
     vec: Vec
@@ -325,17 +311,16 @@ datatype InsertValueTestData
     value: Int
 
 fun >>(this: @InsertValueTestData, os: @OutStream)
-    os << vec << ", idx=" << idx << ", value=" << value;
+    os << vec << ", idx=" << idx << ", value=" << value
 
-fun arbitrary(t: Type): InsertValueTestData Gen if t == InsertValueTestData {
+fun arbitrary(t: Type): InsertValueTestData Gen if t == InsertValueTestData 
     return mkGen(InsertValueTestData, (fun (sizeHint: UInt): InsertValueTestData {
-        var res: InsertValueTestData;
-        res.vec = generateVec(sizeHint);
-        res.idx = randBetween(0, res.vec.size);
-        res.value = randBetween(-1000, 1000);
-        return res;
-    }));
-}
+        var res: InsertValueTestData
+        res.vec = generateVec(sizeHint)
+        res.idx = randBetween(0, res.vec.size)
+        res.value = randBetween(-1000, 1000)
+        return res
+    }))
 
 datatype InsertRangeTestData
     vec: Vec
@@ -343,17 +328,16 @@ datatype InsertRangeTestData
     values: Vec
 
 fun >>(this: @InsertRangeTestData, os: @OutStream)
-    os << vec << ", idx=" << idx << ", values=" << values;
+    os << vec << ", idx=" << idx << ", values=" << values
 
-fun arbitrary(t: Type): InsertRangeTestData Gen if t == InsertRangeTestData {
+fun arbitrary(t: Type): InsertRangeTestData Gen if t == InsertRangeTestData 
     return mkGen(InsertRangeTestData, (fun (sizeHint: UInt): InsertRangeTestData {
-        var res: InsertRangeTestData;
-        res.vec = generateVec(sizeHint);
-        res.idx = randBetween(0, res.vec.size);
-        res.values = generateVec(sizeHint);
-        return res;
-    }));
-}
+        var res: InsertRangeTestData
+        res.vec = generateVec(sizeHint)
+        res.idx = randBetween(0, res.vec.size)
+        res.values = generateVec(sizeHint)
+        return res
+    }))
 
 using DataVec = Data Vector
 
diff --git a/tools/formatAll.py b/tools/formatAll.py
new file mode 100755
index 00000000..e5ac88ed
--- /dev/null
+++ b/tools/formatAll.py
@@ -0,0 +1,35 @@
+#!/usr/bin/env python
+
+from __future__ import print_function
+
+import sys, os, subprocess, distutils.spawn, argparse, re
+
+def main():
+    # Parse the arguments
+    parser = argparse.ArgumentParser(description='Formats all the Sparrow files found in a directory')
+    parser.add_argument('--dir', action='store', default='.',
+        help='The directory to search for Sparrow source files')
+    parser.add_argument('--formatArgs', '-a', action='store', default='-format -i',
+        help='Formatting arguments')
+    parser.add_argument('--formatTool', action='store',
+        help='The path to formatTool')
+    args = parser.parse_args()
+
+    formatTool = args.formatTool
+    if not formatTool:
+        baseDir = os.path.os.path.dirname(os.path.realpath(__file__))
+        formatTool = os.path.join(baseDir, 'formatTool.out')
+        print('formatTool: {}'.format(formatTool))
+
+    # Walk all the files/directories in the given
+    for dirName, subdirList, fileList in os.walk(args.dir):
+        for fname in fileList:
+            if fname.endswith('.spr'):
+                fullFilename = os.path.join(dirName, fname)
+                cmd = '{} {} {}'.format(formatTool, args.formatArgs, fullFilename)
+                print('> {}'.format(cmd))
+                os.system(cmd)
+
+if __name__ == "__main__":
+    main()
+

From a6b71c96b7ad56301a735ddcec74c7189b158303 Mon Sep 17 00:00:00 2001
From: Lucian Radu Teodorescu 
Date: Sat, 11 May 2019 23:34:48 +0300
Subject: [PATCH 19/23] Fix bug with layout formatting for some edge cases

---
 tests/Basic/CallCtorDtor.spr             |  2 -
 tests/Basic/datatype/initCtor.spr        |  2 -
 tests/Basic/datatype/syntax.spr          |  2 -
 tests/Basic2/Swappable.spr               |  2 -
 tests/Frontend/Smoke.spr                 | 16 +++----
 tests/PerfTests/Hash/TestHashPerf.spr    |  6 +--
 tools/transforms/removeEolSemicolons.spr | 58 ++++++++++++++----------
 tools/transforms/useLayout.spr           | 39 ++++++----------
 tools/transforms/utils.spr               | 29 ++++++++++++
 9 files changed, 85 insertions(+), 71 deletions(-)

diff --git a/tests/Basic/CallCtorDtor.spr b/tests/Basic/CallCtorDtor.spr
index 95dd4862..902dfbee 100644
--- a/tests/Basic/CallCtorDtor.spr
+++ b/tests/Basic/CallCtorDtor.spr
@@ -41,9 +41,7 @@ fun dtor(this: @Pair)
     writeLn("Pair.dtor")
 
 [native("test")] fun test(n: Int)
-    // format off
     ;
-    // format on
         var x: MyObj
         var x1 = MyObj(1)
         var x2 = MyObj(1,2)
diff --git a/tests/Basic/datatype/initCtor.spr b/tests/Basic/datatype/initCtor.spr
index 70d097a6..d4a1f77d 100644
--- a/tests/Basic/datatype/initCtor.spr
+++ b/tests/Basic/datatype/initCtor.spr
@@ -44,9 +44,7 @@ datatype S3
 
 [native("test")]
 fun test(n: Int)
-    // format off
     ;
-    // format on
         var o1: S1
     writeLn('---')
         var o1: S2
diff --git a/tests/Basic/datatype/syntax.spr b/tests/Basic/datatype/syntax.spr
index 4d3c48bb..9b568efa 100644
--- a/tests/Basic/datatype/syntax.spr
+++ b/tests/Basic/datatype/syntax.spr
@@ -40,9 +40,7 @@ datatype GenericIf2(t: Type) if t != Int
 
 [native("test")]
 fun test(n: Int)
-    // format off
     ;
-    // format on
         var o1: Empty
         var o2: Empty2
         var o3: Empty3
diff --git a/tests/Basic2/Swappable.spr b/tests/Basic2/Swappable.spr
index e51d0a49..115a6c68 100644
--- a/tests/Basic2/Swappable.spr
+++ b/tests/Basic2/Swappable.spr
@@ -26,9 +26,7 @@ package Inner
 using Inner.MyType2
 
 fun sprMain
-    // format off
     ;
-    // format on
         var x = 3
         var y = 5
         cout << x << ", " << y << endl
diff --git a/tests/Frontend/Smoke.spr b/tests/Frontend/Smoke.spr
index af0e7f5f..a56e2c23 100644
--- a/tests/Frontend/Smoke.spr
+++ b/tests/Frontend/Smoke.spr
@@ -1,19 +1,15 @@
-import Nothing;
+import Nothing
 
-using Nothing.*;
+using Nothing.*
 
 package A
-{
     package B
-    {
         datatype C
-            a: Int;
-            b: Bool;
+            a: Int
+            b: Bool
 
         fun ctor(this: @C, aa: Int, bb: Bool) { a=aa; b=bb; }
-        fun f(x: Int): Int { return a; }
-    }
-}
-
+        fun f(x: Int): Int
+            return a
 
 ( . )     // ERROR
diff --git a/tests/PerfTests/Hash/TestHashPerf.spr b/tests/PerfTests/Hash/TestHashPerf.spr
index bd40c403..b796fdfa 100644
--- a/tests/PerfTests/Hash/TestHashPerf.spr
+++ b/tests/PerfTests/Hash/TestHashPerf.spr
@@ -136,9 +136,7 @@ fun sprMain
         searchKeys(i) = 0x80000000 + i*2
     // TODO: random shuffling
 
-    var hashBag: TestHashMap
-    // format off
-    ;
+    var hashBag: TestHashMap;
         var t = TestTimer("Hash Insert", n)
         testInsert(hashBag, n)
     ;
@@ -153,7 +151,7 @@ fun sprMain
     ;
         var t = TestTimer("Hash Remove", n)
         testRemove(hashBag, n)
-    // format on
+    ;
 
 
 /*-<< curLineIndent
-            curlyStack += OpenCurlyInfo(i, curLineIndent, canRemove)
+                && layout.nextLineIndent(remaining) > layout.curLineIndent
+            curlyStack += OpenCurlyInfo(i, layout.curLineIndent, canRemove)
 
         if tok.type == tkRCURLY
             if curlyStack.isEmpty
@@ -47,22 +40,16 @@ fun useLayoutFormatter(src: @SourceData)
 
             // Can we remove both tokens?
             var canRemove = openInfo.canRemove && tok.canFormat && nextIsNewline(remaining) \
-                && prevLineIndent > curLineIndent
+                && layout.prevLineIndent > layout.curLineIndent
             if canRemove
-                clearTokenLine(openInfo.idx, src.tokens)
-                clearTokenLine(i, src.tokens)
-
-fun _getNextLineIndent(remaining: TokensRange): Int
-    if remaining.isEmpty
-        return 1
-    var line = remaining.front().loc.start.line
-    for tok: @TokenData = remaining
-        var tk = tok.type
-        if tk == tkEOL || tk == tkEND || tk == tkWHITESPACE || tk == tkCOMMENT
-            continue
-        else
-            return Int(tok.loc.start.col)
-    return 1
+                src.tokens(openInfo.idx) _replaceWithSemicolon
+                //clearTokenLine(openInfo.idx, src.tokens)
+                // For the end, replace this with a semicolon; this may be removed later
+                tok _replaceWithSemicolon
+
+fun _replaceWithSemicolon(token: @TokenData)
+    token.type = tkSEMICOLON
+    token.content = ';'
 
 //! Information to be kept for an open-curly.
 //! Needed to reason about what to do with the curly-pair, when reaching the close-curly.
diff --git a/tools/transforms/utils.spr b/tools/transforms/utils.spr
index 5a389896..853074a1 100644
--- a/tools/transforms/utils.spr
+++ b/tools/transforms/utils.spr
@@ -50,3 +50,32 @@ fun nextIsNewline(remaining: TokensRange): Bool
             continue
         else
             return false
+
+//! Helper class that keeps track of the layout of the code.
+//! It keeps track of the indent of the current and prev line
+datatype LayoutHelper
+    _prevLineIndent: Int = 1
+    _curLineIndent: Int = 1
+    _lastLine: Int = 0
+
+fun onToken(this: @LayoutHelper, tok: @TokenData)
+    if tok.type != tkWHITESPACE && tok.type != tkCOMMENT && tok.type != tkEOL
+        if tok.loc.start.line != _lastLine
+            _prevLineIndent = _curLineIndent
+            _curLineIndent = Int(tok.loc.start.col)
+            _lastLine = Int(tok.loc.start.line)
+
+fun curLineIndent(this: @LayoutHelper) = _curLineIndent
+fun prevLineIndent(this: @LayoutHelper) = _prevLineIndent
+
+//! Gets the indent of the next line
+fun nextLineIndent(this: @LayoutHelper, remaining: TokensRange): Int
+    if remaining.isEmpty
+        return 1
+    var line = remaining.front().loc.start.line
+    for tok: @TokenData = remaining
+        var tk = tok.type
+        if tk != tkEOL && tk != tkEND && tk != tkWHITESPACE && tk != tkCOMMENT
+            return Int(tok.loc.start.col)
+    return 1
+

From 98db2eeabb979a49b220d9bad17e4b6599bf20e0 Mon Sep 17 00:00:00 2001
From: Lucian Radu Teodorescu 
Date: Sun, 12 May 2019 11:56:08 +0300
Subject: [PATCH 20/23] Reformat the files in standard library

---
 SparrowImplicitLib/logic/prolog.spr           |  83 ++--
 SparrowImplicitLib/logic/prologFrontend.spr   |   6 +-
 .../logic/prologImpl/codeGen.spr              | 404 +++++++-----------
 .../logic/prologImpl/errorReporter.spr        |  52 +--
 .../logic/prologImpl/location.spr             |   6 +-
 .../logic/prologImpl/sprCodeDump.spr          | 257 ++++-------
 SparrowImplicitLib/par/atomic.spr             |  20 +-
 SparrowImplicitLib/par/locks.spr              |  10 +-
 SparrowImplicitLib/par/semaphore.spr          |  10 +-
 SparrowImplicitLib/par/thread.spr             |  18 +-
 SparrowImplicitLib/sprCore/basicDecls.spr     |   4 +-
 SparrowImplicitLib/std/algorithms.spr         |   4 +-
 SparrowImplicitLib/std/ptr.spr                |   2 +-
 SparrowImplicitLib/std/rMath.spr              |   2 -
 SparrowImplicitLib/std/sortedMap.spr          |  60 +--
 15 files changed, 388 insertions(+), 550 deletions(-)

diff --git a/SparrowImplicitLib/logic/prolog.spr b/SparrowImplicitLib/logic/prolog.spr
index f968b32d..75329efa 100644
--- a/SparrowImplicitLib/logic/prolog.spr
+++ b/SparrowImplicitLib/logic/prolog.spr
@@ -1,60 +1,53 @@
-module logic.prolog;
+module logic.prolog
 
-import lRef;
-import predicates;
-import recurse;
+import lRef
+import predicates
+import recurse
 
-import prologImpl.nodes;
-import prologImpl.lexer;
-import prologImpl.parser;
-import prologImpl.ir;
-import prologImpl.sprCodeDump;
-import prologImpl.codeGen;
+import prologImpl.nodes
+import prologImpl.lexer
+import prologImpl.parser
+import prologImpl.ir
+import prologImpl.sprCodeDump
+import prologImpl.codeGen
 
-import meta = meta.nodeKinds;
+import meta = meta.nodeKinds
 
-import assert;
-import time = time;
+import assert
+import time = time
 
 [macro] fun compileProlog(sourceString: CompilerAstNode): CompilerAstNode
-{
-    var sourceStr: meta.AstNode = sourceString;
+    var sourceStr: meta.AstNode = sourceString
     [ct] if ( (sourceString nodeKind) != meta.nkSparrowExpLiteral )
         meta.report("compileProlog should take a string literal as argument", (sourceStr location));
     else
-    {
-        sourceStr semanticCheck;
-        var loc = sourceStr location;
-        var ctx = sourceStr context;
-        var str: String = astEval(sourceString clone);
-        return handlePrologCode(str, loc, ctx);
-    }
-}
+        sourceStr semanticCheck
+        var loc = sourceStr location
+        var ctx = sourceStr context
+        var str: String = astEval(sourceString clone)
+        return handlePrologCode(str, loc, ctx)
+    ;
 
 [ct] fun handlePrologCode(code: @String, location: meta.Location, context: meta.CompilationContext): meta.AstNode
-{
     //cout << "(" << location.startLineNo << ":" << location.startColNo << " - " << location.endLineNo << ":" << location.endColNo << ')' << endl << flush;
-    var t: time.Timer;
-    var errorReporter: CompilerErrorReporter;
-    var lexer = mkLexer(code.all(), errorReporter, location);
-    var parser = mkParser(lexer, errorReporter);
-    var sps: SparrowPrologSystem = parser.parse();
-    sps.semanticCheck();
+    var t: time.Timer
+    var errorReporter: CompilerErrorReporter
+    var lexer = mkLexer(code.all(), errorReporter, location)
+    var parser = mkParser(lexer, errorReporter)
+    var sps: SparrowPrologSystem = parser.parse()
+    sps.semanticCheck()
     //dumpProlog(cout, sps);
-    var res = genProlog(sps);
-    res setContext context;
-    cout << "Elapsed: " << t.elapsed() << endl << flush;
-    return res;
-}
+    var res = genProlog(sps)
+    res setContext context
+    cout << "Elapsed: " << t.elapsed() << endl << flush
+    return res
 
 [ct] fun prologToString(source: @String): String
-{
-    var errorReporter = mkConsoleErrorReporter(source.all());
-    var lexer = mkLexer(source.all(), errorReporter);
-    var parser = mkParser(lexer, errorReporter);
-    var sps: SparrowPrologSystem = parser.parse();
-    sps.semanticCheck();
-    var ss: StringOutputStream;
-    dumpProlog(ss, sps);
-    return ss.result;
-}
+    var errorReporter = mkConsoleErrorReporter(source.all())
+    var lexer = mkLexer(source.all(), errorReporter)
+    var parser = mkParser(lexer, errorReporter)
+    var sps: SparrowPrologSystem = parser.parse()
+    sps.semanticCheck()
+    var ss: StringOutputStream
+    dumpProlog(ss, sps)
+    return ss.result
diff --git a/SparrowImplicitLib/logic/prologFrontend.spr b/SparrowImplicitLib/logic/prologFrontend.spr
index bcc6f46d..8b9e18b8 100644
--- a/SparrowImplicitLib/logic/prologFrontend.spr
+++ b/SparrowImplicitLib/logic/prologFrontend.spr
@@ -1,4 +1,4 @@
-import prolog;
-import meta.compiler;
+import prolog
+import meta.compiler
 
-[ct] var dummy1 = registerFrontendFun(".pl", "logic/prolog.spr:handlePrologCode");
+[ct] var dummy1 = registerFrontendFun(".pl", "logic/prolog.spr:handlePrologCode")
diff --git a/SparrowImplicitLib/logic/prologImpl/codeGen.spr b/SparrowImplicitLib/logic/prologImpl/codeGen.spr
index 81e4e9c4..94f0ca11 100644
--- a/SparrowImplicitLib/logic/prologImpl/codeGen.spr
+++ b/SparrowImplicitLib/logic/prologImpl/codeGen.spr
@@ -1,30 +1,27 @@
-import nodes;
-import location;
-import ir;
-package meta {
+import nodes
+import location
+import ir
+package meta 
     import meta.sparrowNodes, meta.featherNodes, meta.compiler;
-}
 
-[ct] fun genProlog(sps: @SparrowPrologSystem): meta.AstNode = Impl.genPrologSystem(sps);
+[ct] fun genProlog(sps: @SparrowPrologSystem): meta.AstNode = Impl.genPrologSystem(sps)
 
 package Impl
-{
-    using meta.AstNode;
-    using meta.Location;
+    using meta.AstNode
+    using meta.Location
 
-    [ct] var nullNode: AstNode;
+    [ct] var nullNode: AstNode
 
 
     [ct] fun genPrologSystem(sps: @SparrowPrologSystem): AstNode
-    {
-        var l = sps.loc;
-        var resNodes: Vector(AstNode);
-        resNodes.reserve(3 * sps.predicates.size() + 3);
+        var l = sps.loc
+        var resNodes: Vector(AstNode)
+        resNodes.reserve(3 * sps.predicates.size() + 3)
 
         // Add the import nodes
-        resNodes += mkImportName(l, mkStringLiteral(l, "logic/lRef.spr"), nullNode, "");
-        resNodes += mkImportName(l, mkStringLiteral(l, "logic/predicates.spr"), nullNode, "");
-        resNodes += mkImportName(l, mkStringLiteral(l, "logic/recurse.spr"), nullNode, "");
+        resNodes += mkImportName(l, mkStringLiteral(l, "logic/lRef.spr"), nullNode, "")
+        resNodes += mkImportName(l, mkStringLiteral(l, "logic/predicates.spr"), nullNode, "")
+        resNodes += mkImportName(l, mkStringLiteral(l, "logic/recurse.spr"), nullNode, "")
 
         // Generate code for the predicates
         for p: @SparrowPredicate = sps.predicates.all()
@@ -33,170 +30,137 @@ package Impl
         //    cout << ">> " << n.toStringExt() << endl;
 
         return mkNodeList(l, resNodes.all);
-    }
 
     [ct] fun genPredicate(pred: @SparrowPredicate, resNodes: @Vector(AstNode))
-    {
-        var genNative = allowNativeCodeGen && pred.canBeNative;
+        var genNative = allowNativeCodeGen && pred.canBeNative
 
-        var locPred = pred.firstClause.get().loc;
+        var locPred = pred.firstClause.get().loc
 
         // Generate nodes for parameters and return type
-        var paramsNode = genParameters(pred, genNative);
+        var paramsNode = genParameters(pred, genNative)
         var returnType = (
             ife(genNative
             , mkIdentifier(locPred, "Bool")
             , mkIdentifier(locPred, "Predicate"))
-        );
+        )
 
-        var bodyNodes: Vector(AstNode);
+        var bodyNodes: Vector(AstNode)
 
         // Add local variables to body nodes
         for lv: @ExpressionPtr = pred.localVars.all()
-        {
-            var locVar = lv.get().loc;
-            var typeName = getTypeName(pred, lv.get(), false, genNative);
-            var init = nullNode;
+            var locVar = lv.get().loc
+            var typeName = getTypeName(pred, lv.get(), false, genNative)
+            var init = nullNode
             if ( genNative )
-            {
                 // Don't initialize native integers
-                var typeSet: @LTypeSet = pred.typeSets(lv.get().typeSetIdx);
+                var typeSet: @LTypeSet = pred.typeSets(lv.get().typeSetIdx)
                 if ( typeSet.type.isNumberOnly() )
                     init = mkFunApplication(locVar, mkIdentifier(locVar, "Uninitialized"), nullNode);
-            }
-            bodyNodes.pushBack(mkSprVariable(locVar, lv.get().data.asStringRef(), typeName, init));
-        }
+            bodyNodes.pushBack(mkSprVariable(locVar, lv.get().data.asStringRef(), typeName, init))
 
         // Add the main logic as a disjunction of all the clauses
-        var logicNode: AstNode;
+        var logicNode: AstNode
         for clause: @PredicateClausePtr = pred.clauses.all()
-        {
-            var clauseNode = genClause(pred, clause.get());
+            var clauseNode = genClause(pred, clause.get())
             if ( clauseNode isSet )
-            {
                 if ( logicNode isNull )
                     logicNode = clauseNode;
                 else
                     logicNode = mkInfixOp(logicNode location, "||", logicNode, clauseNode);
-            }
-        }
+            ;
         //var logicNode = mkFunApplication(locPred, mkIdentifier(locPred, "mkTrue"), nullNode);
-        bodyNodes.pushBack(mkReturnStmt(locPred, logicNode));
+        bodyNodes.pushBack(mkReturnStmt(locPred, logicNode))
 
         // Finally create the function node
-        var body = mkLocalSpace(locPred, bodyNodes.all);
-        var funName = pred.name;
+        var body = mkLocalSpace(locPred, bodyNodes.all)
+        var funName = pred.name
         if ( genNative )
             funName += "_native";
-        var res = mkSprFunction(locPred, funName.asStringRef(), paramsNode, returnType, body, nullNode);
-        resNodes.pushBack(res);
+        var res = mkSprFunction(locPred, funName.asStringRef(), paramsNode, returnType, body, nullNode)
+        resNodes.pushBack(res)
 
         if ( genNative )
-        {
-            resNodes.pushBack(genWrapperClass(pred));
-            resNodes.pushBack(genWrapperPredicate(pred));
-        }
-    }
+            resNodes.pushBack(genWrapperClass(pred))
+            resNodes.pushBack(genWrapperPredicate(pred))
+        ;
 
     [ct] fun genParameters(pred: @SparrowPredicate, genNative: Bool): AstNode
-    {
-        var locPred = pred.firstClause.get().loc;
-        var params = mkNodeList(locPred, AstNodeRange(), true);
+        var locPred = pred.firstClause.get().loc
+        var params = mkNodeList(locPred, AstNodeRange(), true)
         for i = 0..pred.paramVars.size()
-        {
-            var param: @Parameter = pred.paramVars(i);
-            var p: @Expression = param.expr.get();
-            var locParam = p.loc;
-            var paramName = String("p_") + intToString(Int(i+1));
-            var isRef = !genNative || param.isOutput;
-            var typeName = getTypeName(pred, p, isRef, genNative);
-            addToNodeList(params, mkSprParameter(locParam, paramName.asStringRef(), typeName, nullNode));
-        }
-        return params;
-    }
+            var param: @Parameter = pred.paramVars(i)
+            var p: @Expression = param.expr.get()
+            var locParam = p.loc
+            var paramName = String("p_") + intToString(Int(i+1))
+            var isRef = !genNative || param.isOutput
+            var typeName = getTypeName(pred, p, isRef, genNative)
+            addToNodeList(params, mkSprParameter(locParam, paramName.asStringRef(), typeName, nullNode))
+        return params
 
     [ct] fun genClause(pred: @SparrowPredicate, clause: @PredicateClause): AstNode
-    {
-        var res = nullNode;
-        res = genBoundArgs(pred, clause);
-        res = genConditions(pred, clause, res);
+        var res = nullNode
+        res = genBoundArgs(pred, clause)
+        res = genConditions(pred, clause, res)
         if ( res isNull )
-        {
-            var loc = clause.loc;
-            res = mkFunApplication(loc, mkIdentifier(loc, "mkTrue"), nullNode);
-        }
-        return res;
-    }
+            var loc = clause.loc
+            res = mkFunApplication(loc, mkIdentifier(loc, "mkTrue"), nullNode)
+        return res
 
     [ct] fun genBoundArgs(pred: @SparrowPredicate, clause: @PredicateClause): AstNode
-    {
-        var genNative = allowNativeCodeGen && pred.canBeNative;
+        var genNative = allowNativeCodeGen && pred.canBeNative
 
-        var res = nullNode;
+        var res = nullNode
         for i = 0..clause.args.size()
-        {
-            var arg: @ExpressionPtr = clause.args(i);
+            var arg: @ExpressionPtr = clause.args(i)
             if ( arg.isSet() && arg.get().kind != ekVar )
-            {
-                var loc = arg.get().loc;
-                var name = String("p_") + intToString(Int(i+1));
-                var argName = mkIdentifier(loc, name.asStringRef());
-                var argValue = genExpr(pred, arg.get());
-
-                var idx = arg.get().paramIdx;
-                assert(idx >= 0);
-                var param: @Parameter = pred.paramVars(idx);
-                var oper: String;
+                var loc = arg.get().loc
+                var name = String("p_") + intToString(Int(i+1))
+                var argName = mkIdentifier(loc, name.asStringRef())
+                var argValue = genExpr(pred, arg.get())
+
+                var idx = arg.get().paramIdx
+                assert(idx >= 0)
+                var param: @Parameter = pred.paramVars(idx)
+                var oper: String
                 if ( genNative && param.isInput )
                     oper = "==";
                 else if ( genNative && param.isOutput )
                     oper = "=/";
                 else
                     oper = "/=/";
-                var thisCond = mkInfixOp(loc, oper.asStringRef(), argName, argValue);
+                var thisCond = mkInfixOp(loc, oper.asStringRef(), argName, argValue)
 
-                res = chainConditions(loc, res, thisCond);
-            }
-        }
-        return res;
-    }
+                res = chainConditions(loc, res, thisCond)
+            ;
+        return res
 
     [ct] fun genConditions(pred: @SparrowPredicate, clause: @PredicateClause, prevCond: AstNode): AstNode
-    {
         for cond: @ConditionPtr = clause.conditions.all()
-        {
-            var thisCond = nullNode;
+            var thisCond = nullNode
             if ( cond.get().kind == ckPredCall )
                 thisCond = genPredCall(pred, clause, cond.get());
             else
                 thisCond = genIsExpr(pred, clause, cond.get());
 
             prevCond = chainConditions(cond.get().loc, prevCond, thisCond);
-        }
-        return prevCond;
-    }
+        return prevCond
 
     [ct] fun chainConditions(loc: @Location, prev, cur: AstNode): AstNode
-    {
         if ( cur isSet )
-        {
             if ( prev isNull )
                 prev = cur;
             else
                 prev = mkInfixOp(loc, "&&", prev, cur);
-        }
-        return prev;
-    }
+        return prev
 
     [ct] fun genPredCall(pred: @SparrowPredicate, clause: @PredicateClause, predCall: @Condition): AstNode
-    {
-        var loc = predCall.loc;
+        var loc = predCall.loc
 
-        var genNative = allowNativeCodeGen && pred.canBeNative;
-        var isRecursive = predCall.predName == clause.name;
+        var genNative = allowNativeCodeGen && pred.canBeNative
+        var isRecursive = predCall.predName == clause.name
 
-        var argsAst = mkNodeList(loc, AstNodeRange(), true);
-        var size = predCall.args.size();
+        var argsAst = mkNodeList(loc, AstNodeRange(), true)
+        var size = predCall.args.size()
         if ( isRecursive && !genNative )
             ++size;
         if ( isRecursive && !genNative )
@@ -204,32 +168,26 @@ package Impl
         for arg: @ExpressionPtr = predCall.args.all()
             addToNodeList(argsAst, genExpr(pred, arg.get()) );
 
-        var funName: AstNode;
+        var funName: AstNode
         if ( isRecursive )
-        {
             if ( genNative )
                 funName = mkIdentifier(loc, predCall.predName.asStringRef() + "_native");
             else
                 funName = mkIdentifier(loc, "rec");
-        }
         else
             funName = mkIdentifier(loc, predCall.predName.asStringRef());
         return mkFunApplication(loc, funName, argsAst);
-    }
 
     [ct] fun genIsExpr(pred: @SparrowPredicate, clause: @PredicateClause, isExpr: @Condition): AstNode
-    {
-        var genNative = allowNativeCodeGen && pred.canBeNative;
-        var op = ife(genNative, "=/", "/=/");
+        var genNative = allowNativeCodeGen && pred.canBeNative
+        var op = ife(genNative, "=/", "/=/")
         return mkInfixOp(isExpr.loc, op,
             genExpr(pred, isExpr.args(0).get()),
-            genExpr(pred, isExpr.args(1).get()));
-    }
+            genExpr(pred, isExpr.args(1).get()))
 
     [ct] fun genExpr(pred: @SparrowPredicate, expr: @Expression): AstNode
-    {
-        var genNative = allowNativeCodeGen && pred.canBeNative;
-        var loc = expr.loc;
+        var genNative = allowNativeCodeGen && pred.canBeNative
+        var loc = expr.loc
         if ( expr.kind == ekAtom )
             return mkStringLiteral(loc, expr.data.asStringRef());
         if ( expr.kind == ekNumber )
@@ -246,12 +204,10 @@ package Impl
             return mkInfixOp(loc, ife(genNative, "*", "|*|"), genExpr(pred, expr.left.get()), genExpr(pred, expr.right.get()));
         if ( expr.kind == ekOpDiv )
             return mkInfixOp(loc, ife(genNative, "/", "|/|"), genExpr(pred, expr.left.get()), genExpr(pred, expr.right.get()));
-        assert("Invalid expression kind while generating code" != "");
-        return nullNode;
-    }
+        assert("Invalid expression kind while generating code" != "")
+        return nullNode
 
     [ct] fun generateNodeForSparrowExp(loc: meta.Location, exp: @String): AstNode
-    {
         return meta.parseSprExpression(loc, exp.asStringRef());
         //var sz = exp.size();
         //if ( sz == 0 )
@@ -262,166 +218,136 @@ package Impl
         //    return mkFunApplication(loc, mkIdentifier(loc, String(exp.subrange(0, sz-2)).asStringRef()), nullNode);
 
         //return mkIdentifier(loc, exp.asStringRef());
-    }
 
     [ct] fun getTypeName(pred: @SparrowPredicate, expr: @Expression, addRef: Bool, genNative: Bool): AstNode
-    {
-        assert(expr.typeSetIdx >= 0);
-        var typeSet: @LTypeSet = pred.typeSets(expr.typeSetIdx);
-        var str: StringRef;
+        assert(expr.typeSetIdx >= 0)
+        var typeSet: @LTypeSet = pred.typeSets(expr.typeSetIdx)
+        var str: StringRef
         if ( typeSet.type.isNumberOnly() )
             str = ife(genNative, "Int", "LInt");
         else
             str = ife(genNative, "String", "LStr");
-        var loc = expr.loc;
+        var loc = expr.loc
         //cout << "TypeName: " << str << " for " << expr << " with type=" << typeSet.type.bits << endl << flush;
-        var res = ife(genNative, mkIdentifier(loc, str), mkIdentifier(loc, str));
+        var res = ife(genNative, mkIdentifier(loc, str), mkIdentifier(loc, str))
         if ( addRef )
             res = mkPrefixOp(loc, "@", res);
         return res;
-    }
 
     [ct] fun genWrapperClass(pred: @SparrowPredicate): AstNode
-    {
-        var loc = pred.firstClause.get().loc;
+        var loc = pred.firstClause.get().loc
 
-        var children = mkNodeList(loc, AstNodeRange(), true);
+        var children = mkNodeList(loc, AstNodeRange(), true)
         if ( pred.arity > 0 )
-        {
-            genWrapperClassVars(pred, children);
-            addToNodeList(children, genWrapperClassCtor(pred));
-        }
-        addToNodeList(children, genWrapperClassCallOper(pred));
+            genWrapperClassVars(pred, children)
+            addToNodeList(children, genWrapperClassCtor(pred))
+        addToNodeList(children, genWrapperClassCallOper(pred))
 
-        var clsName = pred.name + "_pred_wrapper";
-        return mkSprDatatype(loc, clsName.asStringRef(), nullNode, nullNode, nullNode, children);
-    }
+        var clsName = pred.name + "_pred_wrapper"
+        return mkSprDatatype(loc, clsName.asStringRef(), nullNode, nullNode, nullNode, children)
 
     [ct] fun genWrapperClassVars(pred: @SparrowPredicate, classChildren: @AstNode)
-    {
         for i = 0..pred.paramVars.size()
-        {
-            var pe: @Expression = pred.paramVars(i).expr.get();
-            var paramName = String("p_") + intToString(Int(i+1));
-            var locVar = pe.loc;
-            var typeName = getTypeName(pred,pe, false, false);
-            addToNodeList(classChildren, mkSprVariable(locVar, paramName.asStringRef(), typeName, nullNode));
-        }
-    }
+            var pe: @Expression = pred.paramVars(i).expr.get()
+            var paramName = String("p_") + intToString(Int(i+1))
+            var locVar = pe.loc
+            var typeName = getTypeName(pred,pe, false, false)
+            addToNodeList(classChildren, mkSprVariable(locVar, paramName.asStringRef(), typeName, nullNode))
+        ;
     [ct] fun genWrapperClassCtor(pred: @SparrowPredicate): AstNode
-    {
-        var loc = pred.firstClause.get().loc;
+        var loc = pred.firstClause.get().loc
 
         // Create the body
-        var bodyNodes: Vector(AstNode);
-        bodyNodes.reserve(pred.arity);
+        var bodyNodes: Vector(AstNode)
+        bodyNodes.reserve(pred.arity)
         for i = 0..pred.paramVars.size()
-        {
-            var pe: @Expression = pred.paramVars(i).expr.get();
-            var locParam = pe.loc;
-            var paramName = String("p_") + intToString(Int(i+1));
-            var left = mkCompoundExp(locParam, mkIdentifier(locParam, "this"), paramName.asStringRef());
-            var right = mkIdentifier(locParam, paramName.asStringRef());
-            bodyNodes.pushBack(mkInfixOp(locParam, "ctor", left, right));
-        }
-        var body = mkLocalSpace(loc, bodyNodes.all);
+            var pe: @Expression = pred.paramVars(i).expr.get()
+            var locParam = pe.loc
+            var paramName = String("p_") + intToString(Int(i+1))
+            var left = mkCompoundExp(locParam, mkIdentifier(locParam, "this"), paramName.asStringRef())
+            var right = mkIdentifier(locParam, paramName.asStringRef())
+            bodyNodes.pushBack(mkInfixOp(locParam, "ctor", left, right))
+        var body = mkLocalSpace(loc, bodyNodes.all)
 
         // Finally create the function node
-        var paramsNode = genParameters(pred, false);
-        return mkSprFunction(loc, "ctor", paramsNode, nullNode, body, nullNode);
-    }
+        var paramsNode = genParameters(pred, false)
+        return mkSprFunction(loc, "ctor", paramsNode, nullNode, body, nullNode)
     [ct] fun genWrapperClassCallOper(pred: @SparrowPredicate): AstNode
-    {
-        var loc = pred.firstClause.get().loc;
-        var bodyNodes: Vector(AstNode);
-        bodyNodes.reserve(pred.arity + 1);
+        var loc = pred.firstClause.get().loc
+        var bodyNodes: Vector(AstNode)
+        bodyNodes.reserve(pred.arity + 1)
 
         // Checks for the input parameters
-        var inputChecks = nullNode;
+        var inputChecks = nullNode
         for i = 0..pred.paramVars.size()
-        {
-            var p: @Parameter = pred.paramVars(i);
+            var p: @Parameter = pred.paramVars(i)
             if ( p.isInput )
-            {
-                var pe: @Expression = p.expr.get();
-                var locParam = pe.loc;
-                var paramName = String("p_") + intToString(Int(i+1));
+                var pe: @Expression = p.expr.get()
+                var locParam = pe.loc
+                var paramName = String("p_") + intToString(Int(i+1))
 
-                var callFn = mkCompoundExp(locParam, mkIdentifier(locParam, paramName.asStringRef()), "isNull");
-                var call = mkFunApplication(locParam, callFn, nullNode);
+                var callFn = mkCompoundExp(locParam, mkIdentifier(locParam, paramName.asStringRef()), "isNull")
+                var call = mkFunApplication(locParam, callFn, nullNode)
 
                 if ( inputChecks isNull )
                     inputChecks = call;
                 else
                     inputChecks = mkInfixOp(locParam, "||", inputChecks, call);
-            }
-        }
+            ;
         if ( inputChecks isSet )
-        {
-            var thenClause = mkReturnStmt(loc, mkBoolLiteral(loc, false));
-            var ifStmt = mkIf(loc, inputChecks, thenClause, nullNode);
-            bodyNodes.pushBack(ifStmt);
-        }
+            var thenClause = mkReturnStmt(loc, mkBoolLiteral(loc, false))
+            var ifStmt = mkIf(loc, inputChecks, thenClause, nullNode)
+            bodyNodes.pushBack(ifStmt)
 
         // Create some values for the output parameters
         for i = 0..pred.paramVars.size()
-        {
-            var p: @Parameter = pred.paramVars(i);
+            var p: @Parameter = pred.paramVars(i)
             if ( p.isOutput )
-            {
-                var pe: @Expression = p.expr.get();
-                var locParam = pe.loc;
-                var paramName = String("p_") + intToString(Int(i+1));
-
-                var paramId = mkIdentifier(locParam, paramName.asStringRef());
-                var ctorCall = mkFunApplication(locParam, getTypeName(pred, pe, false, true), nullNode);
-                var valSet = mkInfixOp(locParam, "=", paramId, ctorCall);
-                bodyNodes.pushBack(valSet);
-            }
-        }
+                var pe: @Expression = p.expr.get()
+                var locParam = pe.loc
+                var paramName = String("p_") + intToString(Int(i+1))
+
+                var paramId = mkIdentifier(locParam, paramName.asStringRef())
+                var ctorCall = mkFunApplication(locParam, getTypeName(pred, pe, false, true), nullNode)
+                var valSet = mkInfixOp(locParam, "=", paramId, ctorCall)
+                bodyNodes.pushBack(valSet)
+            ;
 
         // The call to the native function
-        var callArgsNode = mkNodeList(loc, AstNodeRange(), true);
+        var callArgsNode = mkNodeList(loc, AstNodeRange(), true)
         for i = 0..pred.paramVars.size()
-        {
-            var p: @Parameter = pred.paramVars(i);
-            var pe: @Expression = p.expr.get();
-            var locParam = pe.loc;
-            var paramName = String("p_") + intToString(Int(i+1));
-
-            var paramId = mkIdentifier(locParam, paramName.asStringRef());
-            var getName = mkCompoundExp(locParam, paramId, "get");
-            var getCall = mkFunApplication(locParam, getName, nullNode);
-            addToNodeList(callArgsNode, getCall);
-        }
-        var nativeFunName = mkIdentifier(loc, (pred.name + "_native").asStringRef());
-        var nativeFunCall = mkFunApplication(loc, nativeFunName, callArgsNode);
-        bodyNodes.pushBack(mkReturnStmt(loc, nativeFunCall));
+            var p: @Parameter = pred.paramVars(i)
+            var pe: @Expression = p.expr.get()
+            var locParam = pe.loc
+            var paramName = String("p_") + intToString(Int(i+1))
+
+            var paramId = mkIdentifier(locParam, paramName.asStringRef())
+            var getName = mkCompoundExp(locParam, paramId, "get")
+            var getCall = mkFunApplication(locParam, getName, nullNode)
+            addToNodeList(callArgsNode, getCall)
+        var nativeFunName = mkIdentifier(loc, (pred.name + "_native").asStringRef())
+        var nativeFunCall = mkFunApplication(loc, nativeFunName, callArgsNode)
+        bodyNodes.pushBack(mkReturnStmt(loc, nativeFunCall))
 
         // Finally create the function node
-        var body = mkLocalSpace(loc, bodyNodes.all);
-        var returnType = mkIdentifier(loc, "Bool");
-        return mkSprFunction(loc, "()", nullNode, returnType, body, nullNode);
-    }
+        var body = mkLocalSpace(loc, bodyNodes.all)
+        var returnType = mkIdentifier(loc, "Bool")
+        return mkSprFunction(loc, "()", nullNode, returnType, body, nullNode)
     [ct] fun genWrapperPredicate(pred: @SparrowPredicate): AstNode
-    {
-        var loc = pred.firstClause.get().loc;
+        var loc = pred.firstClause.get().loc
 
         // Create the function application to call the predicate wrapper ctor
-        var argsAst = mkNodeList(loc, AstNodeRange(), true);
+        var argsAst = mkNodeList(loc, AstNodeRange(), true)
         for i = 0..pred.paramVars.size()
-        {
-            var p: @Expression = pred.paramVars(i).expr.get();
-            var locParam = p.loc;
-            var paramName = String("p_") + intToString(Int(i+1));
-            addToNodeList(argsAst, mkIdentifier(locParam, paramName.asStringRef()));
-        }
-        var funName = mkIdentifier(loc, pred.name.asStringRef() + "_pred_wrapper");
-        var bodyExp = mkFunApplication(loc, funName, argsAst);
+            var p: @Expression = pred.paramVars(i).expr.get()
+            var locParam = p.loc
+            var paramName = String("p_") + intToString(Int(i+1))
+            addToNodeList(argsAst, mkIdentifier(locParam, paramName.asStringRef()))
+        var funName = mkIdentifier(loc, pred.name.asStringRef() + "_pred_wrapper")
+        var bodyExp = mkFunApplication(loc, funName, argsAst)
 
         // Finally create the function node
-        var paramsNode = genParameters(pred, false);
-        var returnType = mkIdentifier(loc, "Predicate");
-        return mkSprFunctionExp(loc, pred.name.asStringRef(), paramsNode, returnType, bodyExp, nullNode);
-    }
-}
+        var paramsNode = genParameters(pred, false)
+        var returnType = mkIdentifier(loc, "Predicate")
+        return mkSprFunctionExp(loc, pred.name.asStringRef(), paramsNode, returnType, bodyExp, nullNode)
+    ;
diff --git a/SparrowImplicitLib/logic/prologImpl/errorReporter.spr b/SparrowImplicitLib/logic/prologImpl/errorReporter.spr
index fc9b1686..69728704 100644
--- a/SparrowImplicitLib/logic/prologImpl/errorReporter.spr
+++ b/SparrowImplicitLib/logic/prologImpl/errorReporter.spr
@@ -1,29 +1,26 @@
-import charRange;
-import token;
-import std.algorithms;
-import meta = meta.compilerCore;
-import os = os;
+import charRange
+import token
+import std.algorithms
+import meta = meta.compilerCore
+import os = os
 
 [initCtor]
 datatype ConsoleErrorReporter(sourceType: Type) if CharRange(#$sourceType)
     _source: sourceType;
 
 fun raiseError(this: @ConsoleErrorReporter, loc: Location, message: StringRef)
-{
-    cout << message << flush;
-    this._printLocation(cout, loc);
-    cout << flush;
-    os.exit(-1);
-}
+    cout << message << flush
+    this._printLocation(cout, loc)
+    cout << flush
+    os.exit(-1)
 
 fun _printLocation(this: @ConsoleErrorReporter, os: @OutStream, loc: Location)
-{
-    var line = this._getLineAtLocation(loc);
+    var line = this._getLineAtLocation(loc)
     //os << "(" << loc.start.line << ":" << loc.start.col << " - " << loc.end.line << ":" << loc.end.col << ")\n";
-    os << '>' << line << '\n';
+    os << '>' << line << '\n'
 
-    os << '>';
-    var endCol = loc.end.col;
+    os << '>'
+    var endCol = loc.end.col
     if ( loc.start.line != loc.end.line )
         endCol = UInt(line.size()+1);
     if ( loc.start.col == endCol )
@@ -33,29 +30,26 @@ fun _printLocation(this: @ConsoleErrorReporter, os: @OutStream, loc: Location)
     for i = loc.start.col..endCol
         os << '~';
     os << '\n';
-}
 
 fun _getLineAtLocation(this: @ConsoleErrorReporter, loc: Location): String
-{
-    var sourceCopy = _source;
+    var sourceCopy = _source
 
     // Skip until our line
-    var curLine = 1;
+    var curLine = 1
     while curLine < loc.start.line
-        sourceCopy = find(sourceCopy, '\n'.char);
-        sourceCopy.popFront();
-        ++curLine;
+        sourceCopy = find(sourceCopy, '\n'.char)
+        sourceCopy.popFront()
+        ++curLine
 
-    var len = indexOf(sourceCopy, '\n'.char);
-    return String(take(sourceCopy, len));
-}
+    var len = indexOf(sourceCopy, '\n'.char)
+    return String(take(sourceCopy, len))
 
-fun mkConsoleErrorReporter(source: @CharRange) = ConsoleErrorReporter(-@typeOf(source))(source);
+fun mkConsoleErrorReporter(source: @CharRange) = ConsoleErrorReporter(-@typeOf(source))(source)
 
 [ct]
     datatype CompilerErrorReporter
         ;
 
     fun raiseError(this: CompilerErrorReporter, loc: Location, message: StringRef)
-        meta.report(meta.diagError, loc, message);
-        meta.raise;
+        meta.report(meta.diagError, loc, message)
+        meta.raise
diff --git a/SparrowImplicitLib/logic/prologImpl/location.spr b/SparrowImplicitLib/logic/prologImpl/location.spr
index d0f78487..2d654e6c 100644
--- a/SparrowImplicitLib/logic/prologImpl/location.spr
+++ b/SparrowImplicitLib/logic/prologImpl/location.spr
@@ -1,6 +1,6 @@
-import metaloc = meta.location;
+import metaloc = meta.location
 
 // Use the same location infrastructure as the one we use in the compiler
-using LLocation = metaloc.Location;
-using Location = metaloc.Location;
+using LLocation = metaloc.Location
+using Location = metaloc.Location
 
diff --git a/SparrowImplicitLib/logic/prologImpl/sprCodeDump.spr b/SparrowImplicitLib/logic/prologImpl/sprCodeDump.spr
index a67a3b01..68407f13 100644
--- a/SparrowImplicitLib/logic/prologImpl/sprCodeDump.spr
+++ b/SparrowImplicitLib/logic/prologImpl/sprCodeDump.spr
@@ -1,9 +1,8 @@
-import ir;
+import ir
 import std.string
 
 //[ct] fun dumpProlog(os: @OutStream, sps: @SparrowPrologSystem)
 [ct] fun dumpProlog(os: @StringOutputStream, sps: @SparrowPrologSystem)
-{
     //Impl.dumpPrologSystem(os, sps);
     //testStringOutputStream
     var sos: OutStream = StringOutputStream()
@@ -11,22 +10,17 @@ import std.string
     cout << sos.result << endl
     testStream(os)
     //os << flush;
-}
 
 [ct]
 fun testStream(os: @OutStream)
     os << 1
 
 package Impl
-{
     [ct] fun dumpPrologSystem(os: @OutStream, sps: @SparrowPrologSystem)
-    {
         for p: @SparrowPredicate = sps.predicates.all()
             dumpSprPredicate(os, p);
-    }
 
     [ct] fun dumpSprPredicate(os: @OutStream, pred: @SparrowPredicate)
-    {
         // Dump the type sets
         //for typeSet: @LTypeSet = pred.typeSets.all()
         //{
@@ -34,115 +28,94 @@ package Impl
         //}
         //os << flush;
 
-        var genNative = allowNativeCodeGen && pred.canBeNative;
+        var genNative = allowNativeCodeGen && pred.canBeNative
 
         // Header line
-        os << "fun " << pred.name;
+        os << "fun " << pred.name
         if ( genNative )
             os << "_native";
-        dumpParameters(os, pred, genNative);
+        dumpParameters(os, pred, genNative)
         if ( genNative )
             os << ": Bool";
         else
             os << ": Predicate";
-        os << endl;
+        os << endl
 
         // If we have local variables, create a scope and put the variables in it
-        var withScope = !pred.localVars.isEmpty();
-        var tab: StringRef = "    ";
+        var withScope = !pred.localVars.isEmpty()
+        var tab: StringRef = "    "
         if ( withScope )
-        {
-            os << "{" << endl;
+            os << "{" << endl
             for lv: @ExpressionPtr = pred.localVars.all()
-            {
-                os << "    var " << lv.get().data << ": ";
-                dumpType(os, pred, lv.get(), false, genNative);
+                os << "    var " << lv.get().data << ": "
+                dumpType(os, pred, lv.get(), false, genNative)
                 if ( genNative )
-                {
                     // Don't initialize native integers
-                    var typeSet: @LTypeSet = pred.typeSets(lv.get().typeSetIdx);
+                    var typeSet: @LTypeSet = pred.typeSets(lv.get().typeSetIdx)
                     if ( typeSet.type.isNumberOnly() )
                         os << " = Uninitialized()";
-                }
-                os << ';' << endl;
-            }
-            os << "    return ";
-            tab = StringRef("        ");
-        }
+                os << ';' << endl
+            os << "    return "
+            tab = StringRef("        ")
         else
-        {
             os << "    =  ";
-        }
 
         // Conditions for all the clauses
-        var first = true;
+        var first = true
         for i = 0..pred.clauses.size()
-        {
             if ( first )
                 first = false;
             else
                 os << tab << "|| ";
 
-            dumpClause(os, pred, pred.clauses(i).get());
-            os << endl;
-        }
-        os << tab << ";" << endl;
+            dumpClause(os, pred, pred.clauses(i).get())
+            os << endl
+        os << tab << ";" << endl
 
         if ( withScope )
             os << "}" << endl;
 
         if ( genNative )
             dumpNativeWrapper(os, pred);
-    }
     [ct] fun dumpParameters(os: @OutStream, pred: @SparrowPredicate, genNative: Bool)
-    {
         if ( pred.arity > 0 )
-        {
-            os << "(";
+            os << "("
             for i = 0..pred.paramVars.size()
-            {
-                var param: @Parameter = pred.paramVars(i);
+                var param: @Parameter = pred.paramVars(i)
                 if ( i>0 )
                     os << ", ";
-                os << "_" << (i+1) << ": ";
-                var isRef = !genNative || param.isOutput;
-                dumpType(os, pred, param.expr.get(), isRef, genNative);
+                os << "_" << (i+1) << ": "
+                var isRef = !genNative || param.isOutput
+                dumpType(os, pred, param.expr.get(), isRef, genNative)
                 //if ( param.isInput )
                 //    os << "";
                 //if ( param.isOutput )
                 //    os << "";
-            }
-            os << ")";
-        }
-    }
+            os << ")"
+        ;
 
     [ct] fun dumpClause(os: @OutStream, pred: @SparrowPredicate, clause: @PredicateClause)
-    {
-        var condWritten = false;
-        dumpBoundArgs(os, pred, clause, condWritten);
-        dumpClauseConditions(os, pred, clause, condWritten);
+        var condWritten = false
+        dumpBoundArgs(os, pred, clause, condWritten)
+        dumpClauseConditions(os, pred, clause, condWritten)
         if ( !condWritten )
             os << " true";
-    }
     [ct] fun dumpBoundArgs(os: @OutStream, pred: @SparrowPredicate, clause: @PredicateClause, condWritten: @Bool)
-    {
-        var genNative = allowNativeCodeGen && pred.canBeNative;
+        var genNative = allowNativeCodeGen && pred.canBeNative
 
         for i = 0..clause.args.size()
-        {
-            var arg: @ExpressionPtr = clause.args(i);
+            var arg: @ExpressionPtr = clause.args(i)
             if ( arg.isSet() && arg.get().kind != ekVar )
-            {
                 if ( !condWritten )
                     condWritten = true;
                 else
                     os << " && ";
 
-                os << "_" << (i+1);
+                os << "_" << (i+1)
 
-                var idx = arg.get().paramIdx;
-                assert(idx >= 0);
-                var param: @Parameter = pred.paramVars(idx);
+                var idx = arg.get().paramIdx
+                assert(idx >= 0)
+                var param: @Parameter = pred.paramVars(idx)
                 if ( genNative && param.isInput )
                     os << " == ";
                 else if ( genNative && param.isOutput )
@@ -151,14 +124,11 @@ package Impl
                     os << " /=/ ";
 
                 dumpExpr(os, pred, arg.get());
-            }
-        }
-    }
+            ;
+        ;
 
     [ct] fun dumpClauseConditions(os: @OutStream, pred: @SparrowPredicate, clause: @PredicateClause, condWritten: @Bool)
-    {
         for cond: @ConditionPtr = clause.conditions.all()
-        {
             if ( !condWritten )
                 condWritten = true;
             else
@@ -168,45 +138,35 @@ package Impl
                 dumpPredCall(os, pred, clause, cond.get());
             else
                 dumpIsExpr(os, pred, clause, cond.get());
-        }
-    }
+        ;
 
     [ct] fun dumpPredCall(os: @OutStream, pred: @SparrowPredicate, clause: @PredicateClause, predCall: @Condition)
-    {
-        var genNative = allowNativeCodeGen && pred.canBeNative;
-        var isRecursive = predCall.predName == clause.name;
+        var genNative = allowNativeCodeGen && pred.canBeNative
+        var isRecursive = predCall.predName == clause.name
         if ( isRecursive )
-        {
             if ( genNative )
                 os << predCall.predName << "_native(";
             else
                 os << "rec(\\" << predCall.predName << ", ";
-        }
         else
             os << predCall.predName << '(';
         for i = 0..predCall.args.size()
-        {
             if ( i>0 )
                 os << ", ";
             dumpExpr(os, pred, predCall.args(i).get());
-        }
-        os << ')';
-    }
+        os << ')'
 
     [ct] fun dumpIsExpr(os: @OutStream, pred: @SparrowPredicate, clause: @PredicateClause, isExpr: @Condition)
-    {
-        var left: @Expression = isExpr.args(0).get();
-        var right: @Expression = isExpr.args(1).get();
-        var genNative = allowNativeCodeGen && pred.canBeNative;
+        var left: @Expression = isExpr.args(0).get()
+        var right: @Expression = isExpr.args(1).get()
+        var genNative = allowNativeCodeGen && pred.canBeNative
 
-        dumpExpr(os, pred, left);
-        os << ife(genNative, " =/ ", " /=/ ");
-        dumpExpr(os, pred, right);
-    }
+        dumpExpr(os, pred, left)
+        os << ife(genNative, " =/ ", " /=/ ")
+        dumpExpr(os, pred, right)
 
     [ct] fun dumpExpr(os: @OutStream, pred: @SparrowPredicate, expr: @Expression)
-    {
-        var genNative = allowNativeCodeGen && pred.canBeNative;
+        var genNative = allowNativeCodeGen && pred.canBeNative
 
         if ( expr.kind == ekAtom )
             os << '"' << expr.data << '"';
@@ -228,30 +188,24 @@ package Impl
             os << "";
         //os << ':';
         //dumpType(os, pred, expr, false, false);
-    }
 
     [ct] fun dumpBinExpr(os: @OutStream, pred: @SparrowPredicate, left, right: @Expression, op: StringRef)
-    {
-        os << '(';
-        dumpExpr(os, pred, left);
-        os << op;
-        dumpExpr(os, pred, right);
-        os << ')';
-    }
+        os << '('
+        dumpExpr(os, pred, left)
+        os << op
+        dumpExpr(os, pred, right)
+        os << ')'
 
     [ct] fun dumpType(os: @OutStream, pred: @SparrowPredicate, expr: @Expression, isRef, genNative: Bool)
-    {
         if ( isRef )
             os << "@";
 
         if ( expr === null )
-        {
-            dumpAtomType(os, genNative);
-            return;
-        }
+            dumpAtomType(os, genNative)
+            return
 
-        assert(expr.typeSetIdx >= 0);
-        var typeSet: @LTypeSet = pred.typeSets(expr.typeSetIdx);
+        assert(expr.typeSetIdx >= 0)
+        var typeSet: @LTypeSet = pred.typeSets(expr.typeSetIdx)
         if ( typeSet.type.isNumberOnly() )
             dumpIntegerType(os, genNative);
         else if ( typeSet.type.isAtomOnly() )
@@ -259,118 +213,91 @@ package Impl
         else
             dumpAtomType(os, genNative);     // Defaults to atom type
         //os << '{' << expr.typeSetIdx << '}';
-    }
 
     [ct] fun dumpIntegerType(os: @OutStream, genNative: Bool)
-    {
         if ( genNative )
             os << "Int";
         else
             os << "LInt";
-    }
 
     [ct] fun dumpAtomType(os: @OutStream, genNative: Bool)
-    {
         if ( genNative )
             os << "String";
         else
             os << "LStr";
-    }
 
     [ct] fun dumpNativeWrapper(os: @OutStream, pred: @SparrowPredicate)
-    {
-        dumpWrapperClass(os, pred);
+        dumpWrapperClass(os, pred)
 
         // Express the logic predicate in terms of the wrapper class
-        os << "fun " << pred.name;
-        dumpParameters(os, pred, false);
-        os << ": Predicate = " << pred.name << "_pred_wrapper(";
+        os << "fun " << pred.name
+        dumpParameters(os, pred, false)
+        os << ": Predicate = " << pred.name << "_pred_wrapper("
         for i = 0..pred.paramVars.size()
-        {
             if ( i > 0 )
                 os << ", ";
             os << "_" << (i+1);
-        }
-        os << ");" << endl;
-    }
+        os << ");" << endl
 
     [ct] fun dumpWrapperClass(os: @OutStream, pred: @SparrowPredicate)
-    {
-        var tab: StringRef = "    ";
-        var tab2: StringRef = "        ";
-        var tab3: StringRef = "            ";
+        var tab: StringRef = "    "
+        var tab2: StringRef = "        "
+        var tab3: StringRef = "            "
 
-        os << "class " << pred.name << "_pred_wrapper" << endl;
-        os << "{" << endl;
+        os << "class " << pred.name << "_pred_wrapper" << endl
+        os << "{" << endl
 
         // Ctor
         if ( pred.arity > 0 )
-        {
-            os << tab << "fun ctor";
-            dumpParameters(os, pred, false);
-            os << endl;
-            os << tab << '{' << endl;
+            os << tab << "fun ctor"
+            dumpParameters(os, pred, false)
+            os << endl
+            os << tab << '{' << endl
             for i = 0..pred.paramVars.size()
-            {
                 os << tab2 << "this._" << (i+1) << " ctor " << "_" << (i+1) << ";" << endl;
-            }
-            os << tab << '}' << endl;
-        }
+            os << tab << '}' << endl
 
         // Call operator
 
-        os << tab << "fun (): Bool" << endl;
-        os << tab << '{' << endl;
+        os << tab << "fun (): Bool" << endl
+        os << tab << '{' << endl
         // Checks for the input parameters
         for i = 0..pred.paramVars.size()
-        {
-            var p: @Parameter = pred.paramVars(i);
+            var p: @Parameter = pred.paramVars(i)
             if ( p.isInput )
-            {
                 if ( i==0 )
                     os << tab2 << "if ( ";
                 else
                     os << " || ";
                 os << "_" << (i+1) << ".isNull()";
-            }
-        }
+            ;
         if ( !pred.paramVars.isEmpty() )
-        {
-            os << " )" << endl;
-            os << tab3 << "return false;" << endl;
-        }
+            os << " )" << endl
+            os << tab3 << "return false;" << endl
         // Create some values for the output parameters
         for i = 0..pred.paramVars.size()
-        {
-            var p: @Parameter = pred.paramVars(i);
+            var p: @Parameter = pred.paramVars(i)
             if ( p.isOutput )
-            {
-                os << tab2 << "_" << (i+1) << " = ";
-                dumpType(os, pred, p.expr.get(), false, true);
-                os << "();" << endl;
-            }
-        }
+                os << tab2 << "_" << (i+1) << " = "
+                dumpType(os, pred, p.expr.get(), false, true)
+                os << "();" << endl
+            ;
         // The call to the native function
-        os << tab2 << "return " << pred.name << "_native(";
+        os << tab2 << "return " << pred.name << "_native("
         for i = 0..pred.paramVars.size()
-        {
             if ( i > 0 )
                 os << ", ";
             os << "_" << (i+1) << ".get()";
-        }
-        os << ");" << endl;
-        os << tab << '}' << endl;
+        os << ");" << endl
+        os << tab << '}' << endl
 
         // The variables corresponding to the parameters
         for i = 0..pred.paramVars.size()
-        {
-            var p: @Parameter = pred.paramVars(i);
-            os << tab << "var _" << (i+1) << ": ";
-            dumpType(os, pred, p.expr.get(), false, false);
-            os << ';' << endl;
-        }
-
-        os << "}" << endl;
-    }
-}
+            var p: @Parameter = pred.paramVars(i)
+            os << tab << "var _" << (i+1) << ": "
+            dumpType(os, pred, p.expr.get(), false, false)
+            os << ';' << endl
+
+        os << "}" << endl
+    ;
 
diff --git a/SparrowImplicitLib/par/atomic.spr b/SparrowImplicitLib/par/atomic.spr
index 709a98e7..31fbdba4 100644
--- a/SparrowImplicitLib/par/atomic.spr
+++ b/SparrowImplicitLib/par/atomic.spr
@@ -27,26 +27,26 @@ datatype Atomic(T: Type) if sizeOf(T) <= 8
     fun =(this: @AtomicType, val: this.ValueType) = this store val
 
     //! Loads the value from an atomic; returns a non-atomic value
-    [native("_Atomic_load32")] fun load(this: @AtomicInt): Int;
-    [native("_Atomic_load64")] fun load(this: @AtomicLong): Long;
+    [native("_Atomic_load32")] fun load(this: @AtomicInt): Int
+    [native("_Atomic_load64")] fun load(this: @AtomicLong): Long
     fun load(this: @NonStdAtomicType): ValueType \
         = this._fromUnderlying(this._baseAtomic load)
 
     //! Stores a value inside the given atomic
-    [native("_Atomic_store32")] fun store(this: @AtomicInt, newVal: Int);
-    [native("_Atomic_store64")] fun store(this: @AtomicLong, newVal: Long);
+    [native("_Atomic_store32")] fun store(this: @AtomicInt, newVal: Int)
+    [native("_Atomic_store64")] fun store(this: @AtomicLong, newVal: Long)
     fun store(this: @NonStdAtomicType, newVal: AnyType)
         this._baseAtomic store this._toUnderlying(newVal)
 
     //! Fetches the current value of an atomic, and stores a new value in the atomic
-    [native("_Atomic_fetchAndStore32")] fun fetchAndStore(x: @AtomicInt, newVal: Int): Int;
-    [native("_Atomic_fetchAndStore64")] fun fetchAndStore(x: @AtomicLong, newVal: Long): Long;
+    [native("_Atomic_fetchAndStore32")] fun fetchAndStore(x: @AtomicInt, newVal: Int): Int
+    [native("_Atomic_fetchAndStore64")] fun fetchAndStore(x: @AtomicLong, newVal: Long): Long
     fun fetchAndStore(x: @NonStdAtomicType, newVal: AnyType): x.ValueType \
         = x._fromUnderlying(x._baseAtomic fetchAndStore x._toUnderlying(newVal))
 
     //! Fetch the value of the atomic, and then add the given value to it
-    [native("_Atomic_fetchAndAdd32")] fun fetchAndAdd(x: @AtomicInt, val: Int): Int;
-    [native("_Atomic_fetchAndAdd64")] fun fetchAndAdd(x: @AtomicLong, val: Long): Long;
+    [native("_Atomic_fetchAndAdd32")] fun fetchAndAdd(x: @AtomicInt, val: Int): Int
+    [native("_Atomic_fetchAndAdd64")] fun fetchAndAdd(x: @AtomicLong, val: Long): Long
     fun fetchAndAdd(x: @NonStdAtomicType, val: AnyType): x.ValueType \
         = x._fromUnderlying(x._baseAtomic fetchAndAdd x._toUnderlying(val)) \
         if Integer(#$x.ValueType)
@@ -83,8 +83,8 @@ datatype Atomic(T: Type) if sizeOf(T) <= 8
 
 
 //! Compare the atomic value with the given comparand; if equal store 'newVal' and return true; if not equal returns false
-[native("_Atomic_compareAndSwap32")] fun compareAndSwap(x: @AtomicInt, newVal, comparand: Int): Bool;
-[native("_Atomic_compareAndSwap64")] fun compareAndSwap(x: @AtomicLong, newVal, comparand: Long): Bool;
+[native("_Atomic_compareAndSwap32")] fun compareAndSwap(x: @AtomicInt, newVal, comparand: Int): Bool
+[native("_Atomic_compareAndSwap64")] fun compareAndSwap(x: @AtomicLong, newVal, comparand: Long): Bool
 fun compareAndSwap(x: @NonStdAtomicType, newVal, comparand: AnyType): Bool \
     = compareAndSwap(x._baseAtomic, x._toUnderlying(newVal), x._toUnderlying(comparand))
 
diff --git a/SparrowImplicitLib/par/locks.spr b/SparrowImplicitLib/par/locks.spr
index 0f6d5448..4c1e6814 100644
--- a/SparrowImplicitLib/par/locks.spr
+++ b/SparrowImplicitLib/par/locks.spr
@@ -86,8 +86,8 @@ package Impl
         sig: Long
         opaque: StaticArray(Byte, PTHREAD_MUTEX_SIZE)
 
-    [native("pthread_mutex_init")] fun pthread_mutex_init(mutex: @PThreadMutex, attr: @Byte): Int;
-    [native("pthread_mutex_lock")] fun pthread_mutex_lock(mutex: @PThreadMutex): Int;
-    [native("pthread_mutex_trylock")] fun pthread_mutex_trylock(mutex: @PThreadMutex): Int;
-    [native("pthread_mutex_unlock")] fun pthread_mutex_unlock(mutex: @PThreadMutex): Int;
-    [native("pthread_mutex_destroy")] fun pthread_mutex_destroy(mutex: @PThreadMutex): Int;
+    [native("pthread_mutex_init")] fun pthread_mutex_init(mutex: @PThreadMutex, attr: @Byte): Int
+    [native("pthread_mutex_lock")] fun pthread_mutex_lock(mutex: @PThreadMutex): Int
+    [native("pthread_mutex_trylock")] fun pthread_mutex_trylock(mutex: @PThreadMutex): Int
+    [native("pthread_mutex_unlock")] fun pthread_mutex_unlock(mutex: @PThreadMutex): Int
+    [native("pthread_mutex_destroy")] fun pthread_mutex_destroy(mutex: @PThreadMutex): Int
diff --git a/SparrowImplicitLib/par/semaphore.spr b/SparrowImplicitLib/par/semaphore.spr
index b94ba29a..fd2a04f4 100644
--- a/SparrowImplicitLib/par/semaphore.spr
+++ b/SparrowImplicitLib/par/semaphore.spr
@@ -30,11 +30,11 @@ package _Impl
     using SemaphoreT = Int
     using SYNC_POLICY_FIFO = 0
 
-    [native("mach_task_self")] fun mach_task_self(): TaskT;
-    [native("semaphore_create")] fun semaphore_create(task: TaskT, s: @SemaphoreT, policy, value: Int): Int;
-    [native("semaphore_destroy")] fun semaphore_destroy(task: TaskT, s: SemaphoreT): Int;
-    [native("semaphore_signal")] fun semaphore_signal(s: SemaphoreT): Int;
-    [native("semaphore_wait")] fun semaphore_wait(s: SemaphoreT): Int;
+    [native("mach_task_self")] fun mach_task_self(): TaskT
+    [native("semaphore_create")] fun semaphore_create(task: TaskT, s: @SemaphoreT, policy, value: Int): Int
+    [native("semaphore_destroy")] fun semaphore_destroy(task: TaskT, s: SemaphoreT): Int
+    [native("semaphore_signal")] fun semaphore_signal(s: SemaphoreT): Int
+    [native("semaphore_wait")] fun semaphore_wait(s: SemaphoreT): Int
 
     //using SemType = Int;
 
diff --git a/SparrowImplicitLib/par/thread.spr b/SparrowImplicitLib/par/thread.spr
index f3ccd036..0a036437 100644
--- a/SparrowImplicitLib/par/thread.spr
+++ b/SparrowImplicitLib/par/thread.spr
@@ -27,8 +27,8 @@ fun ctor(this: @Thread, f: AnyType) if isValid(f())
     _handle = _Impl.startThread(f)
 
 //! Cannot copy construct or assign a Thread object
-[private] fun ctor(this, other: @Thread);
-[private] fun =(this, other: @Thread);
+[private] fun ctor(this, other: @Thread)
+[private] fun =(this, other: @Thread)
 
 //! Destructor. Detach the thread if joinable
 fun dtor(this: @Thread)
@@ -110,13 +110,13 @@ package _Impl
     [initCtor] datatype TimeSpec
         tv_sec, tv_nsec: Long
 
-    [native("pthread_create")] fun pthread_create(handle: @NativeThreadHandle, attr: @Byte, f: ThreadFun, arg: @Byte): Int;
-    [native("pthread_join")] fun pthread_join(handle: NativeThreadHandle, valPtr: @ @Byte): Int;
-    [native("pthread_detach")] fun pthread_detach(handle: NativeThreadHandle): Int;
-    [native("pthread_self")] fun pthread_self: NativeThreadHandle;
+    [native("pthread_create")] fun pthread_create(handle: @NativeThreadHandle, attr: @Byte, f: ThreadFun, arg: @Byte): Int
+    [native("pthread_join")] fun pthread_join(handle: NativeThreadHandle, valPtr: @ @Byte): Int
+    [native("pthread_detach")] fun pthread_detach(handle: NativeThreadHandle): Int
+    [native("pthread_self")] fun pthread_self: NativeThreadHandle
 
-    [native("pthread_threadid_np")] fun pthread_threadid_np(t: NativeThreadHandle, res: @ULong): Int;
+    [native("pthread_threadid_np")] fun pthread_threadid_np(t: NativeThreadHandle, res: @ULong): Int
 
-    [native("sched_yield")] fun sched_yield;
-    [native("nanosleep")] fun nanosleep(req, rem: @TimeSpec): Int;
+    [native("sched_yield")] fun sched_yield
+    [native("nanosleep")] fun nanosleep(req, rem: @TimeSpec): Int
 
diff --git a/SparrowImplicitLib/sprCore/basicDecls.spr b/SparrowImplicitLib/sprCore/basicDecls.spr
index d12fcf66..b1299172 100644
--- a/SparrowImplicitLib/sprCore/basicDecls.spr
+++ b/SparrowImplicitLib/sprCore/basicDecls.spr
@@ -766,7 +766,7 @@ package TypeOp
     [ct]
         [native("$typeDescription")] fun description(t: Type): StringRef
         [native("$typeHasStorage")] fun hasStorage(t: Type): Bool
-        [native("$typeMode")] fun mode(t: Type): Int;    // 0=unspecified, 1=rt, 2=ct
+        [native("$typeMode")] fun mode(t: Type): Int    // 0=unspecified, 1=rt, 2=ct
         [native("$typeCanBeUsedAtRt")] fun canBeUsedAtRt(t: Type): Bool
         [native("$typeNumRef")] fun numRef(t: Type): Int
         [native("$typeChangeMode")] fun changeMode(t: Type, mode: Int): Type
@@ -799,7 +799,7 @@ package TypeOp
 [ct, native("$commonType")] fun commonType(t, u: Type): Type
 
 /// Concept that is satisfied by any type
-concept AnyType(x); // Always true
+concept AnyType(x) // Always true
 
 /// Gets an object of the given type
 fun valueOfType(t: Type): t
diff --git a/SparrowImplicitLib/std/algorithms.spr b/SparrowImplicitLib/std/algorithms.spr
index 30a0d2cd..5eb2cc92 100644
--- a/SparrowImplicitLib/std/algorithms.spr
+++ b/SparrowImplicitLib/std/algorithms.spr
@@ -434,7 +434,7 @@ fun _quickSort(range: RandomAccessRange, m, n: SizeType, pred: AnyType)
 fun binarySearch(range: RandomAccessRange, value: AnyType): Bool \
         if isValid(value == *range)
     while !!range
-        var sz = range size;
+        var sz = range size
         var mid = (sz - 1) / 2
         var t = range(mid)
         if value == t
@@ -449,7 +449,7 @@ fun binarySearch(range: RandomAccessRange, value: AnyType): Bool \
 fun binarySearch(range: RandomAccessRange, value: AnyType, pred: AnyType): Bool \
         if typeOf(pred(value, *range)) == Bool
     while !!range
-        var sz = range size;
+        var sz = range size
         var mid = (sz - 1) / 2
         var t = range(mid)
         if pred(value, t)
diff --git a/SparrowImplicitLib/std/ptr.spr b/SparrowImplicitLib/std/ptr.spr
index dd1b52d2..9da5a4d6 100644
--- a/SparrowImplicitLib/std/ptr.spr
+++ b/SparrowImplicitLib/std/ptr.spr
@@ -35,6 +35,6 @@ datatype Ptr(type: Type)
 
     fun .(this: Ptr) = _ptr
 
-fun mkPtr(v: @AnyType) = Ptr(-@typeOf(v))(v);
+fun mkPtr(v: @AnyType) = Ptr(-@typeOf(v))(v)
 fun reinterpretPtr(t: Type, ptr: AnyType): Ptr(t) //if isValid(p.isNull()) && isValid(p.get())
     return Ptr(t)(reinterpretCast(@t, ptr.get()))
diff --git a/SparrowImplicitLib/std/rMath.spr b/SparrowImplicitLib/std/rMath.spr
index 0ea8095a..cc312abc 100644
--- a/SparrowImplicitLib/std/rMath.spr
+++ b/SparrowImplicitLib/std/rMath.spr
@@ -12,10 +12,8 @@ fun mean(r: Range): Double if Number(r.front)
     var sum: r.RetType = 0
     var count = 0
     for x = r
-    {
         sum += x
         ++count
-    }
     return Double(sum) / Double(count)
 
 fun rootMeanSquare r = sqrt(mean(r map \sqr))
diff --git a/SparrowImplicitLib/std/sortedMap.spr b/SparrowImplicitLib/std/sortedMap.spr
index cad6a11e..61483b14 100644
--- a/SparrowImplicitLib/std/sortedMap.spr
+++ b/SparrowImplicitLib/std/sortedMap.spr
@@ -1,20 +1,20 @@
-module std.sortedPtr;
+module std.sortedPtr
 
-import sortedTable(SortedTable);
-import tuple(Tuple, PairFirst, PairSecond);
-import ranges(transform);
+import sortedTable(SortedTable)
+import tuple(Tuple, PairFirst, PairSecond)
+import ranges(transform)
 
 datatype SortedMap(keyType, dataType, lessType, compareType: Type)
 
-    using KeyType = keyType;
-    using DataType = dataType;
-    using LessType = lessType;
-    using CompareType = compareType;
-    using ValueType = Tuple(KeyType, DataType);
-    using _ImplTable = SortedTable(keyType, ValueType, PairFirst(ValueType), lessType, compareType);
-    using RangeType = _ImplTable.RangeType;
+    using KeyType = keyType
+    using DataType = dataType
+    using LessType = lessType
+    using CompareType = compareType
+    using ValueType = Tuple(KeyType, DataType)
+    using _ImplTable = SortedTable(keyType, ValueType, PairFirst(ValueType), lessType, compareType)
+    using RangeType = _ImplTable.RangeType
 
-    _sortedTable: _ImplTable;
+    _sortedTable: _ImplTable
 
 [protected]
     fun ctor(this: @SortedMap, n: SizeType)                                       { _sortedTable.ctor(n, LessType(), CompareType()); }
@@ -26,36 +26,36 @@ datatype SortedMap(keyType, dataType, lessType, compareType: Type)
     fun ctor(this: @SortedMap, range: Range, n: SizeType, less: this.LessType, comp: this.CompareType)  { _sortedTable.ctor(range, n, less, comp); }
     fun ctor(this, other: @SortedMap)                                 { this._sortedTable ctor other._sortedTable; }
 
-    fun lessFunction(this: @SortedMap)                            = _sortedTable.lessFunction;
-    fun comparator(this: @SortedMap)                              = _sortedTable.comparator;
+    fun lessFunction(this: @SortedMap)                            = _sortedTable.lessFunction
+    fun comparator(this: @SortedMap)                              = _sortedTable.comparator
 
-    fun size(this: @SortedMap)                                    = _sortedTable.size();
-    fun isEmpty(this: @SortedMap)                                 = _sortedTable.isEmpty();
-    fun capacity(this: @SortedMap)                                = _sortedTable.capacity;
+    fun size(this: @SortedMap)                                    = _sortedTable.size()
+    fun isEmpty(this: @SortedMap)                                 = _sortedTable.isEmpty()
+    fun capacity(this: @SortedMap)                                = _sortedTable.capacity
     fun reserve(this: @SortedMap, n: SizeType)                    { _sortedTable.reserve(n); }
 
-    fun all(this: @SortedMap)                                     = _sortedTable.all;
-    fun keys(this: @SortedMap)                                    = transform(_sortedTable.all, PairFirst(ValueType)());
-    fun values(this: @SortedMap)                                  = transform(_sortedTable.all, PairSecond(ValueType)());
+    fun all(this: @SortedMap)                                     = _sortedTable.all
+    fun keys(this: @SortedMap)                                    = transform(_sortedTable.all, PairFirst(ValueType)())
+    fun values(this: @SortedMap)                                  = transform(_sortedTable.all, PairSecond(ValueType)())
 
-    fun insert(this: @SortedMap, key: @this.KeyType, data: @this.DataType)  = _sortedTable.insert(ValueType(key, data));
-    fun insert(this: @SortedMap, value: @this.ValueType)            = _sortedTable.insert(value);
+    fun insert(this: @SortedMap, key: @this.KeyType, data: @this.DataType)  = _sortedTable.insert(ValueType(key, data))
+    fun insert(this: @SortedMap, value: @this.ValueType)            = _sortedTable.insert(value)
     fun insert(this: @SortedMap, range: Range)                      { _sortedTable.insert(range); }
     fun remove(this: @SortedMap, key: @this.KeyType)                { _sortedTable.remove(key); }
     fun remove(this: @SortedMap, range: this.RangeType)             { _sortedTable.remove(range); }
 
-    fun contains(this: @SortedMap, key: @this.KeyType)              = _sortedTable.contains(key);
-    fun count(this: @SortedMap, key: @this.KeyType)                 = _sortedTable.count(key);
-    fun equalRange(this: @SortedMap, key: @this.KeyType)            = _sortedTable.equalRange(key);
-    fun find(this: @SortedMap, key: @this.KeyType)                  = _sortedTable.find(key);
+    fun contains(this: @SortedMap, key: @this.KeyType)              = _sortedTable.contains(key)
+    fun count(this: @SortedMap, key: @this.KeyType)                 = _sortedTable.count(key)
+    fun equalRange(this: @SortedMap, key: @this.KeyType)            = _sortedTable.equalRange(key)
+    fun find(this: @SortedMap, key: @this.KeyType)                  = _sortedTable.find(key)
 
-    fun ()(this: @SortedMap, key: @this.KeyType): @DataType         = this.at(key);
+    fun ()(this: @SortedMap, key: @this.KeyType): @DataType         = this.at(key)
     fun at(this: @SortedMap, key: @this.KeyType): @DataType
-        var r = _sortedTable.lowerBound(key);
+        var r = _sortedTable.lowerBound(key)
         if ( r.isEmpty() || !_sortedTable.comparator()(key, r.front().v1) )
 
-            var data: DataType;
-            r = _sortedTable.insert(ValueType(key, data));
+            var data: DataType
+            r = _sortedTable.insert(ValueType(key, data))
         return r.front().v2;
 
     fun clear(this: @SortedMap)                                 { _sortedTable.clear(); }

From d3fe9435c73c069c44e994b96a7aca3bacdcce00 Mon Sep 17 00:00:00 2001
From: Lucian Radu Teodorescu 
Date: Sun, 12 May 2019 13:45:25 +0300
Subject: [PATCH 21/23] Add check for missing return statements

---
 SparrowImplicitLib/logic/prolog.spr           |  2 +-
 .../logic/prologImpl/parser.spr               |  2 +
 tests/Basic2/Lambda.spr                       |  3 +-
 tools/checks/returnStmt.spr                   | 50 +++++++++++++++++++
 tools/formatDetails/consoleErrorReporter.spr  | 20 ++++++++
 tools/formatDetails/sourceData.spr            |  4 +-
 tools/formatTool.spr                          | 32 +++++++++---
 7 files changed, 101 insertions(+), 12 deletions(-)
 create mode 100644 tools/checks/returnStmt.spr

diff --git a/SparrowImplicitLib/logic/prolog.spr b/SparrowImplicitLib/logic/prolog.spr
index 75329efa..ca150fd6 100644
--- a/SparrowImplicitLib/logic/prolog.spr
+++ b/SparrowImplicitLib/logic/prolog.spr
@@ -20,13 +20,13 @@ import time = time
     var sourceStr: meta.AstNode = sourceString
     [ct] if ( (sourceString nodeKind) != meta.nkSparrowExpLiteral )
         meta.report("compileProlog should take a string literal as argument", (sourceStr location));
+        return CompilerAstNode()
     else
         sourceStr semanticCheck
         var loc = sourceStr location
         var ctx = sourceStr context
         var str: String = astEval(sourceString clone)
         return handlePrologCode(str, loc, ctx)
-    ;
 
 [ct] fun handlePrologCode(code: @String, location: meta.Location, context: meta.CompilationContext): meta.AstNode
     //cout << "(" << location.startLineNo << ":" << location.startColNo << " - " << location.endLineNo << ":" << location.endColNo << ')' << endl << flush;
diff --git a/SparrowImplicitLib/logic/prologImpl/parser.spr b/SparrowImplicitLib/logic/prologImpl/parser.spr
index e5371508..a725921e 100644
--- a/SparrowImplicitLib/logic/prologImpl/parser.spr
+++ b/SparrowImplicitLib/logic/prologImpl/parser.spr
@@ -188,6 +188,7 @@ concept TokenRange(x: Range) if -@(x.RetType) == Token
                 left = mkOpMul(loc, left, right)
             else
                 left = mkOpDiv(loc, left, right)
+        return ExpressionPtr()
 
     fun _parsePlusMinusExpression(this: @Parser): ExpressionPtr
         // Parse left part of the expression
@@ -211,6 +212,7 @@ concept TokenRange(x: Range) if -@(x.RetType) == Token
                 left = mkOpPlus(loc, left, right)
             else
                 left = mkOpMinus(loc, left, right)
+        return ExpressionPtr()
 
     fun _parseSimpleExpression(this: @Parser): ExpressionPtr
         // Accept expression in parenthesis
diff --git a/tests/Basic2/Lambda.spr b/tests/Basic2/Lambda.spr
index ea99dc11..039aba00 100644
--- a/tests/Basic2/Lambda.spr
+++ b/tests/Basic2/Lambda.spr
@@ -5,7 +5,7 @@ fun fact(n: Int): Int
     else return n*fact(n-1)
 
 datatype FactFun
-    
+
 fun ()(this: FactFun, n: Int) = fact(n)
 
 fun doCall(f: AnyType, val: Int): Int
@@ -89,6 +89,7 @@ datatype Foo
 
 fun getVector(): Foo
     var v = Foo(10)
+    return v
 
 fun testVector(f: AnyType)
     var v = f()
diff --git a/tools/checks/returnStmt.spr b/tools/checks/returnStmt.spr
new file mode 100644
index 00000000..c7f63611
--- /dev/null
+++ b/tools/checks/returnStmt.spr
@@ -0,0 +1,50 @@
+module formatTool.checks.returnStmt
+
+import formatDetails.sourceData
+
+fun checkReturnInFunctions(src: @SourceData)
+    _findFun(src.rootNode)
+
+fun _findFun(node: Node)
+    if node.isNull
+        return
+    if (node kind) == nkFun
+        _checkFun(node)
+    for child = (node children)
+        _findFun(child)
+
+fun _checkFun(node: Node)
+    // Ignore functions with no return type or with no explicit body
+    if (node children)(1).isNull || (node children)(2).isNull
+        return
+    var res = (node children)(2) _checkBody
+    if res == _resEndsWithOther
+        reportWarning(node location, 'Function ', node name, ' does not end with return')
+    else if res == _resPartialReturn
+        reportWarning(node location, 'Function ', node name, ': not all alternatives end with return')
+
+fun _checkBody(node: Node): Int
+    if node.isNull
+        return _resEndsWithOther
+    var nk = node kind
+    if nk == nkBlockStmt || nk == nkNodeList
+        return _checkBody((node children) back)
+    else if nk == nkReturnStmt
+        return _resEndsWithReturn
+    if nk == nkModifiers
+        return _checkBody((node children) front)
+    else if nk == nkIfStmt
+        var r1 = _checkBody((node children)(1))
+        var r2 = _checkBody((node children)(2))
+        if r1 == _resEndsWithReturn && r2 == _resEndsWithReturn
+            return _resEndsWithReturn
+        else if r1 == _resEndsWithOther && r2 == _resEndsWithOther
+            return _resEndsWithOther
+        else
+            return _resPartialReturn
+    else
+        return _resEndsWithOther
+
+using _resEndsWithReturn = 0
+using _resEndsWithOther = 1
+using _resPartialReturn = 2
\ No newline at end of file
diff --git a/tools/formatDetails/consoleErrorReporter.spr b/tools/formatDetails/consoleErrorReporter.spr
index 4a77c58e..a2055de1 100644
--- a/tools/formatDetails/consoleErrorReporter.spr
+++ b/tools/formatDetails/consoleErrorReporter.spr
@@ -16,5 +16,25 @@ fun reportError(loc: @Location, msg: StringRef)
     cout << 'ERROR: ' << msg << '\n'    // IGNORE-ERROR for test.py
     exit(1)
 
+fun reportWarning(loc: @Location, msg: AnyType)
+    if loc.end.line > 1 || loc.end.col > 1
+        cout << loc << ' '
+    cout << 'WARNING: ' << msg << '\n'
+
+fun reportWarning(loc: @Location, m1, m2: AnyType)
+    if loc.end.line > 1 || loc.end.col > 1
+        cout << loc << ' '
+    cout << 'WARNING: ' << m1 << m2 << '\n'
+
+fun reportWarning(loc: @Location, m1, m2, m3: AnyType)
+    if loc.end.line > 1 || loc.end.col > 1
+        cout << loc << ' '
+    cout << 'WARNING: ' << m1 << m2 << m3 << '\n'
+
+fun reportWarning(loc: @Location, m1, m2, m3, m4: AnyType)
+    if loc.end.line > 1 || loc.end.col > 1
+        cout << loc << ' '
+    cout << 'WARNING: ' << m1 << m2 << m3 << m4 << '\n'
+
 fun reportError(this: @ConsoleErrorReporter, loc: @Location, msg: StringRef)
     reportError(loc, msg)
diff --git a/tools/formatDetails/sourceData.spr b/tools/formatDetails/sourceData.spr
index d95e9213..ea05426e 100644
--- a/tools/formatDetails/sourceData.spr
+++ b/tools/formatDetails/sourceData.spr
@@ -91,8 +91,8 @@ fun printAst(node: Node, indent: Int = 0)
     cout << (node kind) << ' ' << (node location)
     if !(node name).isEmpty
         cout << ' name:"' << (node name) << '"'
-    if (node parent) isSet
-        cout << ' parent:' << ((node parent) kind)
+    //if (node parent) isSet
+    //    cout << ' parent:' << ((node parent) kind)
     cout << '\n'
     for child = (node children)
         printAst(child, indent+1)
diff --git a/tools/formatTool.spr b/tools/formatTool.spr
index a1903706..e0ecdf34 100644
--- a/tools/formatTool.spr
+++ b/tools/formatTool.spr
@@ -2,6 +2,7 @@
 import formatDetails.sourceData
 import transforms.emptyTransform, transforms.defaultFormat, transforms.refToMut
 import transforms.useLayout, transforms.removeEolSemicolons
+import checks.returnStmt
 
 import os
 
@@ -16,7 +17,8 @@ fun sprMain
     var filename = ''
 
     var inPlace = false
-    var transforms: Transforms
+    var doPrintAst = false
+    var transforms, checks: Transforms
 
     for i=1..programArgs.size
         var arg = programArgs(i)
@@ -24,9 +26,16 @@ fun sprMain
         if arg == '-format'
             transforms += \useLayoutFormatter
             transforms += \removeEolSemicolons
+        else if arg == '-f=layout'
+            transforms += \useLayoutFormatter
+            transforms += \removeEolSemicolons
         else if arg == '-f=empty'       ; transforms += \emptyTransform
         else if arg == '-f=ref-to-mut'  ; transforms += \refToMut
         else if arg == '-i'             ; inPlace = true
+        else if arg == '-check'
+            checks += \checkReturnInFunctions
+        else if arg == '-c=return'      ; checks += \checkReturnInFunctions
+        else if arg == '-printAst'      ; doPrintAst = true
         else if arg.size > 0 && arg(0) == '-'.char
             // This looks like a flag, but we don't recognize it
             _printArgsError(toString('invalid argument: "', arg, '"').asStringRef)
@@ -40,8 +49,6 @@ fun sprMain
         // No filename?
         _printArgsError('no filename given')
 
-    // TODO -c == check
-
     // Load the source data
     var sourceData: SourceData
     sourceData load filename
@@ -49,15 +56,24 @@ fun sprMain
     // Check the regions in which we should disable reformatting
     _checkDisableFormatting(sourceData)
 
+    if doPrintAst
+        sourceData.rootNode printAst
+        return
+
+    // Perform all the checks
+    for trFun = checks.all
+        trFun(sourceData)
+
     // Transform the tokens
     for trFun = transforms.all
         trFun(sourceData)
 
-    // Write the output
-    if inPlace
-        sourceData.tokens _writeToFile filename
-    else
-        sourceData.tokens _writeToStdout
+    if !transforms.isEmpty
+        // Write the output
+        if inPlace
+            sourceData.tokens _writeToFile filename
+        else
+            sourceData.tokens _writeToStdout
 
 fun _printArgsError(msg: StringRef)
     cout << 'ERROR: Invalid arguments passed (' << msg << ')\n\n' // IGNORE-ERROR for test.py

From 690436052ef913ca5caa399725f59ca311776c08 Mon Sep 17 00:00:00 2001
From: Lucian Radu Teodorescu 
Date: Sun, 12 May 2019 14:35:13 +0300
Subject: [PATCH 22/23] Tool to check module names

---
 SparrowImplicitLib/sprCore/basicDecls.spr    |  2 +-
 SparrowImplicitLib/std/sortedMap.spr         |  2 +-
 tools/checks/moduleName.spr                  | 42 ++++++++++++++++++++
 tools/formatDetails/consoleErrorReporter.spr |  5 +++
 tools/formatTool.spr                         |  7 +++-
 5 files changed, 54 insertions(+), 4 deletions(-)
 create mode 100644 tools/checks/moduleName.spr

diff --git a/SparrowImplicitLib/sprCore/basicDecls.spr b/SparrowImplicitLib/sprCore/basicDecls.spr
index b1299172..96cbb566 100644
--- a/SparrowImplicitLib/sprCore/basicDecls.spr
+++ b/SparrowImplicitLib/sprCore/basicDecls.spr
@@ -664,7 +664,7 @@ datatype StringRef
     fun popBack(this: @StringRef, n: SizeType)    { end := ptrSub(end, n); }
 
     fun subrange(this: @StringRef, index: SizeType, num: SizeType): StringRef
-        return StringRef(ptrAdd(begin, index), ptrAdd(begin, num))
+        return StringRef(ptrAdd(begin, index), ptrAdd(begin, index+num))
 
     fun cStr(this: @StringRef): @Char = reinterpretCast(@Char, begin)
 
diff --git a/SparrowImplicitLib/std/sortedMap.spr b/SparrowImplicitLib/std/sortedMap.spr
index 61483b14..30029cd8 100644
--- a/SparrowImplicitLib/std/sortedMap.spr
+++ b/SparrowImplicitLib/std/sortedMap.spr
@@ -1,4 +1,4 @@
-module std.sortedPtr
+module std.sortedMap
 
 import sortedTable(SortedTable)
 import tuple(Tuple, PairFirst, PairSecond)
diff --git a/tools/checks/moduleName.spr b/tools/checks/moduleName.spr
new file mode 100644
index 00000000..0d1b465d
--- /dev/null
+++ b/tools/checks/moduleName.spr
@@ -0,0 +1,42 @@
+module formatTool.checks.moduleName
+
+import formatDetails.sourceData
+
+fun checkModuleName(src: @SourceData)
+    var node = src.rootNode
+    if node.isNull
+        return
+    var modName = (node children)(0)
+    if modName.isNull
+        return
+    var name = _getLastNameInQid(modName)
+    var filename = src.filename.asStringRef
+    var sz = filename.size
+    if sz > 4 //&& filename.subrange(sz-4, 4) == '.spr'
+        filename.popBack(4)
+        sz -= 4
+        if sz >= name.size
+            filename = filename.subrange(sz-name.size, name.size)
+        if !_caseInsensitiveCompare(name, filename)
+            reportWarning(node location, "Module name: '", name, "' doesn't match filename: '", src.filename, "'")
+
+fun _getLastNameInQid(node: Node): StringRef
+    var nk = node kind
+    if nk == nkIdentifier
+        return node name
+    else if nk == nkCompoundExpr
+        var id = (node children)(1)
+        if id.isNull
+            return ''
+        return id name
+
+fun _caseInsensitiveCompare(lhs, rhs: StringRef): Bool
+    if lhs.size != rhs.size
+        return false
+    var sz: Int = lhs.size
+    for i=0..sz
+        if (Int(lhs(i)) _tolower) != (Int(rhs(i)) _tolower)
+            return false
+    return true
+
+[native("tolower")] fun _tolower(c: Int): Int
diff --git a/tools/formatDetails/consoleErrorReporter.spr b/tools/formatDetails/consoleErrorReporter.spr
index a2055de1..5de2018a 100644
--- a/tools/formatDetails/consoleErrorReporter.spr
+++ b/tools/formatDetails/consoleErrorReporter.spr
@@ -36,5 +36,10 @@ fun reportWarning(loc: @Location, m1, m2, m3, m4: AnyType)
         cout << loc << ' '
     cout << 'WARNING: ' << m1 << m2 << m3 << m4 << '\n'
 
+fun reportWarning(loc: @Location, m1, m2, m3, m4, m5: AnyType)
+    if loc.end.line > 1 || loc.end.col > 1
+        cout << loc << ' '
+    cout << 'WARNING: ' << m1 << m2 << m3 << m4 << m5 << '\n'
+
 fun reportError(this: @ConsoleErrorReporter, loc: @Location, msg: StringRef)
     reportError(loc, msg)
diff --git a/tools/formatTool.spr b/tools/formatTool.spr
index e0ecdf34..9aaf269b 100644
--- a/tools/formatTool.spr
+++ b/tools/formatTool.spr
@@ -2,7 +2,7 @@
 import formatDetails.sourceData
 import transforms.emptyTransform, transforms.defaultFormat, transforms.refToMut
 import transforms.useLayout, transforms.removeEolSemicolons
-import checks.returnStmt
+import checks.returnStmt, checks.moduleName
 
 import os
 
@@ -34,7 +34,9 @@ fun sprMain
         else if arg == '-i'             ; inPlace = true
         else if arg == '-check'
             checks += \checkReturnInFunctions
+            checks += \checkModuleName
         else if arg == '-c=return'      ; checks += \checkReturnInFunctions
+        else if arg == '-c=modName'     ; checks += \checkModuleName
         else if arg == '-printAst'      ; doPrintAst = true
         else if arg.size > 0 && arg(0) == '-'.char
             // This looks like a flag, but we don't recognize it
@@ -123,6 +125,7 @@ fun _getCommentContent(tokenStr: StringRef): StringRef
         res popBack
     return res
 
-//<<
Date: Sat, 1 Jun 2019 15:25:44 +0300
Subject: [PATCH 23/23] Tool to remove extra spaces

---
 SparrowImplicitLib/check.spr                  |  6 ----
 SparrowImplicitLib/logic/lRef.spr             |  5 ---
 SparrowImplicitLib/logic/predicates.spr       |  7 ----
 SparrowImplicitLib/logic/prolog.spr           |  2 +-
 .../logic/prologImpl/codeGen.spr              |  3 +-
 SparrowImplicitLib/logic/prologImpl/lType.spr |  1 -
 SparrowImplicitLib/logic/prologImpl/lexer.spr |  2 --
 .../logic/prologImpl/parser.spr               |  2 --
 SparrowImplicitLib/logic/prologImpl/token.spr |  1 -
 SparrowImplicitLib/logic/recurse.spr          |  2 --
 SparrowImplicitLib/meta/compilerCore.spr      |  6 ----
 SparrowImplicitLib/meta/location.spr          |  2 --
 SparrowImplicitLib/par/atomic.spr             |  2 --
 SparrowImplicitLib/par/config.spr             |  1 -
 SparrowImplicitLib/par/locks.spr              |  1 -
 SparrowImplicitLib/par/parFor.spr             |  2 --
 SparrowImplicitLib/par/tasks.spr              |  1 -
 .../par/tasksImpl/scheduler.spr               |  1 -
 .../par/tasksImpl/taskQueue.spr               |  1 -
 SparrowImplicitLib/par/tasksImpl/taskType.spr |  2 --
 .../par/tasksImpl/workerImpl.spr              |  2 --
 SparrowImplicitLib/par/thread.spr             |  3 --
 SparrowImplicitLib/sprCore/basicDecls.spr     | 10 ------
 SparrowImplicitLib/sprCore/functionPtr.spr    |  2 --
 SparrowImplicitLib/sprCore/streamBasic.spr    |  1 -
 SparrowImplicitLib/std/array.spr              |  1 -
 .../std/defaultHashFunction.spr               |  1 -
 SparrowImplicitLib/std/function.spr           |  2 --
 SparrowImplicitLib/std/hashTable.spr          |  3 --
 SparrowImplicitLib/std/list.spr               |  1 -
 SparrowImplicitLib/std/optional.spr           |  1 -
 SparrowImplicitLib/std/rMath.spr              |  1 -
 SparrowImplicitLib/std/ranges.spr             |  4 ---
 SparrowImplicitLib/std/rawPtr.spr             |  1 -
 SparrowImplicitLib/std/scopedPtr.spr          |  1 -
 SparrowImplicitLib/std/staticArray.spr        |  1 -
 SparrowImplicitLib/std/string.spr             |  2 --
 SparrowImplicitLib/std/vector.spr             |  1 -
 tests/Basic/Auto.spr                          |  1 -
 tests/Basic/CallCtorDtor.spr                  |  1 -
 tests/Basic/Compound.spr                      |  1 -
 tests/Basic/Concepts.spr                      |  9 ++---
 tests/Basic/Convert.spr                       |  1 -
 tests/Basic/CtFun.spr                         |  1 -
 tests/Basic/CtToRt.spr                        |  1 -
 tests/Basic/CtToRtComplex.spr                 |  1 -
 tests/Basic/DefaultParam.spr                  |  3 --
 tests/Basic/Functor.spr                       |  2 --
 tests/Basic/GeneratedCtorDtor.spr             |  9 -----
 tests/Basic/Generics.spr                      |  2 --
 tests/Basic/IfClause.spr                      |  7 ----
 tests/Basic/ObjectCopy.spr                    |  2 --
 tests/Basic/ObjectCopyRVO.spr                 |  4 ---
 tests/Basic/Operators.spr                     |  3 --
 tests/Basic/Overload.spr                      |  2 --
 tests/Basic/SparrowImplicitLib.spr            |  7 ----
 tests/Basic/Stmt.spr                          |  2 +-
 tests/Basic/This.spr                          |  2 --
 tests/Basic/TypeVar.spr                       |  1 -
 tests/Basic/datatype/generic.spr              |  1 -
 tests/Basic/datatype/interaction.spr          |  1 -
 tests/Basic/datatype/syntax.spr               |  1 -
 tests/Basic/exp/dotOper.spr                   |  3 --
 tests/Basic2/Axioms.spr                       |  6 ++--
 tests/Basic2/ConceptOfGeneric.spr             |  1 -
 tests/Basic2/Conditional.spr                  |  1 -
 tests/Basic2/CtFor.spr                        |  1 -
 tests/Basic2/For.spr                          |  1 -
 tests/Basic2/GenericPackage.spr               |  1 -
 tests/Basic2/InstSpeed.spr                    |  1 -
 tests/Basic2/Lambda.spr                       |  1 -
 tests/Basic2/LogicalAndOr.spr                 |  5 ---
 tests/Basic2/Precedence.spr                   |  1 -
 tests/Basic2/Regular.spr                      |  6 +---
 tests/Basic2/TypeTraits.spr                   |  1 -
 tests/BenchmarkGame/meteor.spr                | 19 +---------
 tests/BenchmarkGame/nbody.spr                 |  1 -
 tests/Bugs/ParenInGeneric.spr                 |  1 -
 tests/Bugs/SpecializationOnCt.spr             |  2 --
 tests/Bugs/TwiceFor.spr                       |  1 -
 tests/Bugs/VectorOfCtClass.spr                |  1 -
 tests/CompilerApi/AstFactorial.spr            |  1 -
 tests/CompilerApi/Diagnostic.spr              |  3 +-
 tests/Examples/MinPerfHash.spr                |  2 --
 tests/Examples/NQueens.spr                    |  3 --
 tests/Examples/Power.spr                      |  1 -
 tests/Examples/Regex.spr                      |  3 --
 tests/Frontend/Operators.spr                  |  2 --
 tests/Frontend/PrefixPostfix.spr              |  1 -
 tests/Frontend/parserTest.spr                 |  1 -
 tests/Imports/ImportInTheMiddle.spr           |  6 ++--
 tests/Logic/FibOptTest.spr                    |  1 -
 tests/Logic/FibPrologErr.spr                  |  1 -
 tests/Logic/LogicTest.spr                     |  3 --
 tests/Logic/PrologParserTest.spr              |  2 --
 tests/Logic/Solar.spr                         |  1 -
 tests/Par/ParForTest.spr                      |  1 -
 tests/Par/TaskTest.spr                        |  1 -
 tests/Par/ThreadTest.spr                      |  1 -
 tests/Par/TlsTest.spr                         |  1 -
 tests/PerfTests/FibRanges/fib_op.spr          |  3 +-
 tests/PerfTests/FibRanges/fib_op_base.spr     |  4 +--
 tests/PerfTests/GoogleBench/LoopTesterApp.spr |  3 --
 tests/PerfTests/Hash/TestHashPerf.spr         |  1 -
 .../PerfTests/LazyRanges/lazy_ranges_base.spr |  1 -
 tests/StdLib/AlgorithmsTest1.spr              |  3 +-
 tests/StdLib/AlgorithmsTest2.spr              |  6 ++--
 tests/StdLib/AlgorithmsTest3.spr              |  5 ++-
 tests/StdLib/AlgorithmsTest4.spr              |  6 ++--
 tests/StdLib/CheckTest.spr                    |  9 +++--
 tests/StdLib/FunTest.spr                      |  1 -
 tests/StdLib/HashMapTest.spr                  |  3 --
 tests/StdLib/ListTest.spr                     |  8 ++---
 tests/StdLib/PtrTest.spr                      |  2 --
 tests/StdLib/RangesTest.spr                   | 11 +++---
 tests/StdLib/TupleTest.spr                    | 14 ++++----
 tests/StdLib/VectorTest.spr                   | 29 +++++++--------
 tools/formatDetails/astNodes.spr              |  2 --
 tools/formatDetails/consoleErrorReporter.spr  |  1 -
 tools/formatDetails/nodeKinds.spr             |  1 -
 tools/formatDetails/sourceData.spr            |  1 -
 tools/formatDetails/tokenDataSource.spr       |  1 -
 tools/formatTool.spr                          |  4 ++-
 tools/transforms/removeExtraSpaces.spr        | 35 +++++++++++++++++++
 tools/transforms/utils.spr                    |  6 ++--
 125 files changed, 96 insertions(+), 306 deletions(-)
 create mode 100644 tools/transforms/removeExtraSpaces.spr

diff --git a/SparrowImplicitLib/check.spr b/SparrowImplicitLib/check.spr
index 94e725d1..e7786a8d 100644
--- a/SparrowImplicitLib/check.spr
+++ b/SparrowImplicitLib/check.spr
@@ -18,14 +18,11 @@ fun ()(this: @Gen, sizeHint: UInt): ValueType = _generator(sizeHint)
 
 fun isValid(this: @Gen): Bool = _generator isSet
 
-
-
 concept GenType(x)                  \
     if typeOf(x.ValueType) == Type  \
     && typeOf(x.isValid) == Bool  \
     && typeOf(x(0)) == x.ValueType
 
-
 //! Arbitrary prototype
 //fun arbitrary(t: Type): t Gen
 
@@ -33,7 +30,6 @@ concept GenType(x)                  \
 fun arbitrary(t: Type): t Gen if Integer(#$t)
     return mkGen(t, \_Impl.NumericGen(t).gen)
 
-
 //! Configuration options for our check function
 [initCtor]
 datatype CheckConfig
@@ -170,7 +166,6 @@ fun frequency(gens: Range): typeOf((#$gens.RetType).v2) if FreqGenType(#$gens.Re
         curAcc += fg.v1
     return typeOf((#$gens.RetType).v2)()
 
-
 fun randBetween(min, max: Integer): commonType(typeOf(min), typeOf(max))
     using T = commonType(typeOf(min), typeOf(max))
     using RAND_MAX = 0x7fffffff
@@ -260,7 +255,6 @@ package _Impl
         res.isTrivial = _pred(res.value)
         return res
 
-
     [initCtor]
     datatype ClassifierRange(rangeType, predType: Type) \
             if typeOf((#$predType)((#$rangeType front).value)) == String
diff --git a/SparrowImplicitLib/logic/lRef.spr b/SparrowImplicitLib/logic/lRef.spr
index 7d9cc758..ad3b4e4e 100644
--- a/SparrowImplicitLib/logic/lRef.spr
+++ b/SparrowImplicitLib/logic/lRef.spr
@@ -20,11 +20,9 @@ concept LRefType(x) if (
     && isValid(x.reset(#$x.ValueType))
     )
 
-
 //using logicDebug = 1
 //using logicRefDebug = 1
 
-
 // A logical reference that contains strings
 using LStr = LRef(String)
 
@@ -40,7 +38,6 @@ fun ctor(this: @ScopeTracer, name: StringRef)
 fun dtor(this: @ScopeTracer)
     cout << '>>> ' << str << '\n'
 
-
 /// A logical reference
 ///
 /// A logical reference is in essence a shared pointer over an optional value.
@@ -76,7 +73,6 @@ fun ctor(this, other: @LRef)
     [ct] if ( isValid(logicDebug) && isValid(logicRefDebug) )
         cout << "copy ctor: " << this << "\n"
 
-
 [protected]
     fun dtor(this: @LRef)
         [ct] if ( isValid(logicDebug) && isValid(logicRefDebug) )
@@ -181,7 +177,6 @@ package _Impl
 
     fun mkBinaryOp(l, r: @ValWrapper, oper: Int ct) = BinaryOp(-@typeOf(l), -@typeOf(r), oper)(l, r)
 
-
     fun mkPlusOp(l, r: @ValWrapper) = mkBinaryOp(l, r, _operPlus)
     fun mkMinusOp(l, r: @ValWrapper) = mkBinaryOp(l, r, _operMinus)
     fun mkMulOp(l, r: @ValWrapper) = mkBinaryOp(l, r, _operMul)
diff --git a/SparrowImplicitLib/logic/predicates.spr b/SparrowImplicitLib/logic/predicates.spr
index b2bc9c1f..ce986462 100644
--- a/SparrowImplicitLib/logic/predicates.spr
+++ b/SparrowImplicitLib/logic/predicates.spr
@@ -27,7 +27,6 @@ fun isSet(this: @Predicate) = predObj.isSet()
 
 fun ()(this: @Predicate): Bool = predObj()
 
-
 /// Logic equality: equality test + inference
 fun eq(l, r: @AnyType) = _mkEq(mkValOrRef(l), mkValOrRef(r))
 fun /=/(l, r: @AnyType) = _mkEq(mkValOrRef(l), mkValOrRef(r))
@@ -42,8 +41,6 @@ using oper_precedence_=/ = oper_precedence_== + 1
 //setOperPrecedence("/=/", getOperPrecedence("==") + 1)
 //setOperPrecedence("=/", getOperPrecedence("==") + 1)
 
-
-
 /// Logic Disjunction
 fun ||(l, r: @PredicateType) = OrRelation(-@typeOf(l), -@typeOf(r))(l, r)
 
@@ -55,7 +52,6 @@ fun mkFalse = LFalse()
 /// Relation that always returns true
 fun mkTrue = LTrue()
 
-
 datatype UnifyLR(leftType, rightType: Type) if ValWrapper(#$leftType) && ValWrapper(#$rightType)
     using ValueType = Bool
     using ValuePassType = Bool
@@ -139,7 +135,6 @@ fun ()(this: @UnifyLR): Bool
 
 fun _mkEq(l, r: @ValWrapper) = UnifyLR(-@typeOf(l), -@typeOf(r))(l, r)
 
-
 datatype OrRelation(leftPredicateType, rightPredicateType: Type)
     using ValueType = Bool
     using ValuePassType = Bool
@@ -225,8 +220,6 @@ fun ()(this: @AndRelation): Bool
         return false
     return false
 
-
-
 datatype LFalse
     ;
 fun ()(this: LFalse) = false
diff --git a/SparrowImplicitLib/logic/prolog.spr b/SparrowImplicitLib/logic/prolog.spr
index ca150fd6..94b1ac26 100644
--- a/SparrowImplicitLib/logic/prolog.spr
+++ b/SparrowImplicitLib/logic/prolog.spr
@@ -19,7 +19,7 @@ import time = time
 [macro] fun compileProlog(sourceString: CompilerAstNode): CompilerAstNode
     var sourceStr: meta.AstNode = sourceString
     [ct] if ( (sourceString nodeKind) != meta.nkSparrowExpLiteral )
-        meta.report("compileProlog should take a string literal as argument", (sourceStr location));
+        meta.report("compileProlog should take a string literal as argument", (sourceStr location))
         return CompilerAstNode()
     else
         sourceStr semanticCheck
diff --git a/SparrowImplicitLib/logic/prologImpl/codeGen.spr b/SparrowImplicitLib/logic/prologImpl/codeGen.spr
index 94f0ca11..99d049e0 100644
--- a/SparrowImplicitLib/logic/prologImpl/codeGen.spr
+++ b/SparrowImplicitLib/logic/prologImpl/codeGen.spr
@@ -1,7 +1,7 @@
 import nodes
 import location
 import ir
-package meta 
+package meta
     import meta.sparrowNodes, meta.featherNodes, meta.compiler;
 
 [ct] fun genProlog(sps: @SparrowPrologSystem): meta.AstNode = Impl.genPrologSystem(sps)
@@ -12,7 +12,6 @@ package Impl
 
     [ct] var nullNode: AstNode
 
-
     [ct] fun genPrologSystem(sps: @SparrowPrologSystem): AstNode
         var l = sps.loc
         var resNodes: Vector(AstNode)
diff --git a/SparrowImplicitLib/logic/prologImpl/lType.spr b/SparrowImplicitLib/logic/prologImpl/lType.spr
index 83ecbea5..01041128 100644
--- a/SparrowImplicitLib/logic/prologImpl/lType.spr
+++ b/SparrowImplicitLib/logic/prologImpl/lType.spr
@@ -19,7 +19,6 @@ import meta = meta.compilerCore
     fun isAtomOnly(this: LType): Bool    = this._testBit(atom) && !this._testBit(number)
     fun isNumberOnly(this: LType): Bool  = this._testBit(number) && !this._testBit(atom)
 
-
     fun setAtomOnly(this: @LType): Bool   = this._setAlternativeBits(atom, number)
     fun setNumberOnly(this: @LType): Bool = this._setAlternativeBits(number, atom)
 
diff --git a/SparrowImplicitLib/logic/prologImpl/lexer.spr b/SparrowImplicitLib/logic/prologImpl/lexer.spr
index f0217e60..3556d563 100644
--- a/SparrowImplicitLib/logic/prologImpl/lexer.spr
+++ b/SparrowImplicitLib/logic/prologImpl/lexer.spr
@@ -60,7 +60,6 @@ fun _getNextToken(this: @Lexer): Token
         this._consumeLineComment   // Just drop all characters until the end of line
         return this._getNextToken  // Get the next token
 
-
     if isAlnum(ch)
         // Check for numbers, variables and string atoms
         if isDigit(ch)
@@ -103,7 +102,6 @@ fun _getNextToken(this: @Lexer): Token
             this._advanceSource
             return Token(_curLocation, tkClause)
 
-
     var errMsg: String = "Invalid character found while parsing Prolog code: "
     errMsg.append(ch)
     _errorReporter.raiseError(_curLocation, errMsg.asStringRef)
diff --git a/SparrowImplicitLib/logic/prologImpl/parser.spr b/SparrowImplicitLib/logic/prologImpl/parser.spr
index a725921e..3200295e 100644
--- a/SparrowImplicitLib/logic/prologImpl/parser.spr
+++ b/SparrowImplicitLib/logic/prologImpl/parser.spr
@@ -244,7 +244,6 @@ concept TokenRange(x: Range) if -@(x.RetType) == Token
             this._invalidToken(tok, String("atom, variable, number or antiquote"))
         return ExpressionPtr()
 
-
     fun _expectToken(this: @Parser, tok: @Token, expected: Int)
         if tok.type != expected
             this._invalidToken(tok, tokenTypeToString(expected))
@@ -253,5 +252,4 @@ concept TokenRange(x: Range) if -@(x.RetType) == Token
         var msg: String = String("Invalid token found: ") + tokenTypeToString(tok.type) + String("; expected: ") + expected
         this._errorReporter.raiseError(tok.loc, msg.asStringRef)
 
-
     fun mkParser(lexer: @TokenRange, errorReporter: @AnyType) = Parser(-@typeOf(lexer), -@typeOf(errorReporter))(lexer, errorReporter)
diff --git a/SparrowImplicitLib/logic/prologImpl/token.spr b/SparrowImplicitLib/logic/prologImpl/token.spr
index 37fb5254..052a1e8f 100644
--- a/SparrowImplicitLib/logic/prologImpl/token.spr
+++ b/SparrowImplicitLib/logic/prologImpl/token.spr
@@ -35,7 +35,6 @@ fun ctor(this: @Token, loc: @Location, type: Int, data: @String)
     this.type ctor type
     this.data ctor data
 
-
 fun >>(this: @Token, os: @OutStream)
     if type == tkEof
         os << ""
diff --git a/SparrowImplicitLib/logic/recurse.spr b/SparrowImplicitLib/logic/recurse.spr
index 98e49873..e2731a9f 100644
--- a/SparrowImplicitLib/logic/recurse.spr
+++ b/SparrowImplicitLib/logic/recurse.spr
@@ -24,7 +24,6 @@ fun rec(pred, a1, a2, a3, a4, a5: @AnyType) \
 
 fun _mkRecurse(predGenerator: @AnyType) = Recurse(-@typeOf(predGenerator))(predGenerator)
 
-
 datatype Recurse(predGeneratorType: Type)
     _relation: Predicate
     _predGenerator: predGeneratorType
@@ -48,7 +47,6 @@ fun ()(this: @Recurse): Bool
         cout << "Recurse.(): " << this << "\n"
     return _relation()
 
-
 fun >>(this: @Recurse, os: @OutStream)
     os << "Recurse(this=" << mkStreamRefWrapper(this) \
        << ", fun=" << _relation
diff --git a/SparrowImplicitLib/meta/compilerCore.spr b/SparrowImplicitLib/meta/compilerCore.spr
index ca97ab30..3162231e 100644
--- a/SparrowImplicitLib/meta/compilerCore.spr
+++ b/SparrowImplicitLib/meta/compilerCore.spr
@@ -1,7 +1,6 @@
 [public] import meta.location
 import std.contiguousMemoryRange
 
-
 // Main types
 
 /// Type representing a compilation context -- some information describing how
@@ -17,13 +16,11 @@ using AstNode = CompilerAstNode
 /// A range of nodes (contiguously aligned in memory)
 using AstNodeRange = ContiguousMemoryRange(AstNode)
 
-
 // Evaluation modes
 using modeUnspecified = 0
 using modeRt = 1
 using modeCt = 2
 
-
 // Diagnostic
 
 using diagInternal  = 0
@@ -54,7 +51,6 @@ fun mkDiagnostic(type: Int, loc: Location, message: StringRef): Diagnostic
     [native("$meta.raise")]
     fun raise()
 
-
 [ct]
 
     // CompilationContext functions
@@ -70,7 +66,6 @@ fun mkDiagnostic(type: Int, loc: Location, message: StringRef): Diagnostic
     [native("$meta.CompilationContext.sourceCode")]
     fun sourceCode(ctx: CompilationContext): SourceCode
 
-
     // AstType functions
 
     /// Gets the kind of the given type
@@ -92,7 +87,6 @@ fun mkDiagnostic(type: Int, loc: Location, message: StringRef): Diagnostic
     [native("$meta.AstType.canBeUsedAtRt")]
     fun canBeUsedAtRt(t: AstType): Bool
 
-
     // AstNode functions
 
     /// Tests if the given node is null
diff --git a/SparrowImplicitLib/meta/location.spr b/SparrowImplicitLib/meta/location.spr
index 8ae95df9..342308ae 100644
--- a/SparrowImplicitLib/meta/location.spr
+++ b/SparrowImplicitLib/meta/location.spr
@@ -10,7 +10,6 @@ datatype SourceCode = @Byte
 fun >>(s: @SourceCode, os: @OutStream)
     os << mkStreamRefWrapper(s.data)
 
-
 /// Type that holds the location information: a source code and a range of chars into it
 datatype Location
     sourceCode: SourceCode
@@ -44,7 +43,6 @@ fun mkLocation: Location
         res.end = end
         return res
 
-
 /// Set the location to (1,1,1,1), the first character in a stream
 fun setOne(l: @Location)
     l.start.line = 1
diff --git a/SparrowImplicitLib/par/atomic.spr b/SparrowImplicitLib/par/atomic.spr
index 31fbdba4..2d43c50c 100644
--- a/SparrowImplicitLib/par/atomic.spr
+++ b/SparrowImplicitLib/par/atomic.spr
@@ -81,7 +81,6 @@ datatype Atomic(T: Type) if sizeOf(T) <= 8
         return res
     fun _baseAtomic(this: @Atomic): @Atomic(_UnderlyingType) = reinterpretCast(@Atomic(_UnderlyingType), this)
 
-
 //! Compare the atomic value with the given comparand; if equal store 'newVal' and return true; if not equal returns false
 [native("_Atomic_compareAndSwap32")] fun compareAndSwap(x: @AtomicInt, newVal, comparand: Int): Bool
 [native("_Atomic_compareAndSwap64")] fun compareAndSwap(x: @AtomicLong, newVal, comparand: Long): Bool
@@ -94,7 +93,6 @@ fun compareAndSwap(x: @NonStdAtomicType, newVal, comparand: AnyType): Bool \
 fun asAtomic(val: @AnyType): @Atomic(-@typeOf(val)) if sizeOf(val) == sizeOf(Atomic(-@typeOf(val)))
     return reinterpretCast(@Atomic(-@typeOf(val)), val)
 
-
 package _Impl
     datatype AtomicTypeTraits(T: Type) if sizeOf(T) <= 4
         using _UnderlyingType = Int
diff --git a/SparrowImplicitLib/par/config.spr b/SparrowImplicitLib/par/config.spr
index 5fe4e528..5ecdb210 100644
--- a/SparrowImplicitLib/par/config.spr
+++ b/SparrowImplicitLib/par/config.spr
@@ -12,7 +12,6 @@ fun >>(h: NativeThreadHandle, os: @OutStream)
 
 using InvalidThreadHandle = NativeThreadHandle()
 
-
 //! Get the number of available logical CPU cores for our process
 //! This dictates how much parallelism we have to be exploit
 fun getAvailableCoresNum(): UInt
diff --git a/SparrowImplicitLib/par/locks.spr b/SparrowImplicitLib/par/locks.spr
index 4c1e6814..bd635d56 100644
--- a/SparrowImplicitLib/par/locks.spr
+++ b/SparrowImplicitLib/par/locks.spr
@@ -31,7 +31,6 @@ datatype ScopedTryLock(T: Type) if TryLockable(#$T)
     _theLock: @LockType
     _lockSucceeded: Bool
 
-
 fun ctor(this: @ScopedTryLock, theLock: @this.LockType)
     this._theLock := theLock
     this._lockSucceeded  = (_theLock tryLock)
diff --git a/SparrowImplicitLib/par/parFor.spr b/SparrowImplicitLib/par/parFor.spr
index 211ba844..84ebb73a 100644
--- a/SparrowImplicitLib/par/parFor.spr
+++ b/SparrowImplicitLib/par/parFor.spr
@@ -10,7 +10,6 @@ concept Partitioner(x) \
     && isValid(x.partStart()) \
     && isValid(x.partition(valueOfType(x.RangeType), 0))
 
-
 fun parFor(r: Range, f: AnyType) if isValid(f(r.front()))
     Impl.parFor(r, f, DefaultPartitioner(typeOf(r))())
 
@@ -47,7 +46,6 @@ datatype BoundedRange(baseRangeType: Type)
     using RetType = baseRangeType.RetType
     using _RangeType = baseRangeType
 
-
 fun ctor(this: @BoundedRange, r: @this._RangeType)
     _baseRange ctor r
     _count = (_baseRange rangeSize)
diff --git a/SparrowImplicitLib/par/tasks.spr b/SparrowImplicitLib/par/tasks.spr
index 808cfcaa..612c8f3f 100644
--- a/SparrowImplicitLib/par/tasks.spr
+++ b/SparrowImplicitLib/par/tasks.spr
@@ -8,7 +8,6 @@ import tp = tasksImpl.taskPrefix
 import tasksImpl.workerImpl
 import schedulerIf = tasksImpl.schedulerIf
 
-
 fun spawnRootAndWait(task: @TaskType)
     [ct] if isValidAndTrue(tasksImpl.traceCalls) && isValid(cout << task)
         cout << "spawnRootAndWait(" << task << ")" << endl
diff --git a/SparrowImplicitLib/par/tasksImpl/scheduler.spr b/SparrowImplicitLib/par/tasksImpl/scheduler.spr
index 8d5ff810..f97c09c7 100644
--- a/SparrowImplicitLib/par/tasksImpl/scheduler.spr
+++ b/SparrowImplicitLib/par/tasksImpl/scheduler.spr
@@ -85,7 +85,6 @@ fun schedEnqueue(task: TaskPtr)
     // Enqueue the task
     taskWroker.taskSystem.globalQueue pushFront task
 
-
 ///////////////////////////////////////////////////////////////////////////////
 // Task execution logic
 
diff --git a/SparrowImplicitLib/par/tasksImpl/taskQueue.spr b/SparrowImplicitLib/par/tasksImpl/taskQueue.spr
index 6a12a6e7..10357827 100644
--- a/SparrowImplicitLib/par/tasksImpl/taskQueue.spr
+++ b/SparrowImplicitLib/par/tasksImpl/taskQueue.spr
@@ -86,7 +86,6 @@ fun popBack(q: @TaskQueue): TaskPtr
 
     return res
 
-
 [initCtor] datatype TasksPrinter
     _first: TaskPtr
     list: @TaskQueue
diff --git a/SparrowImplicitLib/par/tasksImpl/taskType.spr b/SparrowImplicitLib/par/tasksImpl/taskType.spr
index 2fbd1385..cf553162 100644
--- a/SparrowImplicitLib/par/tasksImpl/taskType.spr
+++ b/SparrowImplicitLib/par/tasksImpl/taskType.spr
@@ -14,8 +14,6 @@ concept TaskType(x) \
     && ( isValidAndTrue(typeOf(x prefix) == @TaskPrefix) \
         || isValidAndTrue(typeOf(x.prefix) == TaskPrefix) )
 
-
 fun getPrefix(t: @TaskType): @TaskPrefix = t prefix if isValid(t prefix)
 fun getPrefix(t: @TaskType): @TaskPrefix = t.prefix if isValid(t.prefix) && !isValid(t prefix)
 
-
diff --git a/SparrowImplicitLib/par/tasksImpl/workerImpl.spr b/SparrowImplicitLib/par/tasksImpl/workerImpl.spr
index 284914a7..0cd0b000 100644
--- a/SparrowImplicitLib/par/tasksImpl/workerImpl.spr
+++ b/SparrowImplicitLib/par/tasksImpl/workerImpl.spr
@@ -91,7 +91,6 @@ fun worker(task: @TaskPrefix): @Worker = reinterpretCast(@Worker, task.worker.ge
 fun waitingWorker(task: @TaskPrefix): @Worker = reinterpretCast(@Worker, task.waitingWorker.get())
 fun setWaitingWorker(task: @TaskPrefix, w: @Worker) { task.waitingWorker = reinterpretCast(@Byte, w); }
 
-
 ////////////////////////////////////////////////////////////////////////////////
 // TaskSystem datatype
 
@@ -160,7 +159,6 @@ fun onTaskAvailable(ts: @TaskSystem)
 //! Get the number of currently available workers
 fun numAvailableWorkers(ts: @TaskSystem): SizeType = (ts.workers size) - (ts.idleCounter numIdleWorkers)
 
-
 ////////////////////////////////////////////////////////////////////////////////
 // InternalWorkerThread datatype
 
diff --git a/SparrowImplicitLib/par/thread.spr b/SparrowImplicitLib/par/thread.spr
index 0a036437..b8991a2f 100644
--- a/SparrowImplicitLib/par/thread.spr
+++ b/SparrowImplicitLib/par/thread.spr
@@ -16,8 +16,6 @@ fun ctor(this: @ThreadId, h: NativeThreadHandle)
 fun >>(tid: @ThreadId, os: @OutStream)
     os << tid.id
 
-
-
 datatype Thread
     _handle: NativeThreadHandle
 
@@ -71,7 +69,6 @@ fun getId(t: Thread): ThreadId = ThreadId(t._handle)
 //! Get the native handle of the given thread
 fun getNativeHandle(t: Thread): NativeThreadHandle = t._handle
 
-
 //! Get the current thread id
 fun curThreadId: ThreadId = ThreadId(NativeThreadHandle())
 
diff --git a/SparrowImplicitLib/sprCore/basicDecls.spr b/SparrowImplicitLib/sprCore/basicDecls.spr
index 96cbb566..45b4fe20 100644
--- a/SparrowImplicitLib/sprCore/basicDecls.spr
+++ b/SparrowImplicitLib/sprCore/basicDecls.spr
@@ -306,7 +306,6 @@ concept Number(x)                   \
     || FloatingPointNumber(x)       \
 
 
-
 datatype NumericLimits(t: Type) if t == Byte
     using maxValue = Byte(0x7f)
     using minValue = Byte(0x80)
@@ -380,7 +379,6 @@ using oper_precedence_>>    = 50
 using oper_assoc_=          = -1
 using oper_assoc_:=         = -1
 
-
 ////////////////////////////////////////////////////////////////////////////////
 /// operations on Bool & Char
 ///
@@ -400,7 +398,6 @@ using oper_assoc_:=         = -1
     [native("_Char_opLE")] fun <= (x, y: Char): Bool
     [native("_Char_opGE")] fun >= (x, y: Char): Bool
 
-
 ////////////////////////////////////////////////////////////////////////////////
 /// Numeric operations
 ///
@@ -616,10 +613,6 @@ using oper_assoc_:=         = -1
     fun post_--(n: @SizeType): SizeType { var old = n; n-=SizeType(1); return old; }
     fun post_--(n: @DiffType): DiffType { var old = n; n-=DiffType(1); return old; }
 
-
-
-
-
 ////////////////////////////////////////////////////////////////////////////////
 /// StringRef
 ///
@@ -741,7 +734,6 @@ fun construct()
     [native("$injectBackendCode")] fun injectBackendCode(code: StringRef)
     [native("$injectBackendCodeCt")] fun injectBackendCodeCt(code: StringRef)
 
-
 /// Type used to represent an untyped pointer
 [bitcopiable]
 datatype UntypedPtr = @Byte
@@ -805,7 +797,6 @@ concept AnyType(x) // Always true
 fun valueOfType(t: Type): t
 fun #$(t: Type): t
 
-
 ////////////////////////////////////////////////////////////////////////////////
 /// Some low-level helper functions
 ///
@@ -827,7 +818,6 @@ fun #$(t: Type): t
 [native("system")] fun systemNative(x: @Char)
 [native("sleep")] fun sleep(x: Int)
 
-
 ////////////////////////////////////////////////////////////////////////////////
 /// Range is such a fundamental concept
 ///
diff --git a/SparrowImplicitLib/sprCore/functionPtr.spr b/SparrowImplicitLib/sprCore/functionPtr.spr
index 9d9e1b47..57dbb3fc 100644
--- a/SparrowImplicitLib/sprCore/functionPtr.spr
+++ b/SparrowImplicitLib/sprCore/functionPtr.spr
@@ -174,7 +174,6 @@ package _Impl11
     [native("$funptr")] fun _doCall(this: @FunctionPtr11, p1: this.T1, p2: this.T2, p3: this.T3, p4: this.T4, p5: this.T5, p6: this.T6, p7: this.T7, p8: this.T8, p9: this.T9, p10: this.T10, p11: this.T11): ResT
     fun ()(this: @FunctionPtr11, p1: this.T1, p2: this.T2, p3: this.T3, p4: this.T4, p5: this.T5, p6: this.T6, p7: this.T7, p8: this.T8, p9: this.T9, p10: this.T10, p11: this.T11): ResT = this._doCall(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11)
 
-
 package _Impl12
     datatype FunctionPtr12(resT, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12: Type)
         using arity = 12
@@ -265,7 +264,6 @@ package _Impl15
     [native("$funptr")] fun _doCall(this: @FunctionPtr15, p1: this.T1, p2: this.T2, p3: this.T3, p4: this.T4, p5: this.T5, p6: this.T6, p7: this.T7, p8: this.T8, p9: this.T9, p10: this.T10, p11: this.T11, p12: this.T12, p13: this.T13, p14: this.T14, p15: this.T15): ResT
     fun ()(this: @FunctionPtr15, p1: this.T1, p2: this.T2, p3: this.T3, p4: this.T4, p5: this.T5, p6: this.T6, p7: this.T7, p8: this.T8, p9: this.T9, p10: this.T10, p11: this.T11, p12: this.T12, p13: this.T13, p14: this.T14, p15: this.T15): ResT = this._doCall(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15)
 
-
 using FunctionPtr = _Impl0.FunctionPtr0
 using FunctionPtr = _Impl1.FunctionPtr1
 using FunctionPtr = _Impl2.FunctionPtr2
diff --git a/SparrowImplicitLib/sprCore/streamBasic.spr b/SparrowImplicitLib/sprCore/streamBasic.spr
index be49dace..481de04c 100644
--- a/SparrowImplicitLib/sprCore/streamBasic.spr
+++ b/SparrowImplicitLib/sprCore/streamBasic.spr
@@ -20,7 +20,6 @@ fun << (s: @OutStream, x: @AnyType): typeOf(s) if !isValid(x.>>(s)) && isValid(s
     s.<<<(x)
     return s
 
-
 var endl: EndLineHelperClass
 var flush: FlushHelperClass
 
diff --git a/SparrowImplicitLib/std/array.spr b/SparrowImplicitLib/std/array.spr
index 2a5ae26e..70226da0 100644
--- a/SparrowImplicitLib/std/array.spr
+++ b/SparrowImplicitLib/std/array.spr
@@ -148,4 +148,3 @@ datatype Array(valueType: Type)
         cout << "    begin: " << mkStreamRefWrapper(_begin.bytePtr) << endl
         cout << "    end: " << mkStreamRefWrapper(_end.bytePtr) << endl
 
-
diff --git a/SparrowImplicitLib/std/defaultHashFunction.spr b/SparrowImplicitLib/std/defaultHashFunction.spr
index 9633e0a6..01e81d88 100644
--- a/SparrowImplicitLib/std/defaultHashFunction.spr
+++ b/SparrowImplicitLib/std/defaultHashFunction.spr
@@ -16,7 +16,6 @@ fun defaultHash(arg: Integer)     = SizeType(arg)
 fun defaultHash(arg: StringRef)   = _doHash(arg, _seed)
 fun defaultHash(arg: @String)     = _doHash(arg.asStringRef(), _seed)
 
-
 using _seed = 0xfadef00d
 
 /// FNV hash generator
diff --git a/SparrowImplicitLib/std/function.spr b/SparrowImplicitLib/std/function.spr
index 04667632..cb5037df 100644
--- a/SparrowImplicitLib/std/function.spr
+++ b/SparrowImplicitLib/std/function.spr
@@ -116,8 +116,6 @@ package _Impl2
     fun >>(this: @Function2, os: @OutStream)
         os << _data
 
-
-
 package _Impl3
     datatype Function3(resT, t1, t2, t3: Type)
         using arity = 3
diff --git a/SparrowImplicitLib/std/hashTable.spr b/SparrowImplicitLib/std/hashTable.spr
index c134e150..334e19ad 100644
--- a/SparrowImplicitLib/std/hashTable.spr
+++ b/SparrowImplicitLib/std/hashTable.spr
@@ -19,7 +19,6 @@ datatype HashTable(keyType, valueType, valueToKeyType, traitsType: Type)
     using _BucketsType = Array(_NodePtr)
     using _TraitsType = traitsType
 
-
     _buckets: _BucketsType
     _guard: _MyGuardNode
     _numElements: SizeType
@@ -312,7 +311,6 @@ fun >> (this: @_Node, os: @OutStream)
 datatype _GuardNode(valueType: Type)
     next: Ptr(_Node(valueType))
 
-
 [initCtor]
 datatype _HashRange(valueType: Type)
     using RetType = @valueType
@@ -325,7 +323,6 @@ datatype _HashRange(valueType: Type)
     fun front(this: _HashRange): this.RetType   = _startElem.get().data
     fun popFront(this: @_HashRange)             { _startElem = _startElem.get().next; }
 
-
 var _bucketCounts: StaticArray(SizeType, 31)
 
 using _loadFactor = 1
diff --git a/SparrowImplicitLib/std/list.spr b/SparrowImplicitLib/std/list.spr
index e48903e7..bb7c6aaa 100644
--- a/SparrowImplicitLib/std/list.spr
+++ b/SparrowImplicitLib/std/list.spr
@@ -436,7 +436,6 @@ datatype _NodeType(valueType: Type)
     fun popFront(this: @_ListRange)        { _begin = _begin.value().next }
     fun popBack(this: @_ListRange)         { _end = _end.value().prev }
 
-
     fun >>(this: _ListRange, os: @OutStream) if isValid(os << #$valueType)
         var first = true
         var p = _begin
diff --git a/SparrowImplicitLib/std/optional.spr b/SparrowImplicitLib/std/optional.spr
index f42e7740..fe463640 100644
--- a/SparrowImplicitLib/std/optional.spr
+++ b/SparrowImplicitLib/std/optional.spr
@@ -60,4 +60,3 @@ fun ctor(this: @Optional, val: @this.ValueType)
         else
             os << "Optional(none)"
 
-
diff --git a/SparrowImplicitLib/std/rMath.spr b/SparrowImplicitLib/std/rMath.spr
index cc312abc..4a8b4844 100644
--- a/SparrowImplicitLib/std/rMath.spr
+++ b/SparrowImplicitLib/std/rMath.spr
@@ -3,7 +3,6 @@ module std.rMath
 import math(sqrt)
 import algorithms(foldLeft)
 
-
 fun sqr n = n*n
 
 fun sum(r: Range) = foldLeft(r, (fun x,y = x+y), r.RetType(0))
diff --git a/SparrowImplicitLib/std/ranges.spr b/SparrowImplicitLib/std/ranges.spr
index d97c301b..4441706c 100644
--- a/SparrowImplicitLib/std/ranges.spr
+++ b/SparrowImplicitLib/std/ranges.spr
@@ -49,7 +49,6 @@ fun pre_*(r: @Range): r.RetType = r.front
 // Call operator on range == range.front
 //fun post_()(r: @Range) = r.front
 
-
 ///////////////////////////////////////////////////////////////////////////////
 // General range operations
 //
@@ -97,7 +96,6 @@ fun post_..(start: Number) = NumericRangeInc(typeOf(start))(start, NumericLimits
 
 fun ../(range: Range, step: Number) = NumericRangeWithStep(range.RetType)(range, step)
 
-
 ///////////////////////////////////////////////////////////////////////////////
 // Range constructors
 //
@@ -166,7 +164,6 @@ fun zip(range1, range2: Range) = zip(range1, range2, MakePair(-@typeOf(range1.fr
 /// Scans left a range for the given functor and initial accumulator value
 fun scanLeft(acc: AnyType, range: Range, function: AnyType) = ScanLeftRange(typeOf(acc), typeOf(range), typeOf(function))(acc, range, function)
 
-
 ///////////////////////////////////////////////////////////////////////////////
 // Classes that implement ranges
 //
@@ -542,7 +539,6 @@ datatype ValuesRange(contType: Type) if isValid((#$contType)(1))
 
     using RetType       = contType.ValueType
 
-
 [protected]
     fun isEmpty(this: @ValuesRange)         = _idx >= _values.size
     fun front(this: @ValuesRange): RetType  = _values(_idx)
diff --git a/SparrowImplicitLib/std/rawPtr.spr b/SparrowImplicitLib/std/rawPtr.spr
index c33571a3..45e2c6b2 100644
--- a/SparrowImplicitLib/std/rawPtr.spr
+++ b/SparrowImplicitLib/std/rawPtr.spr
@@ -35,7 +35,6 @@ fun ctor(this: @RawPtr, byteRef: @Byte) if this.ValueType != Byte
         _ptr := other._ptr
         other._ptr := t
 
-
     fun >>(this: RawPtr, os: @OutStream)
         os << "RawPtr(" << mkStreamRefWrapper(this.bytePtr) << ")"
 
diff --git a/SparrowImplicitLib/std/scopedPtr.spr b/SparrowImplicitLib/std/scopedPtr.spr
index 679e82b3..8be7412f 100644
--- a/SparrowImplicitLib/std/scopedPtr.spr
+++ b/SparrowImplicitLib/std/scopedPtr.spr
@@ -16,7 +16,6 @@ datatype ScopedPtr(type: Type)
     fun isNull(this: ScopedPtr)                  = _ref === null
     fun isSet(this: ScopedPtr)                   = _ref !== null
 
-
     fun reset(this: @ScopedPtr)                         { delete(_ref); _ref := null }
     fun reset(this: @ScopedPtr, ref: @this.ValueType)   { delete(this._ref); this._ref := ref }
 
diff --git a/SparrowImplicitLib/std/staticArray.spr b/SparrowImplicitLib/std/staticArray.spr
index ac50ce5a..3a13e06a 100644
--- a/SparrowImplicitLib/std/staticArray.spr
+++ b/SparrowImplicitLib/std/staticArray.spr
@@ -151,7 +151,6 @@ fun mkValues(v0,v1,v2,v3,v4,v5,v6,v7: AnyType) = StaticArray(typeOf(v0), 8)(v0,v
 fun mkValues(v0,v1,v2,v3,v4,v5,v6,v7,v8: AnyType) = StaticArray(typeOf(v0), 9)(v0,v1,v2,v3,v4,v5,v6,v7,v8)
 fun mkValues(v0,v1,v2,v3,v4,v5,v6,v7,v8,v9: AnyType) = StaticArray(typeOf(v0), 10)(v0,v1,v2,v3,v4,v5,v6,v7,v8,v9)
 
-
 [ctGeneric]
 fun StaticArray2d(baseType: Type, d1, d2: SizeType ct) \
     = StaticArray(StaticArray(baseType, d2), d1)
diff --git a/SparrowImplicitLib/std/string.spr b/SparrowImplicitLib/std/string.spr
index f92e7845..99e0fb58 100644
--- a/SparrowImplicitLib/std/string.spr
+++ b/SparrowImplicitLib/std/string.spr
@@ -84,7 +84,6 @@ fun ctor(this: @String, range: Range) if typeOf(range) != String
 
     fun asStringRef(this: @String)             = StringRef(_begin.bytePtr, _end.bytePtr)
 
-
     fun size(this: @String): SizeType          = _end.diff(_begin)
     fun isEmpty(this: @String)                 = _begin == _end
     fun capacity(this: @String): SizeType      = _endOfStore.diff(_begin)
@@ -257,7 +256,6 @@ fun + (x: String, y: StringRef): String
 
 //    return res
 
-
 fun intToString(x: Int): String
     var buf: static_buffer(12)
     _intToCString(x, reinterpretCast(@Char, buf))
diff --git a/SparrowImplicitLib/std/vector.spr b/SparrowImplicitLib/std/vector.spr
index 0c6c3974..bbd3d50b 100644
--- a/SparrowImplicitLib/std/vector.spr
+++ b/SparrowImplicitLib/std/vector.spr
@@ -118,7 +118,6 @@ datatype Vector(valueType: Type)
         if n <= curCapacity
             return
 
-
         if n < _initialCapacity
             n = _initialCapacity
         if n < _growthFactor*curCapacity
diff --git a/tests/Basic/Auto.spr b/tests/Basic/Auto.spr
index c34a49fc..a6ecbccc 100644
--- a/tests/Basic/Auto.spr
+++ b/tests/Basic/Auto.spr
@@ -22,7 +22,6 @@ fun f2(x: @AnyType) if typeOf(x) == (Int@)
     f2(a)
     writeLn(a)
 
-
 /*<<>>*/
 
-
diff --git a/tests/Basic/Generics.spr b/tests/Basic/Generics.spr
index 5284db58..0afa67e5 100644
--- a/tests/Basic/Generics.spr
+++ b/tests/Basic/Generics.spr
@@ -31,7 +31,6 @@ fun print(this: @MyVector)
     write(' ')
     writeLn(end)
 
-
 fun valSize(x: AnyType): SizeType
     return sizeOf(x)
 
@@ -67,7 +66,6 @@ fun valSize(x: AnyType): SizeType
     writeLn(valSize(v1))
     writeLn(valSize(v2))
 
-
 /*<<>>*/
 
-
 fun test2
     var x = 10
     var y = 11
diff --git a/tests/Basic2/LogicalAndOr.spr b/tests/Basic2/LogicalAndOr.spr
index b9075f67..0d00d4f2 100644
--- a/tests/Basic2/LogicalAndOr.spr
+++ b/tests/Basic2/LogicalAndOr.spr
@@ -59,7 +59,6 @@ fun test1
     cout << (f || f || t) << endl
     cout << (f || f || f) << endl
 
-
 /*<<=2 && 1>=2)
 
-
 /*<<>>*/
\ No newline at end of file
diff --git a/tests/Bugs/SpecializationOnCt.spr b/tests/Bugs/SpecializationOnCt.spr
index 537fed83..ee17d137 100644
--- a/tests/Bugs/SpecializationOnCt.spr
+++ b/tests/Bugs/SpecializationOnCt.spr
@@ -19,8 +19,6 @@ fun regexMatch(re: StringRef ct, str: StringRef): Bool
     cout << "CT: regexMatch(" << re << ", " << str << ")\n"
     return false
 
-
-
 fun sprMain
     var n = 5
 
diff --git a/tests/Bugs/TwiceFor.spr b/tests/Bugs/TwiceFor.spr
index 757d4136..ee0bd291 100644
--- a/tests/Bugs/TwiceFor.spr
+++ b/tests/Bugs/TwiceFor.spr
@@ -11,7 +11,6 @@ fun sprMain
         cout << ' ' << val
     cout << endl
 
-
 /*<<>>*/
 
-
 fun test10
     var x = 3
     var y = 4
@@ -207,7 +206,6 @@ fun test10
 7
 >>>*/
 
-
 fun test11
     var x = 3
     var y = 4
diff --git a/tests/Frontend/PrefixPostfix.spr b/tests/Frontend/PrefixPostfix.spr
index c6cadeac..5395aef2 100644
--- a/tests/Frontend/PrefixPostfix.spr
+++ b/tests/Frontend/PrefixPostfix.spr
@@ -7,7 +7,6 @@ fun ---(x: @Int): @Int
     x -= 1
     return x
 
-
 fun pre_+++(x: @Int): @Int
     x += 1
     return x
diff --git a/tests/Frontend/parserTest.spr b/tests/Frontend/parserTest.spr
index 50b36d02..e571e0f7 100644
--- a/tests/Frontend/parserTest.spr
+++ b/tests/Frontend/parserTest.spr
@@ -141,7 +141,6 @@ fun mkContinueStmt(this: @MyAstBuilder, loc: @Location) \
 fun mkReturnStmt(this: @MyAstBuilder, loc: @Location, expr: Node) \
     = createNode(loc, "return", repeat(expr, 1))
 
-
 fun sprMain
     if programArgs.size() < 2
         return
diff --git a/tests/Imports/ImportInTheMiddle.spr b/tests/Imports/ImportInTheMiddle.spr
index c66c355d..431baebc 100644
--- a/tests/Imports/ImportInTheMiddle.spr
+++ b/tests/Imports/ImportInTheMiddle.spr
@@ -1,13 +1,13 @@
 //!! -t "../Basic/SparrowImplicitLib.spr" -fno-main
 
-package Foo1 
-    fun test1 
+package Foo1
+    fun test1
         Foo2.a = 1
         Foo2.b = 2
         Foo2.c = 3
         Foo2.d = 4
 
-package Foo2 
+package Foo2
     import HeaderD
     import HeaderC
     import HeaderB
diff --git a/tests/Logic/FibOptTest.spr b/tests/Logic/FibOptTest.spr
index a3f9709e..8c835a6f 100644
--- a/tests/Logic/FibOptTest.spr
+++ b/tests/Logic/FibOptTest.spr
@@ -1,7 +1,6 @@
 //!!
 import logic.prologFrontend
 
-
 fun fib_native(p_1: Int, p_2: @Int): Bool
     var l2_X2: Int = Uninitialized()
     var l2_Y2: Int = Uninitialized()
diff --git a/tests/Logic/FibPrologErr.spr b/tests/Logic/FibPrologErr.spr
index 0c23b24f..cae9d08f 100644
--- a/tests/Logic/FibPrologErr.spr
+++ b/tests/Logic/FibPrologErr.spr
@@ -13,7 +13,6 @@ compileProlog("
     fib(sun, earth).    %% ERROR
 ")
 
-
 fun sprMain
     if ( programArgs.size() < 2 )
         return
diff --git a/tests/Logic/LogicTest.spr b/tests/Logic/LogicTest.spr
index 4eabf394..aa17347f 100644
--- a/tests/Logic/LogicTest.spr
+++ b/tests/Logic/LogicTest.spr
@@ -3,7 +3,6 @@ import logic.predicates
 //import assert;
 import os = os
 
-
 fun male(x: @LStr) = x /=/ "castor" || x /=/ "zeus"
 
 fun female(x: @LStr) = x /=/ "leda" || x /=/ "clytaemnestra"
@@ -14,7 +13,6 @@ fun parents(father, mother, child: LRef(String)) \
      = father /=/ "zeus" && mother /=/ "leda" && child /=/ "castor" \
     || father /=/ "zeus" && mother /=/ "leda" && child /=/ "clytaemnestra"
 
-
 fun sprMain
     if ( programArgs.size() < 2 )
         return
@@ -85,7 +83,6 @@ Found person: leda
 Found person: clytaemnestra
 >>>*/
 
-
 fun test5
     var father, mother, child: LStr
     var pred = parents(father, mother, child)
diff --git a/tests/Logic/PrologParserTest.spr b/tests/Logic/PrologParserTest.spr
index fc999941..7756f9f1 100644
--- a/tests/Logic/PrologParserTest.spr
+++ b/tests/Logic/PrologParserTest.spr
@@ -79,8 +79,6 @@ logic.compileProlog("
     ancestor(A, C) :- children(C, P), ancestor(A, P).
 }>
 
-
-
 fun sprMain
     if ( programArgs.size() < 2 )
         return
diff --git a/tests/Logic/Solar.spr b/tests/Logic/Solar.spr
index f98a8f53..4d98c55c 100644
--- a/tests/Logic/Solar.spr
+++ b/tests/Logic/Solar.spr
@@ -2,7 +2,6 @@
 import logic.predicates
 //import assert;
 
-
 fun orbits(a, b: @LStr) = (
        a /=/ "Mercury"  && b /=/ "Sun"
     || a /=/ "Venus"    && b /=/ "Sun"
diff --git a/tests/Par/ParForTest.spr b/tests/Par/ParForTest.spr
index d00696c0..0d94d5cc 100644
--- a/tests/Par/ParForTest.spr
+++ b/tests/Par/ParForTest.spr
@@ -9,7 +9,6 @@ import std.compilerInfo
     import par.atomic
     import test
 
-
     var counter: Int Atomic
     var outOfOrderCount: Int Atomic
 
diff --git a/tests/Par/TaskTest.spr b/tests/Par/TaskTest.spr
index b451b117..0d42c1d4 100644
--- a/tests/Par/TaskTest.spr
+++ b/tests/Par/TaskTest.spr
@@ -180,7 +180,6 @@ Final result: fib(30)=832040
 Final result: fib(30)=832040
 >>>*/
 
-
 /*-<<>>*/
diff --git a/tests/Par/ThreadTest.spr b/tests/Par/ThreadTest.spr
index eee4f2ce..2043378f 100644
--- a/tests/Par/ThreadTest.spr
+++ b/tests/Par/ThreadTest.spr
@@ -9,7 +9,6 @@ import std.compilerInfo
     import std.vector
     import std.string
 
-
     fun sprMain
         if programArgs.size() < 2
             return
diff --git a/tests/Par/TlsTest.spr b/tests/Par/TlsTest.spr
index 0f3f4584..118e0785 100644
--- a/tests/Par/TlsTest.spr
+++ b/tests/Par/TlsTest.spr
@@ -58,7 +58,6 @@ import std.compilerInfo
             t.get join
             t.release
 
-
     fun sprMain
         if programArgs.size() < 4
             return
diff --git a/tests/PerfTests/FibRanges/fib_op.spr b/tests/PerfTests/FibRanges/fib_op.spr
index a9cbcf1f..4897633d 100644
--- a/tests/PerfTests/FibRanges/fib_op.spr
+++ b/tests/PerfTests/FibRanges/fib_op.spr
@@ -4,14 +4,13 @@ import std.algorithms
 import std.rMath
 import std.tuple
 
-fun fib(n: Int): Int 
+fun fib(n: Int): Int
     var p: Int*Int = 0 ~ 1   // Last 2 entries
     for i = 0..n
         p = p.v2 ~ (p.v1 + p.v2)
     return p.v2
 fun isOdd x = x%2 != 0
 
-
 fun sprMain
     if ( programArgs.size() < 2 )
         return
diff --git a/tests/PerfTests/FibRanges/fib_op_base.spr b/tests/PerfTests/FibRanges/fib_op_base.spr
index 5fe47be9..0e95ae80 100644
--- a/tests/PerfTests/FibRanges/fib_op_base.spr
+++ b/tests/PerfTests/FibRanges/fib_op_base.spr
@@ -2,10 +2,10 @@
 
 import std.algorithms
 
-fun fib(n: UInt): UInt 
+fun fib(n: UInt): UInt
     var a: UInt = 0
     var b: UInt = 1
-    for i = 0..n 
+    for i = 0..n
         var aOld = a
         a = b
         b += aOld
diff --git a/tests/PerfTests/GoogleBench/LoopTesterApp.spr b/tests/PerfTests/GoogleBench/LoopTesterApp.spr
index f1122e46..e3e601a4 100644
--- a/tests/PerfTests/GoogleBench/LoopTesterApp.spr
+++ b/tests/PerfTests/GoogleBench/LoopTesterApp.spr
@@ -60,7 +60,6 @@ fun getNumNodes(this: @MaoCFG)                         = _basicBlockMap.size
 
 fun basicBlocksRange(this: @MaoCFG) = _basicBlockMap.values()
 
-
 //
 // SimpleLoop
 //
@@ -98,7 +97,6 @@ fun hash(this: @SimpleLoop) = counter
 fun >>(this: @SimpleLoop, os: @OutStream)
     os << "loop-" << counter << ", nest: " << nestingLevel << ", depth: " << depthLevel << endl
 
-
 //
 // LoopStructureGraph
 //
@@ -246,7 +244,6 @@ using BB_LAST           = Byte(6)  // Sentinel
 using kUnvisited = -1              // Marker for uninitialized nodes.
 using kMaxNonBackPreds = 32*1024   // Safeguard against pathologic algorithm behavior.
 
-
 datatype HavlakLoopFinder
     _cfg: @MaoCFG
     _lsg: @LoopStructureGraph
diff --git a/tests/PerfTests/Hash/TestHashPerf.spr b/tests/PerfTests/Hash/TestHashPerf.spr
index b796fdfa..8455c906 100644
--- a/tests/PerfTests/Hash/TestHashPerf.spr
+++ b/tests/PerfTests/Hash/TestHashPerf.spr
@@ -153,6 +153,5 @@ fun sprMain
         testRemove(hashBag, n)
     ;
 
-
 /*-<<>>*/
diff --git a/tests/PerfTests/LazyRanges/lazy_ranges_base.spr b/tests/PerfTests/LazyRanges/lazy_ranges_base.spr
index 29e9023f..3b426e85 100644
--- a/tests/PerfTests/LazyRanges/lazy_ranges_base.spr
+++ b/tests/PerfTests/LazyRanges/lazy_ranges_base.spr
@@ -13,7 +13,6 @@ fun collatzLen(n: ULong): UInt
         ++len
     return len
 
-
 fun sprMain
     if ( programArgs.size() < 2 )
         return
diff --git a/tests/StdLib/AlgorithmsTest1.spr b/tests/StdLib/AlgorithmsTest1.spr
index db0cab4e..e90738ca 100644
--- a/tests/StdLib/AlgorithmsTest1.spr
+++ b/tests/StdLib/AlgorithmsTest1.spr
@@ -28,9 +28,8 @@ datatype MyObj
 fun <(this, other: @MyObj): Bool { return x < other.x; }
 
 datatype Greater
-    
-fun ()(this: Greater, x: Int, y: Int): Bool { return x > y; }
 
+fun ()(this: Greater, x: Int, y: Int): Bool { return x > y; }
 
 fun printRange(nr: ContiguousMemoryRange(Int))
     while !nr.isEmpty()
diff --git a/tests/StdLib/AlgorithmsTest2.spr b/tests/StdLib/AlgorithmsTest2.spr
index 308b8c5a..6d9be5d1 100644
--- a/tests/StdLib/AlgorithmsTest2.spr
+++ b/tests/StdLib/AlgorithmsTest2.spr
@@ -41,15 +41,14 @@ datatype MyObj
 fun <(this, other: @MyObj): Bool { return x < other.x; }
 
 datatype Greater
-    
+
 fun ()(this: Greater, x: Int, y: Int): Bool { return x > y; }
 
 datatype Even
-    
+
 fun ()(this: Even, x: Int): Bool { return x % 2 == 0; }
 
 datatype Minus
-    
 
 fun ()(this: Minus, x: Int, y: Int) = x - y
 
@@ -96,7 +95,6 @@ fun createRangeAscending(size: SizeType): ContiguousMemoryRange(Int)
 
     return ContiguousMemoryRange(Int)(ptr, ptrEnd)
 
-
 fun test1()
     var nr = 0..10
 
diff --git a/tests/StdLib/AlgorithmsTest3.spr b/tests/StdLib/AlgorithmsTest3.spr
index 831bccd8..39fab634 100644
--- a/tests/StdLib/AlgorithmsTest3.spr
+++ b/tests/StdLib/AlgorithmsTest3.spr
@@ -26,11 +26,11 @@ datatype MyObj
 fun <(this, other: @MyObj): Bool { return x < other.x; }
 
 datatype Greater
-    
+
 fun ()(this: Greater, x: Int, y: Int): Bool { return x > y; }
 
 datatype Even
-    
+
 fun ()(this: Even, x: Int): Bool { return x % 2 == 0; }
 
 fun printRange(nr: AnyType)
@@ -112,7 +112,6 @@ fun test1()
     makeList(li)
     var lr = li.all()
 
-
     printRange(copy(nr, lr))
     printRange(lr)
 /*<< y; }
 
 datatype Even
-    
+
 fun ()(this: Even, x: Int): Bool { return x % 2 == 0; }
 
 datatype Minus
-    
 
 fun ()(this: Minus, x: Int, y: Int) = x - y
 
-
 fun printRange(nr: AnyType)
     while !nr.isEmpty()
         cout << nr.front()
diff --git a/tests/StdLib/CheckTest.spr b/tests/StdLib/CheckTest.spr
index 77e51ef4..9ba1dbad 100644
--- a/tests/StdLib/CheckTest.spr
+++ b/tests/StdLib/CheckTest.spr
@@ -10,7 +10,7 @@ fun check_associativity(x: Int) = x+2 == 2+x
 
 fun check_IntIdentity(x: Int) = (x+0) == x && (0+x) == x
 
-fun classifier(x: Int): String 
+fun classifier(x: Int): String
     if ( x < 10 )   return "<10"
     if ( x < 20 )   return "<20"
     if ( x < 30 )   return "<30"
@@ -18,7 +18,7 @@ fun classifier(x: Int): String
 
 fun isTrivial(x: Int) = x<5
 
-fun sprMain 
+fun sprMain
     if ( programArgs.size() < 2 )
         return
     var n = programArgs(1) asInt
@@ -26,7 +26,7 @@ fun sprMain
     if      n == 1; testOk
     else if n == 2; testFailure
 
-fun testOk 
+fun testOk
     forAll(Int) check (fun x = true) ~ "that we have something running"
 
     forAll(Int) check \check_associativity ~ "Int associativity"
@@ -50,8 +50,7 @@ fun testOk
 
 //<<>(this: MyObj, os: @OutStream)      { os << x; }
 
 datatype Greater
-    
+
 fun ()(this: Greater, x: MyObj, y: MyObj): Bool { return x.x > y.x; }
 
 datatype Even
-    
+
 fun ()(this: Even, x: MyObj): Bool { return x.x % 2 == 0; }
 
 fun createRangeAscending(size: SizeType): ContiguousMemoryRange(MyObj)
@@ -296,7 +296,6 @@ false
 0 0 0 0 0 0
 >>>*/
 
-
 fun test10()
     var li: List(MyObj) = createRangeAscending(4)
 
@@ -377,7 +376,6 @@ false
 42 0 11 1 2 22 3 43
 >>>*/
 
-
 fun test13()
     var li: List(MyObj) = createRangeAscending(4)
     var r = li.all()
@@ -542,7 +540,6 @@ false
 0 1 2 3 4 5
 >>>*/
 
-
 fun test15()
     var li: List(MyObj)
 
@@ -834,7 +831,6 @@ false
 100 10 10 7 7 7 5 5 4 1 0
 >>>*/
 
-
 fun test20()
 {
     // var li1: List(MyObj);
diff --git a/tests/StdLib/PtrTest.spr b/tests/StdLib/PtrTest.spr
index 12327897..b2c9ce50 100644
--- a/tests/StdLib/PtrTest.spr
+++ b/tests/StdLib/PtrTest.spr
@@ -169,7 +169,6 @@ fun test4()
 43 destroyed
 >>>*/
 
-
 fun test5()
     var obj: @MyObj = newObj(42)
     var p = Ptr(MyObj)(obj)
@@ -193,7 +192,6 @@ MyObj.print(some argument)
 42 destroyed
 >>>*/
 
-
 fun test6()
     var obj: @MyObj = newObj(42)
     var p = Ptr(MyObj)(obj)
diff --git a/tests/StdLib/RangesTest.spr b/tests/StdLib/RangesTest.spr
index 391210b3..cc22487d 100644
--- a/tests/StdLib/RangesTest.spr
+++ b/tests/StdLib/RangesTest.spr
@@ -39,23 +39,23 @@ fun ==(this, other: @MyObj): Bool = x == other.x
 fun <(this, other: @MyObj): Bool = x < other.x
 
 datatype Greater
-    
+
 fun ()(this: Greater, x: Int, y: Int): Bool { return x > y; }
 
 datatype Even
-    
+
 fun ()(this: Even, x: Int): Bool { return x % 2 == 0; }
 
 datatype Minus
-    
+
 fun ()(this: Minus, x: Int, y: Int) = x - y
 
 datatype Square
-    
+
 fun ()(this: Square, x: AnyType) = x * x
 
 datatype Multiply
-    
+
 fun ()(this: Multiply, x: AnyType, y: AnyType) = x * y
 
 datatype Fact
@@ -110,7 +110,6 @@ fun createRangeAscending(size: SizeType): ContiguousMemoryRange(Int)
 
     return ContiguousMemoryRange(Int)(ptr, ptrEnd)
 
-
 fun test1()
     var l = makeList()
     var lr = l.all()
diff --git a/tests/StdLib/TupleTest.spr b/tests/StdLib/TupleTest.spr
index cb4669c4..bedf9486 100644
--- a/tests/StdLib/TupleTest.spr
+++ b/tests/StdLib/TupleTest.spr
@@ -9,22 +9,22 @@ import check
 [initCtor] datatype MyObj2
     x, y: Int
 
-fun >>(o: MyObj1, os: @OutStream) 
+fun >>(o: MyObj1, os: @OutStream)
     os << o.x
-fun >>(o: MyObj2, os: @OutStream) 
+fun >>(o: MyObj2, os: @OutStream)
     os << o.x << '#' << o.y
 
 using T2 = Tuple(MyObj1, MyObj2)
 using T4 = Tuple(MyObj1, MyObj2, Int rt, Bool rt)
 
-fun arbitrary(t: Type): T2 Gen if t == T2 
+fun arbitrary(t: Type): T2 Gen if t == T2
     return mkGen(T2, \generateT2)
 
-fun arbitrary(t: Type): T4 Gen if t == T4 
+fun arbitrary(t: Type): T4 Gen if t == T4
     return mkGen(T4, \generateT4)
 
 //! Generate an arbitrary tuple 2
-fun generateT2(sizeHint: UInt): T2 
+fun generateT2(sizeHint: UInt): T2
     var res: T2
     var h: Int = sizeHint + 5
     res.v1.x = randBetween(-h, h+1)
@@ -32,7 +32,7 @@ fun generateT2(sizeHint: UInt): T2
     res.v2.y = randBetween(-h, h+1)
     return res
 //! Generate an arbitrary tuple 4
-fun generateT4(sizeHint: UInt): T4 
+fun generateT4(sizeHint: UInt): T4
     var res: T4
     var h: Int = sizeHint + 5
     res.v1.x = randBetween(-h, h+1)
@@ -45,7 +45,7 @@ fun generateT4(sizeHint: UInt): T4
 fun isDefault2(t: T2) = t.v1.x == 0 && t.v2.x == 0 && t.v2.y == 0
 fun isDefault4(t: T4) = t.v1.x == 0 && t.v2.x == 0 && t.v2.y == 0 && t.v3 == 0 && t.v4 == false
 
-fun sprMain 
+fun sprMain
     var t2_1 = MyObj1(3) ~ MyObj2(4,5)
     var t4_1 = MyObj1(3) ~ MyObj2(4,5) ~ 6 ~ true
     var t2_2 = t2_1
diff --git a/tests/StdLib/VectorTest.spr b/tests/StdLib/VectorTest.spr
index 2876cf73..a2634242 100644
--- a/tests/StdLib/VectorTest.spr
+++ b/tests/StdLib/VectorTest.spr
@@ -7,7 +7,6 @@ import std.algorithms(equal)
 import std.tuple
 import check
 
-
 fun sprMain
     forAll(repeat(Vec(), 3)) check (fun x = x.isEmpty && x.size == 0) ~ "that a vector can be empty"
     forAll(Vec arbitrary) check (fun x = x.isEmpty || x.size > 0) ~ "that size is syncrhonized with isEmpty"
@@ -17,7 +16,7 @@ fun sprMain
             if ( v.isEmpty != r.isEmpty ) return false
             if ( v.size != (r rangeSize) ) return false
             var sz = v.size
-            for i = 0..sz 
+            for i = 0..sz
                 if ( v(i) != r.front ) return false
                 r.popFront
             return true
@@ -27,7 +26,7 @@ fun sprMain
             var vec2: Vec = vec
             if ( vec2.isEmpty != vec.isEmpty ) return false
             if ( vec2.size != vec.size ) return false
-            for i = 0..vec.size 
+            for i = 0..vec.size
                 if ( vec2(i) != vec(i) ) return false
             return true
     }) ~ "vector's copy constructor"
@@ -52,7 +51,7 @@ fun sprMain
     forAll(SizeType) check (fun sz: Bool {
             var vec: Vec = sz
             if ( vec.size != sz ) return false
-            for i = 0..sz 
+            for i = 0..sz
                 if ( vec(i) != Vec.ValueType() ) return false
             return true
     }) ~ "vector's sized constructor"
@@ -68,7 +67,7 @@ fun sprMain
     }) ~ "that we have zero capacity of empty vectors"
 
     forAll(Vec arbitrary) check(fun vec: Bool {
-            for i = 0..vec.size 
+            for i = 0..vec.size
                 if ( vec(i) != vec.at(i) ) return false
             return true
     }) ~ "that at function yields the same as call operator"
@@ -86,7 +85,7 @@ fun sprMain
     forAll(Vec arbitrary) check(fun vec: Bool {
             var r = vec.all
             if ( vec.size != (r rangeSize) ) return false
-            for i = 0..vec.size 
+            for i = 0..vec.size
                 if ( vec(i) != r.front ) return false
                 r.popFront
             return r.isEmpty
@@ -251,18 +250,17 @@ fun sprMain
 
 //<<< Vector checks
 
-
 using Vec = Vector(Int)
 using TestRange = ContiguousMemoryRange(Int)
 
-fun arbitrary(t: Type): Vec Gen if t == Vec 
+fun arbitrary(t: Type): Vec Gen if t == Vec
     return mkGen(Vec, \generateVec)
 
-fun arbitrary(t: Type): TestRange Gen if t == TestRange 
+fun arbitrary(t: Type): TestRange Gen if t == TestRange
     return mkGen(t, \generateTestRange)
 
 //! Generate an arbitrary vector
-fun generateVec(sizeHint: UInt): Vec 
+fun generateVec(sizeHint: UInt): Vec
     var res: Vec
     var h: Int = sizeHint + 5
     var size = randBetween(0, h)
@@ -272,7 +270,7 @@ fun generateVec(sizeHint: UInt): Vec
     return res
 
 //! Generate an arbitrary test range
-fun generateTestRange(sizeHint: UInt): TestRange 
+fun generateTestRange(sizeHint: UInt): TestRange
     var h: Int = sizeHint + 3
     var size = randBetween(0, h+1)
 
@@ -287,7 +285,6 @@ fun generateTestRange(sizeHint: UInt): TestRange
         val = randBetween(-h, h+1)
     return ContiguousMemoryRange(Int)(ptr, ptrEnd)
 
-
 datatype SubrangeTestData
     vec: Vec
     start, count: SizeType
@@ -295,7 +292,7 @@ datatype SubrangeTestData
 fun >>(this: @SubrangeTestData, os: @OutStream)
     os << vec << ", start=" << start << ", count=" << count
 
-fun arbitrary(t: Type): SubrangeTestData Gen if t == SubrangeTestData 
+fun arbitrary(t: Type): SubrangeTestData Gen if t == SubrangeTestData
     return mkGen(SubrangeTestData, (fun (sizeHint: UInt): SubrangeTestData {
         var res: SubrangeTestData
         res.vec = generateVec(sizeHint)
@@ -313,7 +310,7 @@ datatype InsertValueTestData
 fun >>(this: @InsertValueTestData, os: @OutStream)
     os << vec << ", idx=" << idx << ", value=" << value
 
-fun arbitrary(t: Type): InsertValueTestData Gen if t == InsertValueTestData 
+fun arbitrary(t: Type): InsertValueTestData Gen if t == InsertValueTestData
     return mkGen(InsertValueTestData, (fun (sizeHint: UInt): InsertValueTestData {
         var res: InsertValueTestData
         res.vec = generateVec(sizeHint)
@@ -330,7 +327,7 @@ datatype InsertRangeTestData
 fun >>(this: @InsertRangeTestData, os: @OutStream)
     os << vec << ", idx=" << idx << ", values=" << values
 
-fun arbitrary(t: Type): InsertRangeTestData Gen if t == InsertRangeTestData 
+fun arbitrary(t: Type): InsertRangeTestData Gen if t == InsertRangeTestData
     return mkGen(InsertRangeTestData, (fun (sizeHint: UInt): InsertRangeTestData {
         var res: InsertRangeTestData
         res.vec = generateVec(sizeHint)
@@ -348,7 +345,6 @@ datatype Data
 fun >>(this: @Data, os: @OutStream)
     os << 'Data(' << x << ')\n'
 
-
 fun ctor(this: @Data, other: Data)
     copyCtorCnt++
 
@@ -360,4 +356,3 @@ fun arbitrary(t: Type): DataVec Gen if t == DataVec
 fun generateDataVec(sizeHint: UInt): DataVec
     return DataVec(generateVec(sizeHint).all map (fun x = Data(x)))
 
-
diff --git a/tools/formatDetails/astNodes.spr b/tools/formatDetails/astNodes.spr
index 6881f322..f925dd3c 100644
--- a/tools/formatDetails/astNodes.spr
+++ b/tools/formatDetails/astNodes.spr
@@ -9,7 +9,6 @@ import parserIf, parser, parserDefs, node
 
 import std.ranges, std.vector, std.newDelete
 
-
 //! An AST node; we use this to represent the basic properties of our AST
 datatype AstNodeImpl
     kind: NodeKind
@@ -72,7 +71,6 @@ fun createNode(l: Location, kind: NodeKind, name: StringRef): Node = new(AstNode
 
 var _nullAstNodeImpl: AstNodeImpl
 
-
 //! Simple AST builder; creates AST based on AstNodeImpl objects
 datatype SimpleAstBuilder
 
diff --git a/tools/formatDetails/consoleErrorReporter.spr b/tools/formatDetails/consoleErrorReporter.spr
index 5de2018a..3df3b9aa 100644
--- a/tools/formatDetails/consoleErrorReporter.spr
+++ b/tools/formatDetails/consoleErrorReporter.spr
@@ -6,7 +6,6 @@ import ext
 
 import os
 
-
 //! An error reporter that prints errors to the console
 datatype ConsoleErrorReporter
 
diff --git a/tools/formatDetails/nodeKinds.spr b/tools/formatDetails/nodeKinds.spr
index 5880bcfe..f5397191 100644
--- a/tools/formatDetails/nodeKinds.spr
+++ b/tools/formatDetails/nodeKinds.spr
@@ -51,7 +51,6 @@ using nkReturnStmt      = NodeKind(38)
 // Not actually a node kind; just to represent a null node
 using nkNULL            = NodeKind(255)
 
-
 fun _asString(nk: NodeKind): StringRef
     if      nk == nkNodeList        return 'NodeList'
     else if nk == nkModifiers       return 'Modifiers'
diff --git a/tools/formatDetails/sourceData.spr b/tools/formatDetails/sourceData.spr
index ea05426e..e7a34458 100644
--- a/tools/formatDetails/sourceData.spr
+++ b/tools/formatDetails/sourceData.spr
@@ -23,7 +23,6 @@ datatype SourceData
     //! We need to keep this alive, so that all the StringRef point to a valid object
     _src: TokenDataSource SharedPtr
 
-
 //! Load the source data from the given filename.
 //! Ensures that all the tokens are link to their appropriate AST nodes
 fun load(res: @SourceData, filename: StringRef)
diff --git a/tools/formatDetails/tokenDataSource.spr b/tools/formatDetails/tokenDataSource.spr
index d64aa3a4..2b02f750 100644
--- a/tools/formatDetails/tokenDataSource.spr
+++ b/tools/formatDetails/tokenDataSource.spr
@@ -53,7 +53,6 @@ fun isEmpty(this: @TokenDataSourceRange) = _data._atEnd
 fun front(this: @TokenDataSourceRange)   = _data._curToken
 fun popFront(this: @TokenDataSourceRange) = _data._popFront
 
-
 fun readAst(filename: StringRef): Node
     var loc = mkLocation()
     var astBuilder: SimpleAstBuilder
diff --git a/tools/formatTool.spr b/tools/formatTool.spr
index 9aaf269b..d356fd59 100644
--- a/tools/formatTool.spr
+++ b/tools/formatTool.spr
@@ -1,7 +1,7 @@
 //!! -I../src/SparrowFrontend/Grammar
 import formatDetails.sourceData
 import transforms.emptyTransform, transforms.defaultFormat, transforms.refToMut
-import transforms.useLayout, transforms.removeEolSemicolons
+import transforms.useLayout, transforms.removeEolSemicolons, transforms.removeExtraSpaces
 import checks.returnStmt, checks.moduleName
 
 import os
@@ -26,10 +26,12 @@ fun sprMain
         if arg == '-format'
             transforms += \useLayoutFormatter
             transforms += \removeEolSemicolons
+            transforms += \removeExtraSpaces
         else if arg == '-f=layout'
             transforms += \useLayoutFormatter
             transforms += \removeEolSemicolons
         else if arg == '-f=empty'       ; transforms += \emptyTransform
+        else if arg == '-f=spaces'      ; transforms += \removeExtraSpaces
         else if arg == '-f=ref-to-mut'  ; transforms += \refToMut
         else if arg == '-i'             ; inPlace = true
         else if arg == '-check'
diff --git a/tools/transforms/removeExtraSpaces.spr b/tools/transforms/removeExtraSpaces.spr
new file mode 100644
index 00000000..bace3d94
--- /dev/null
+++ b/tools/transforms/removeExtraSpaces.spr
@@ -0,0 +1,35 @@
+module formatTool.transforms.removeExtraSpaces
+
+import utils
+import formatDetails.sourceData
+
+fun removeExtraSpaces(src: @SourceData)
+    _removeEndSpaces(src)
+    _removeMultipleEmptyLines(src)
+
+//! Remove spaces at the end of the line
+fun _removeEndSpaces(src: @SourceData)
+    for i = 0..Int(src.tokens.size)
+        var tok: @TokenData = src.tokens(i)
+        var remaining = src.tokens.subrange(i+1)
+        if tok.canFormat && tok.type == tkWHITESPACE && tok.content.size > 0 \
+            && nextIsNewline(remaining, false)
+            tok.content = ''
+
+//! Remove multiple consecutive empty lines
+fun _removeMultipleEmptyLines(src: @SourceData)
+    var lastLineWithVisible = 0
+    var numNewlines = 0
+    for i = 0..Int(src.tokens.size)
+        var tok: @TokenData = src.tokens(i)
+        var remaining = src.tokens.subrange(i+1)
+
+        if tok.type != tkWHITESPACE && tok.type != tkEOL
+            lastLineWithVisible = tok.loc.start.line
+            numNewlines = 0
+        if tok.type == tkEOL
+            if lastLineWithVisible != tok.loc.start.line
+                numNewlines++
+
+            if numNewlines >= 3 && tok.canFormat
+                clearToken(tok)
diff --git a/tools/transforms/utils.spr b/tools/transforms/utils.spr
index 853074a1..9095246a 100644
--- a/tools/transforms/utils.spr
+++ b/tools/transforms/utils.spr
@@ -41,12 +41,14 @@ fun clearTokenLine(idx: Int, tokens: @TokenVector)
         clearToken(tokens(i))
 
 //! Checks if the next character is a newline (ignoring whitespaces and comments)
-fun nextIsNewline(remaining: TokensRange): Bool
+fun nextIsNewline(remaining: TokensRange, ignoreComment: Bool = true): Bool
     for tok: @TokenData = remaining
         var tk = tok.type
         if tk == tkEOL || tk == tkEND
             return true
-        if tk == tkWHITESPACE || tk == tkCOMMENT
+        if tk == tkWHITESPACE
+            continue
+        else if ignoreComment && tk == tkCOMMENT
             continue
         else
             return false