diff --git a/.travis/run.sh b/.travis/run.sh index a89b23d2..1d662b0e 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 ../tools/formatTool.spr --returnError python test.py --returnError 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 f968b32d..94b1ac26 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)); + 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); - } -} + 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..99d049e0 100644 --- a/SparrowImplicitLib/logic/prologImpl/codeGen.spr +++ b/SparrowImplicitLib/logic/prologImpl/codeGen.spr @@ -1,30 +1,26 @@ -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; - - [ct] var nullNode: AstNode; + using meta.AstNode + using meta.Location + [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 +29,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 +167,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 +203,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 +217,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/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/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/parser.spr b/SparrowImplicitLib/logic/prologImpl/parser.spr index e5371508..3200295e 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 @@ -242,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)) @@ -251,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/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/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 ec7c82af..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 @@ -99,10 +97,19 @@ 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.sourceCode + 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] diff --git a/SparrowImplicitLib/os.spr b/SparrowImplicitLib/os.spr index 537356ce..1f8ded26 100644 --- a/SparrowImplicitLib/os.spr +++ b/SparrowImplicitLib/os.spr @@ -6,56 +6,63 @@ 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 res.resize(cStringLen(cstr)) return res +fun write(this: @File, data: StringRef): Int + 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) datatype FileRange @@ -82,13 +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("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/SparrowImplicitLib/par/atomic.spr b/SparrowImplicitLib/par/atomic.spr index 709a98e7..2d43c50c 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) @@ -81,10 +81,9 @@ 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; +[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)) @@ -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 0f6d5448..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) @@ -86,8 +85,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/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/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/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 f3ccd036..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 @@ -27,8 +25,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) @@ -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()) @@ -110,13 +107,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 4ce2a3f4..45b4fe20 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) {} @@ -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 /// @@ -653,15 +646,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, index+num)) fun cStr(this: @StringRef): @Char = reinterpretCast(@Char, begin) @@ -738,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 @@ -763,7 +758,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 @@ -796,13 +791,12 @@ 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 fun #$(t: Type): t - //////////////////////////////////////////////////////////////////////////////// /// Some low-level helper functions /// @@ -824,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/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/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/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/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/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..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)) @@ -12,10 +11,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/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/sortedMap.spr b/SparrowImplicitLib/std/sortedMap.spr index cad6a11e..30029cd8 100644 --- a/SparrowImplicitLib/std/sortedMap.spr +++ b/SparrowImplicitLib/std/sortedMap.spr @@ -1,20 +1,20 @@ -module std.sortedPtr; +module std.sortedMap -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(); } 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 cab395f9..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 @@ -136,6 +135,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/src/SparrowFrontend/CMakeLists.txt b/src/SparrowFrontend/CMakeLists.txt index f54517e5..72889540 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/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..8e90ac2f 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 /////////////////////////////////////////////////////////////////////////////// @@ -175,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 @@ -186,10 +189,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 +203,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 +236,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 +250,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 +283,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 +297,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 +310,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 +323,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 +343,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 +359,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 +377,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 +401,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 +410,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 +428,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 +458,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 +502,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 +520,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 +540,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 +548,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 +584,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 +609,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 +633,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 +650,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 +664,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 +679,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 +706,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 992279e3..e2b6e572 100644 --- a/src/SparrowFrontend/Grammar/parserIf.ll +++ b/src/SparrowFrontend/Grammar/parserIf.ll @@ -12,40 +12,73 @@ 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 {} +%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 } %"Vector[LocString]" = type { %"RawPtr[LocString]", %"RawPtr[LocString]", %"RawPtr[LocString]" } %"RawPtr[LocString]" = type { %LocString* } @@ -53,6 +86,7 @@ target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" %"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 }] @@ -2252,14 +2287,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 +2307,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 +2327,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 +2347,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 +2384,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 +2404,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 +2424,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 +2444,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 +2464,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 +2484,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 +2504,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 +2524,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 +2544,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 +2581,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 +2601,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 +2621,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 +2641,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 +2661,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 +2682,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 +2691,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 +2705,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 +2714,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 +2728,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 +2737,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 +2751,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 +2760,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 +2794,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 +2803,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 +2817,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 +2826,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 +2840,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 +2849,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 +2863,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 +2872,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 +2886,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 +2895,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 +2909,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 +2918,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 +2932,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 +2941,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 +2955,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 +2964,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 +2978,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 +2987,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 +3021,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 +3030,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 +3044,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 +3053,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 +3067,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 +3076,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 +3090,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 +3099,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 +3113,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 +3122,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 +3159,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 +3171,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 +3186,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 +3267,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 +3278,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 +3293,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 +3304,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 +3326,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 +3390,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 +3410,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 +3452,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 +3461,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 +3510,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 +3542,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 +3613,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 +3627,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 +3657,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 +3670,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 +3693,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 +3726,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 +3739,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 +3750,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 +3766,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 +3782,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 +3802,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 +3819,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 +3836,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 +3853,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 +3863,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 +3875,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 +3887,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 +3899,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 +3911,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 +3923,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 +3935,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 +3948,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 +3966,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 +3976,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 +3994,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 +4020,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 +4037,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 +4047,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 +4059,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 +4071,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 +4097,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 +4120,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 +4130,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 +4138,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 +4187,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 +4195,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 +4216,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 +4228,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 +4256,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 +4266,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 +4278,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 +4306,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 +4318,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 +4326,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 +4338,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 +4359,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 +4368,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 +4390,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 +4409,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 +4430,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 +4440,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 +4472,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 +4490,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 +4526,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 +4535,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 +4610,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 +4632,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 +4655,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 +4676,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 +4699,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 +4720,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 +4739,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 +4757,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 +4767,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 +4785,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 +4807,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,980 +4864,996 @@ code: ; preds = %0 declare double @atof(i8*) ; Function Attrs: alwaysinline nounwind -define internal void @ctor.134(%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.135(%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.136(%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 @"=.137"(%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 @"==.138"(%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 - %"$tmpC" = alloca %StringRef +; 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 %String*, %String** %msg.addr - call void @asStringRef(%StringRef* %"$tmpC", %String* %1) - %2 = load %StringRef, %StringRef* %"$tmpC" - call void @comp_parser_reportError(%Location* %loc.addr, %StringRef %2) + %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 } -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 - %this.addr = alloca %String* - store %String* %this, %String** %this.addr +; 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 %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) + %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: 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.135(%UntypedPtr* %this) #3 { + %this.addr = alloca %UntypedPtr* + store %UntypedPtr* %this, %UntypedPtr** %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 %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.139(%_CharSource* %this) #3 { - %this.addr = alloca %_CharSource* - store %_CharSource* %this, %_CharSource** %this.addr +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 %_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 %"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: alwaysinline nounwind -define internal void @ctor.140(%_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 +; Function Attrs: inlinehint nounwind +define internal void @ctor.137(%String* %this) #4 { + %this.addr = alloca %String* + store %String* %this, %String** %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 %String*, %String** %this.addr + %2 = getelementptr inbounds %String, %String* %1, i32 0, i32 0 + 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 2 + call void @ctor.138(%"RawPtr[Char]"* %6) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.141(%_CharSource* %this) #3 { - %this.addr = alloca %_CharSource* - store %_CharSource* %this, %_CharSource** %this.addr +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 = 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 @"=.142"(%_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.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** %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 %"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 i1 @"==.143"(%_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** %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 %_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) - 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 ] - ret i1 %cond.res -} - -; Function Attrs: inlinehint nounwind -define internal void @ctor.144(%_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 - -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) + %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: inlinehint nounwind -define internal i1 @isEmpty.145(%_CharSource* %this) #4 { - %this.addr = alloca %_CharSource* - store %_CharSource* %this, %_CharSource** %this.addr +; Function Attrs: alwaysinline nounwind +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 %_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.146(%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 %BufferedCharSourceRange*, %BufferedCharSourceRange** %this.addr + %2 = getelementptr inbounds %BufferedCharSourceRange, %BufferedCharSourceRange* %1, i32 0, i32 0 + store %BufferedCharSource* null, %BufferedCharSource** %2 + ret void } -; Function Attrs: inlinehint nounwind -define internal i1 @isEmpty.146(%FileRange* %s) #4 { - %s.addr = alloca %FileRange* - store %FileRange* %s, %FileRange** %s.addr +; Function Attrs: alwaysinline nounwind +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 %FileRange*, %FileRange** %s.addr - %2 = getelementptr inbounds %FileRange, %FileRange* %1, i32 0, i32 1 - %3 = load i1, i1* %2 - ret i1 %3 -} - -; Function Attrs: inlinehint nounwind -define internal i8 @front.147(%_CharSource* %this) #4 { - %this.addr = alloca %_CharSource* - store %_CharSource* %this, %_CharSource** %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.148(%FileRange* %8) - ret i8 %9 - -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 - -if_end: ; preds = %dumy_block1, %dumy_block - unreachable - -dumy_block: ; No predecessors! - br label %if_end - -dumy_block1: ; No predecessors! - br label %if_end + %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: inlinehint nounwind -define internal i8 @front.148(%FileRange* %s) #4 { - %s.addr = alloca %FileRange* - store %FileRange* %s, %FileRange** %s.addr +; Function Attrs: alwaysinline nounwind +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 %FileRange*, %FileRange** %s.addr - %2 = getelementptr inbounds %FileRange, %FileRange* %1, i32 0, i32 2 - %3 = load i8, i8* %2 - ret i8 %3 + %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 @popFront.149(%_CharSource* %this) #4 { - %this.addr = alloca %_CharSource* - store %_CharSource* %this, %_CharSource** %this.addr +; 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 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 - call void @popFront.150(%FileRange* %8) - br label %if_end - -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 - -if_end: ; preds = %if_else, %if_then + %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 void @popFront.150(%FileRange* %s) #4 { - %s.addr = alloca %FileRange* - store %FileRange* %s, %FileRange** %s.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 %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 %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 i8 @readChar(%File* %this) #4 { - %this.addr = alloca %File* - store %File* %this, %File** %this.addr - %tmp.v = alloca i8 +; 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 %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.v - %6 = load i8, i8* %tmp.v - ret i8 %6 + %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 } -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 +; 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 - %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 + %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 } -declare i32 @feof(i8*) - ; Function Attrs: alwaysinline nounwind -define internal void @ctor.151(%ParserContext* %this) #3 { - %this.addr = alloca %ParserContext* - store %ParserContext* %this, %ParserContext** %this.addr +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 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) - %3 = load %ParserContext*, %ParserContext** %this.addr - %4 = getelementptr inbounds %ParserContext, %ParserContext* %3, i32 0, i32 1 - call void @ctor.153(%FileRange* %4) - %5 = load %ParserContext*, %ParserContext** %this.addr - %6 = getelementptr inbounds %ParserContext, %ParserContext* %5, i32 0, i32 2 - call void @ctor.139(%_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) - %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) - %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) + %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 } -; Function Attrs: inlinehint nounwind -define internal void @ctor.152(%File* %this) #4 { - %this.addr = alloca %File* - store %File* %this, %File** %this.addr +; 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 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 + %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: alwaysinline nounwind -define internal void @ctor.153(%FileRange* %this) #3 { - %this.addr = alloca %FileRange* - store %FileRange* %this, %FileRange** %this.addr +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** %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 %"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: alwaysinline nounwind -define internal void @ctor.154(%"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.151(%"Vector[UInt]"* %this) #3 { + %this.addr = alloca %"Vector[UInt]"* + store %"Vector[UInt]"* %this, %"Vector[UInt]"** %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.155(%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) - %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) - %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 %"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 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.155(%Location* %this) #3 { - %this.addr = alloca %Location* - store %Location* %this, %Location** %this.addr +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 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) - %3 = load %Location*, %Location** %this.addr - %4 = getelementptr inbounds %Location, %Location* %3, i32 0, i32 1 - call void @ctor.157(%LineCol* %4) - %5 = load %Location*, %Location** %this.addr - %6 = getelementptr inbounds %Location, %Location* %5, i32 0, i32 2 - call void @ctor.157(%LineCol* %6) + %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 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.156(%SourceCode* %this) #3 { - %this.addr = alloca %SourceCode* - store %SourceCode* %this, %SourceCode** %this.addr +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 code: ; preds = %0 - %1 = load %SourceCode*, %SourceCode** %this.addr - %2 = getelementptr inbounds %SourceCode, %SourceCode* %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 + 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: alwaysinline nounwind -define internal void @ctor.157(%LineCol* %this) #3 { - %this.addr = alloca %LineCol* - store %LineCol* %this, %LineCol** %this.addr +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 %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 %"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: alwaysinline nounwind -define internal void @ctor.158(%"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.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 %"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) - %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 %"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: alwaysinline nounwind -define internal void @ctor.159(%"RangeWithLookahead[_CharSource]"* %this) #3 { - %this.addr = alloca %"RangeWithLookahead[_CharSource]"* - store %"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"** %this.addr +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 %"RangeWithLookahead[_CharSource]"*, %"RangeWithLookahead[_CharSource]"** %this.addr - %2 = getelementptr inbounds %"RangeWithLookahead[_CharSource]", %"RangeWithLookahead[_CharSource]"* %1, i32 0, i32 0 - call void @ctor.139(%_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) + %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 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.160(%"Vector[Char]"* %this) #3 { - %this.addr = alloca %"Vector[Char]"* - store %"Vector[Char]"* %this, %"Vector[Char]"** %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 %"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) - %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) - %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) + %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.161(%"RawPtr[Char]"* %this) #3 { - %this.addr = alloca %"RawPtr[Char]"* - store %"RawPtr[Char]"* %this, %"RawPtr[Char]"** %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 %"RawPtr[Char]"*, %"RawPtr[Char]"** %this.addr - %2 = getelementptr inbounds %"RawPtr[Char]", %"RawPtr[Char]"* %1, i32 0, i32 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 store i8* null, i8** %2 ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.162(%Token* %this) #3 { - %this.addr = alloca %Token* - store %Token* %this, %Token** %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 %Token*, %Token** %this.addr - %2 = getelementptr inbounds %Token, %Token* %1, i32 0, i32 0 - call void @ctor.155(%Location* %2) - %3 = load %Token*, %Token** %this.addr - %4 = getelementptr inbounds %Token, %Token* %3, i32 0, i32 1 - call void @ctor.163(%TokenType* %4) - %5 = load %Token*, %Token** %this.addr - %6 = getelementptr inbounds %Token, %Token* %5, i32 0, i32 2 - call void @ctor.164(%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 %"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.163(%TokenType* %this) #3 { - %this.addr = alloca %TokenType* - store %TokenType* %this, %TokenType** %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 %TokenType*, %TokenType** %this.addr - %2 = getelementptr inbounds %TokenType, %TokenType* %1, i32 0, i32 0 - store i32 0, i32* %2 + %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: inlinehint nounwind -define internal void @ctor.164(%String* %this) #4 { - %this.addr = alloca %String* - store %String* %this, %String** %this.addr +; Function Attrs: alwaysinline nounwind +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 %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) + %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.165(%"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.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 %"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) - %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) - %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) - %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) - %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 %"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.166(%"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.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[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) - %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) + %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.167(%"Vector[Token]"* %this) #3 { - %this.addr = alloca %"Vector[Token]"* - store %"Vector[Token]"* %this, %"Vector[Token]"** %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[Token]"*, %"Vector[Token]"** %this.addr - %2 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %1, i32 0, i32 0 - call void @ctor.168(%"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) - %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) + %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.168(%"RawPtr[Token]"* %this) #3 { - %this.addr = alloca %"RawPtr[Token]"* - store %"RawPtr[Token]"* %this, %"RawPtr[Token]"** %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[Token]"*, %"RawPtr[Token]"** %this.addr - %2 = getelementptr inbounds %"RawPtr[Token]", %"RawPtr[Token]"* %1, i32 0, i32 0 - store %Token* null, %Token** %2 + %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.169(%"Vector[UInt]"* %this) #3 { - %this.addr = alloca %"Vector[UInt]"* - store %"Vector[UInt]"* %this, %"Vector[UInt]"** %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 %"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) - %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) - %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) + %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.170(%"RawPtr[UInt]"* %this) #3 { - %this.addr = alloca %"RawPtr[UInt]"* - store %"RawPtr[UInt]"* %this, %"RawPtr[UInt]"** %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 %"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, 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: alwaysinline nounwind -define internal void @ctor.171(%"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.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 %"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) - %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) - %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, 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.172(%"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.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 %"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) - %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) + %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.173(%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 @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 %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 @ctor.174(%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) - %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) - %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) - %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) - %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) + %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: inlinehint nounwind -define internal void @ctor.174(%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.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 %File*, %File** %this.addr - %2 = getelementptr inbounds %File, %File* %1, i32 0, i32 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 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 @ctor.175(%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 @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 %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 + %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.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 %"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.176(%"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 @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 %"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.177(%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) - %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) - %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 %"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.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 %"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.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 %"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.180(%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 @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.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.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: alwaysinline nounwind -define internal void @ctor.177(%Location* %this, %Location* %other) #3 { +define internal void @ctor.182(%Location* %this, %Location* %other) #3 { %this.addr = alloca %Location* store %Location* %this, %Location** %this.addr %other.addr = alloca %Location* @@ -5934,22 +5865,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.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.179(%LineCol* %6, %LineCol* %8) + 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.179(%LineCol* %10, %LineCol* %12) + call void @ctor.184(%LineCol* %10, %LineCol* %12) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.178(%SourceCode* %this, %SourceCode* %other) #3 { +define internal void @ctor.183(%SourceCode* %this, %SourceCode* %other) #3 { %this.addr = alloca %SourceCode* store %SourceCode* %this, %SourceCode** %this.addr %other.addr = alloca %SourceCode* @@ -5967,7 +5898,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.179(%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* @@ -5991,150 +5922,137 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.180(%"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.181(%"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.181(%"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.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 %"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.140(%_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) + %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: inlinehint nounwind -define internal void @ctor.182(%"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]" - %"$tmpC2" = alloca %"RawPtr[Char]" - %"$tmpC3" = alloca %"RawPtr[Char]" +; 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 %"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) - %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) - %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) - %7 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr - %8 = call i64 @size.183(%"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") - %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 @"=.184"(%"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) - %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) - %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 + %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 +} -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 +; Function Attrs: alwaysinline nounwind +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 -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 +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 +} -while_step: ; preds = %while_body - br label %while_block +; Function Attrs: inlinehint nounwind +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 + br label %code -while_end: ; preds = %while_block +code: ; preds = %0 + %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.183(%"Vector[Char]"* %this) #4 { - %this.addr = alloca %"Vector[Char]"* - store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr - %tmp.v = alloca i64 +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.v - %8 = load i64, i64* %tmp.v + store i64 %7, i64* %tmp.this + %8 = load i64, i64* %tmp.this ret i64 %8 } @@ -6144,8 +6062,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,25 +6072,84 @@ 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 { - %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 +; 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 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %other.addr - %2 = getelementptr inbounds %"RawPtr[Char]", %"RawPtr[Char]"* %1, i32 0, i32 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 @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]"* + store %"RawPtr[Char]"* %other, %"RawPtr[Char]"** %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 @@ -6193,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.185(%"RawPtr[Char]"* %1, i8* %4) + call void @ctor.193(%"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.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* @@ -6221,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 @@ -6228,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.186(%"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.186(%"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* @@ -6253,26 +6236,163 @@ 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.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 %"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.187(%"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.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 %"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 %"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.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 %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.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 %"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.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 %"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 %"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 + %8 = load i64, i64* %tmp.this + ret i64 %8 +} + ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.188"(%"RawPtr[Char]"* %this, %"RawPtr[Char]"* %other) #3 { +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]"* @@ -6280,47 +6400,38 @@ define internal i1 @"==.188"(%"RawPtr[Char]"* %this, %"RawPtr[Char]"* %other) #3 br label %code code: ; preds = %0 - %1 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %this.addr + %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]"** %other.addr + %4 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %this.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 + store i8* %3, i8** %5 + ret void } ; Function Attrs: inlinehint nounwind -define internal void @advance.189(%"RawPtr[Char]"* sret %_result, %"RawPtr[Char]" %this) #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 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) + %4 = load i64, i64* %n.addr + %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: alwaysinline nounwind -define internal void @ctor.190(%Token* %this, %Token* %other) #3 { +define internal void @ctor.202(%Token* %this, %Token* %other) #3 { %this.addr = alloca %Token* store %Token* %this, %Token** %this.addr %other.addr = alloca %Token* @@ -6332,17 +6443,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.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.191(%TokenType* %6, %TokenType* %8) + 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.192(%String* %10, %String* %12) + 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 @@ -6359,7 +6470,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.191(%TokenType* %this, %TokenType* %other) #3 { +define internal void @ctor.203(%TokenType* %this, %TokenType* %other) #3 { %this.addr = alloca %TokenType* store %TokenType* %this, %TokenType** %this.addr %other.addr = alloca %TokenType* @@ -6376,191 +6487,113 @@ code: ; preds = %0 ret void } -; Function Attrs: inlinehint nounwind -define internal void @ctor.192(%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 +; 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 %String*, %String** %other.addr - %2 = call i64 @size.193(%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) - %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 %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: inlinehint nounwind -define internal i64 @size.193(%String* %this) #4 { - %this.addr = alloca %String* - store %String* %this, %String** %this.addr - %tmp.v = alloca i64 +; 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 %String*, %String** %this.addr - %2 = getelementptr inbounds %String, %String* %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 - %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 - ret i64 %8 + %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 @ctor.194(%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 - %"$tmpC1" = alloca %"RawPtr[Char]" - %tmp.v2 = alloca i64 - %tmp.v3 = alloca i8 +; 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 %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 - %5 = add i64 %3, %4 - call void @allocRawPtr(%"RawPtr[Char]"* %"$tmpC", i64 %5) - call void @ctor.187(%"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") - %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 - %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 %"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: inlinehint nounwind -define internal void @advance.195(%"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 +; Function Attrs: alwaysinline nounwind +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 %"RawPtr[Char]"*, %"RawPtr[Char]"** %_result.addr - %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 - %6 = mul i64 %4, %5 - store i64 %6, i64* %tmp.v - %7 = load i64, i64* %tmp.v - %8 = call i8* @ptrAdd(i8* %3, i64 %7) - call void @ctor.186(%"RawPtr[Char]"* %1, i8* %8) - ret void -} - -; Function Attrs: alwaysinline nounwind -define internal void @ctor.196(%"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.197(%"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) - %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) - %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) - %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 - ret void -} - -; Function Attrs: alwaysinline nounwind -define internal void @ctor.197(%"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 @ctor.176(%"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) + %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.198(%"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]"* @@ -6577,61 +6610,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.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.168(%"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.168(%"RawPtr[Token]"* %6) + call void @ctor.150(%"RawPtr[Token]"* %6) %7 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr - %8 = call i64 @size.199(%"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.203(%"RawPtr[Token]"* %"$tmpC", i64 %11) - call void @"=.202"(%"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.205(%"RawPtr[Token]"* %"$tmpC1", %"RawPtr[Token]" %16, i64 %17) - call void @"=.202"(%"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 @"=.202"(%"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.207(%"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.207(%"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 @"==.208"(%"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.209(%"RawPtr[Token]" %30) + %31 = call %Token* @value.219(%"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.219(%"RawPtr[Token]" %32) + call void @ctor.202(%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.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.210(%"RawPtr[Token]"* %"$tmpC3", %"RawPtr[Token]" %35) - call void @"=.202"(%"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 @@ -6642,10 +6675,10 @@ while_end: ; preds = %while_block } ; Function Attrs: inlinehint nounwind -define internal i64 @size.199(%"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.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -6655,38 +6688,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.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.200(%"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]" 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.211(%"RawPtr[Token]" %1) %3 = load %"RawPtr[Token]", %"RawPtr[Token]"* %other.addr - %4 = call i8* @bytePtr.201(%"RawPtr[Token]" %3) + %4 = call i8* @bytePtr.211(%"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.211(%"RawPtr[Token]" %this) #4 { %this.addr = alloca %"RawPtr[Token]" store %"RawPtr[Token]" %this, %"RawPtr[Token]"* %this.addr br label %code @@ -6699,7 +6732,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.202"(%"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]"* @@ -6717,7 +6750,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @allocRawPtr.203(%"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 @@ -6730,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.204(%"RawPtr[Token]"* %1, %Token* %5) + call void @ctor.214(%"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.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* @@ -6751,7 +6784,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.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]" @@ -6763,16 +6796,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.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.206(%"RawPtr[Token]"* %1, i8* %6) + call void @ctor.216(%"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.216(%"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 +6825,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.207(%"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]"* @@ -6810,7 +6843,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.208"(%"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]"* @@ -6831,7 +6864,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal %Token* @value.209(%"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 @@ -6843,7 +6876,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.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]" @@ -6853,14 +6886,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.211(%"RawPtr[Token]" %2) %4 = call i8* @ptrAdd(i8* %3, i64 72) - call void @ctor.206(%"RawPtr[Token]"* %1, i8* %4) + call void @ctor.216(%"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.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]"* @@ -6870,83 +6903,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.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.170(%"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.170(%"RawPtr[UInt]"* %6) + call void @ctor.152(%"RawPtr[UInt]"* %6) %7 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr - %8 = call i64 @size.212(%"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.216(%"RawPtr[UInt]"* %"$tmpC", i64 %11) - call void @"=.215"(%"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.218(%"RawPtr[UInt]"* %"$tmpC1", %"RawPtr[UInt]" %16, i64 %17) - call void @"=.215"(%"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 @"=.215"(%"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.220(%"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.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.230(%"RawPtr[UInt]"* %src, %"RawPtr[UInt]"* %25) + %26 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %dst + %27 = call i8* @bytePtr.224(%"RawPtr[UInt]" %26) + %28 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %src + %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) ret void } ; Function Attrs: inlinehint nounwind -define internal i64 @size.212(%"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.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -6956,38 +6966,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.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.213(%"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]" 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.224(%"RawPtr[UInt]" %1) %3 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %other.addr - %4 = call i8* @bytePtr.214(%"RawPtr[UInt]" %3) + %4 = call i8* @bytePtr.224(%"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.224(%"RawPtr[UInt]" %this) #4 { %this.addr = alloca %"RawPtr[UInt]" store %"RawPtr[UInt]" %this, %"RawPtr[UInt]"* %this.addr br label %code @@ -7000,7 +7010,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.215"(%"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]"* @@ -7018,7 +7028,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @allocRawPtr.216(%"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 @@ -7031,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.217(%"RawPtr[UInt]"* %1, i32* %5) + call void @ctor.227(%"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.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* @@ -7052,7 +7062,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.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]" @@ -7064,16 +7074,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.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.219(%"RawPtr[UInt]"* %1, i8* %6) + call void @ctor.229(%"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.229(%"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 +7103,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.220(%"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]"* @@ -7111,145 +7121,746 @@ 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 +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 %"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 + %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]]"*, %"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: inlinehint nounwind -define internal i32* @value.222(%"RawPtr[UInt]" %this) #4 { - %this.addr = alloca %"RawPtr[UInt]" - store %"RawPtr[UInt]" %this, %"RawPtr[UInt]"* %this.addr +; Function Attrs: alwaysinline nounwind +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 = getelementptr inbounds %"RawPtr[UInt]", %"RawPtr[UInt]"* %this.addr, i32 0, i32 0 - %2 = load i32*, i32** %1 - ret i32* %2 + %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: 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 +; Function Attrs: alwaysinline nounwind +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 %"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) + %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 @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.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 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) - %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) - %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 - %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 - store i1 %11, i1* %13 + %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 @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 %"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: 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 %"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: 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 + %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.225(%"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.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 %"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.196(%"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) + %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.226(%ParserContext* %this) #3 { +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 5 - call void @dtor.227(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2) + %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 4 - call void @dtor.234(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %4) + %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 3 - call void @dtor.240(%"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) + %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.227(%"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 @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[_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) - %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) + %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.228(%Token* %this) #3 { +define internal void @dtor.260(%Token* %this) #3 { %this.addr = alloca %Token* store %Token* %this, %Token** %this.addr br label %code @@ -7257,12 +7868,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.261(%String* %2) ret void } ; Function Attrs: inlinehint nounwind -define internal void @dtor.229(%String* %this) #4 { +define internal void @dtor.261(%String* %this) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr br label %code @@ -7313,23 +7924,23 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.230(%"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.231(%"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) + %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.231(%"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]" @@ -7339,38 +7950,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.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 @"==.208"(%"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.209(%"RawPtr[Token]" %7) - call void @dtor.228(%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.210(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %9) - call void @"=.202"(%"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.232(%"RawPtr[Token]" %12) + call void @freePtr.264(%"RawPtr[Token]" %12) ret void } ; Function Attrs: inlinehint nounwind -define internal void @freePtr.232(%"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 @@ -7380,12 +7991,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.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.201(%"RawPtr[Token]" %3) + %4 = call i8* @bytePtr.211(%"RawPtr[Token]" %3) call void @free(i8* %4) br label %if_end @@ -7394,7 +8005,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.265(%"RawPtr[Token]" %this) #4 { %this.addr = alloca %"RawPtr[Token]" store %"RawPtr[Token]" %this, %"RawPtr[Token]"* %this.addr br label %code @@ -7408,26 +8019,26 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.234(%"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.235(%"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) - %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) + %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.235(%"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]" @@ -7437,13 +8048,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.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 @"==.188"(%"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 @@ -7455,8 +8066,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.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 @@ -7467,49 +8078,135 @@ while_end: ; preds = %while_block ret void } -; Function Attrs: inlinehint nounwind -define internal void @dtor.236(%"Vector[UInt]"* %this) #4 { - %this.addr = alloca %"Vector[UInt]"* - store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr - %p = alloca %"RawPtr[UInt]" - %"$tmpC" = alloca %"RawPtr[UInt]" +; Function Attrs: alwaysinline nounwind +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]"* + store %"RawPtr[Char]"* %other, %"RawPtr[Char]"** %other.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.220(%"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) + %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.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]" + 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.194(%"RawPtr[Char]"* %1, i8* %4) + ret void +} + +; Function Attrs: inlinehint nounwind +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]" + %"$tmpC" = 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.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 @"==.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.222(%"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.223(%"RawPtr[UInt]"* %"$tmpC", %"RawPtr[UInt]" %10) - call void @"=.215"(%"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.237(%"RawPtr[UInt]" %13) + call void @freePtr.274(%"RawPtr[UInt]" %13) + ret void +} + +; Function Attrs: alwaysinline nounwind +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]"* + 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.272(%"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.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]" + 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.224(%"RawPtr[UInt]" %2) + %4 = call i8* @ptrAdd(i8* %3, i64 4) + call void @ctor.229(%"RawPtr[UInt]"* %1, i8* %4) ret void } ; Function Attrs: inlinehint nounwind -define internal void @freePtr.237(%"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 @@ -7519,12 +8216,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.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.214(%"RawPtr[UInt]" %3) + %4 = call i8* @bytePtr.224(%"RawPtr[UInt]" %3) call void @free(i8* %4) br label %if_end @@ -7533,7 +8230,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.275(%"RawPtr[UInt]" %this) #4 { %this.addr = alloca %"RawPtr[UInt]" store %"RawPtr[UInt]" %this, %"RawPtr[UInt]"* %this.addr br label %code @@ -7547,121 +8244,81 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.239(%"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.231(%"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) + %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.240(%"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.228(%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) + %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.241(%"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.242(%"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.242(%"RangeWithLookahead[_CharSource]"* %this) #3 { - %this.addr = alloca %"RangeWithLookahead[_CharSource]"* - store %"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"** %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.235(%"Vector[Char]"* %2) - ret void -} - -; Function Attrs: inlinehint nounwind -define internal void @dtor.243(%File* %this) #4 { - %this.addr = alloca %File* - store %File* %this, %File** %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 %File*, %File** %this.addr - call void @close(%File* %1) + %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 @close(%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 - 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 + %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 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 @"=.244"(%ParserContext* %this, %ParserContext* %other) #3 { +define internal void @"=.281"(%ParserContext* %this, %ParserContext* %other) #3 { %this.addr = alloca %ParserContext* store %ParserContext* %this, %ParserContext** %this.addr %other.addr = alloca %ParserContext* @@ -7673,121 +8330,71 @@ 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 @"=.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 @"=.246"(%FileRange* %6, %FileRange* %8) + 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 @"=.142"(%_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) - %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) - %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) - ret void -} - -; Function Attrs: inlinehint nounwind -define internal void @"=.245"(%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 @"=.246"(%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 @"=.247"(%"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 @"=.248"(%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) - %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) - %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 + 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 @"=.248"(%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* @@ -7799,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 @"=.249"(%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 @"=.250"(%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 @"=.250"(%LineCol* %10, %LineCol* %12) + call void @"=.285"(%LineCol* %10, %LineCol* %12) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @"=.249"(%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* @@ -7832,7 +8439,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.250"(%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* @@ -7856,120 +8463,301 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.251"(%"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 %"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 @"=.252"(%"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 @"=.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 @"=.252"(%"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 @"=.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 %"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 @"=.142"(%_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) + %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 %"Vector[Char]"** @"=.253"(%"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 - %tmp = alloca %"Vector[Char]" +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 %"Vector[Char]"*, %"Vector[Char]"** %other.addr - call void @ctor.182(%"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) - ret %"Vector[Char]"** %this.addr + %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.235(%"Vector[Char]"* %tmp) + call void @dtor.261(%String* %tmp) unreachable } ; Function Attrs: inlinehint nounwind -define internal void @swap(%"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 - %tmp = alloca %"RawPtr[Char]" +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 %"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) - %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) - %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) - %9 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr + %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[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[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 @"=.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 %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]"** @"=.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]"* + store %"Vector[Char]"* %other, %"Vector[Char]"** %other.addr + %tmp = alloca %"Vector[Char]" + br label %code + +code: ; preds = %0 + %1 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr + call void @ctor.198(%"Vector[Char]"* %tmp, %"Vector[Char]"* %1) + %2 = load %"Vector[Char]"*, %"Vector[Char]"** %this.addr + 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.267(%"Vector[Char]"* %tmp) + unreachable +} + +; Function Attrs: inlinehint nounwind +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]"* + store %"Vector[Char]"* %other, %"Vector[Char]"** %other.addr + %tmp = 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.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 @"=.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 @"=.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 @"=.184"(%"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 @"=.184"(%"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 @"=.184"(%"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 @"=.184"(%"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 @"=.184"(%"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 @"=.184"(%"RawPtr[Char]"* %24, %"RawPtr[Char]"* %tmp) + call void @"=.200"(%"RawPtr[Char]"* %24, %"RawPtr[Char]"* %tmp) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @"=.254"(%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* @@ -7981,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 @"=.248"(%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 @"=.255"(%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* @"=.256"(%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 @@ -8008,7 +8796,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.255"(%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* @@ -8025,145 +8813,113 @@ code: ; preds = %0 ret void } -; Function Attrs: inlinehint nounwind -define internal %String* @"=.256"(%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.192(%String* %tmp, %String* %1) - %2 = load %String*, %String** %this.addr - call void @swap.257(%String* %tmp, %String* %2) - %3 = load %String*, %String** %this.addr - call void @dtor.229(%String* %tmp) - ret %String* %3 - -dumy_block: ; No predecessors! - call void @dtor.229(%String* %tmp) - unreachable -} - -; Function Attrs: inlinehint nounwind -define internal void @swap.257(%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 @"=.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** %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.258(%"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) - %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) + %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 } -; Function Attrs: inlinehint nounwind -define internal void @swap.258(%"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* +; 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 %"RawPtr[Char]"*, %"RawPtr[Char]"** %this.addr - %2 = getelementptr inbounds %"RawPtr[Char]", %"RawPtr[Char]"* %1, i32 0, i32 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 - 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 + %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 @"=.259"(%"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 @"=.260"(%"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) - %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) - %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) - %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 +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 @"=.260"(%"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 @"=.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 %"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 @"=.247"(%"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) + %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 %"Vector[Token]"** @"=.261"(%"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]"* @@ -8173,19 +8929,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.208(%"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.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.231(%"Vector[Token]"* %tmp) + call void @dtor.263(%"Vector[Token]"* %tmp) unreachable } ; Function Attrs: inlinehint nounwind -define internal void @swap.262(%"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]"* @@ -8196,42 +8952,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.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 @"=.202"(%"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 @"=.202"(%"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 @"=.202"(%"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 @"=.202"(%"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 @"=.202"(%"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 @"=.202"(%"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 @"=.202"(%"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 @"=.202"(%"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]"** @"=.263"(%"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]"* @@ -8241,19 +8997,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.221(%"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.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.236(%"Vector[UInt]"* %tmp) + call void @dtor.270(%"Vector[UInt]"* %tmp) unreachable } ; Function Attrs: inlinehint nounwind -define internal void @swap.264(%"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]"* @@ -8264,337 +9020,904 @@ 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.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 @"=.215"(%"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 @"=.215"(%"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 @"=.215"(%"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 @"=.215"(%"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 @"=.215"(%"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 @"=.215"(%"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 @"=.215"(%"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 @"=.215"(%"RawPtr[UInt]"* %24, %"RawPtr[UInt]"* %tmp) + call void @"=.225"(%"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 { - %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 @"=.266"(%"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) - %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 @"=.266"(%"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 @"=.259"(%"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) + %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 @"==.267"(%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 @"==.268"(%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 @"==.289"(%"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 - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond.res16 = phi i1 [ %10, %cond.true ], [ false, %cond.false ] - ret i1 %cond.res16 - -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 @"==.283"(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %12, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %14) - br label %cond.end3 - -cond.false2: ; preds = %cond.end6 - br label %cond.end3 - -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 - -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 @"==.270"(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %17, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %19) - br label %cond.end6 - -cond.false5: ; preds = %cond.end9 - br label %cond.end6 - -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 - -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 @"==.143"(%_CharSource* %22, %_CharSource* %24) - br label %cond.end9 - -cond.false8: ; preds = %cond.end12 - br label %cond.end9 + %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.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 @"=.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.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 @"==.269"(%FileRange* %27, %FileRange* %29) - br label %cond.end12 +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.false11: ; preds = %code - br label %cond.end12 +; 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.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 %"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: alwaysinline nounwind -define internal i1 @"==.268"(%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 @"=.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 code: ; preds = %0 - %1 = load %File*, %File** %this.addr - %2 = getelementptr inbounds %File, %File* %1, i32 0, i32 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 %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 %"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: alwaysinline nounwind -define internal i1 @"==.269"(%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 @"=.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 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 %"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 @"=.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 + +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 @"=.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 + +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 @"=.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 + +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 @"=.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 %"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 @"=.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 %"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 @"=.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 + +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 @"=.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 + +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 @"=.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 + +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 @"=.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 %"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 @"=.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 + +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 @"=.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 + +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 @"=.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 + +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 - %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 + %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 [ %16, %cond.true ], [ false, %cond.false ] + %cond.res4 = phi i1 [ %10, %cond.true ], [ false, %cond.false ] ret i1 %cond.res4 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 + %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 [ %23, %cond.true1 ], [ false, %cond.false2 ] + %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 @"==.270"(%"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 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[_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 @"==.271"(%Location* %2, %Location* %4) - br i1 %5, label %cond.true7, label %cond.false8 + %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[_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 @"==.138"(%ExternalErrorReporter* %7, %ExternalErrorReporter* %9) + %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.res12 = phi i1 [ %10, %cond.true ], [ false, %cond.false ] - ret i1 %cond.res12 + %cond.res20 = phi i1 [ %12, %cond.true ], [ false, %cond.false ] + ret i1 %cond.res20 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 + %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.res11 = phi i1 [ %17, %cond.true1 ], [ false, %cond.false2 ] - br i1 %cond.res11, label %cond.true, label %cond.false + %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[_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 @"==.278"(%Token* %19, %Token* %21) + %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 @"==.274"(%"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 @"==.271"(%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* @@ -8606,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 @"==.272"(%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 @@ -8614,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 @"==.273"(%LineCol* %7, %LineCol* %9) + %10 = call i1 @"==.338"(%LineCol* %7, %LineCol* %9) br label %cond.end cond.false: ; preds = %cond.end3 @@ -8629,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 @"==.273"(%LineCol* %12, %LineCol* %14) + %15 = call i1 @"==.338"(%LineCol* %12, %LineCol* %14) br label %cond.end3 cond.false2: ; preds = %code @@ -8641,7 +9964,7 @@ cond.end3: ; preds = %cond.false2, %cond. } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.272"(%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* @@ -8660,7 +9983,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.273"(%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* @@ -8696,63 +10019,76 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.274"(%"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 @"==.275"(%"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 @"==.275"(%"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 @"==.143"(%_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 @"==.276"(%"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 @@ -8763,17 +10099,249 @@ cond.end: ; preds = %cond.false, %cond.t ret i1 %cond.res } -; Function Attrs: inlinehint nounwind -define internal i1 @"==.276"(%"Vector[Char]"* %this, %"Vector[Char]"* %other) #4 { - %this.addr = alloca %"Vector[Char]"* - store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr +; 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 @"==.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 + br label %code + +code: ; preds = %0 + br label %if_block + +if_block: ; preds = %code + %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 + +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.190(%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* @"().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 = 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 + +dumy_block4: ; No predecessors! + br label %if_end3 +} + +; Function Attrs: inlinehint nounwind +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 %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.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.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 +10349,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.199(%"Vector[Char]"* %1) %3 = load %"Vector[Char]"*, %"Vector[Char]"** %other.addr - %4 = call i64 @size.183(%"Vector[Char]"* %3) + %4 = call i64 @size.199(%"Vector[Char]"* %3) %5 = icmp ne i64 %2, %4 br i1 %5, label %if_then, label %if_end @@ -8793,7 +10361,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.199(%"Vector[Char]"* %6) store i64 %7, i64* %s br label %while_block @@ -8803,8 +10371,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 +10391,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.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.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.350(%"Vector[Char]"* %20, i64 %23) %25 = load i8, i8* %24 %26 = icmp eq i8 %19, %25 %27 = xor i1 true, %26 @@ -8849,7 +10417,7 @@ dumy_block6: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal i8* @at.277(%"Vector[Char]"* %this, i64 %index) #4 { +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 @@ -8862,14 +10430,14 @@ 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: alwaysinline nounwind -define internal i1 @"==.278"(%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* @@ -8881,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 @"==.271"(%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 @@ -8923,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 @"==.280"(%String* %21, %String* %23) + %24 = call i1 @"==.343"(%String* %21, %String* %23) br label %cond.end6 cond.false5: ; preds = %cond.end9 @@ -8938,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 @"==.279"(%TokenType* %26, %TokenType* %28) + %29 = call i1 @"==.352"(%TokenType* %26, %TokenType* %28) br label %cond.end9 cond.false8: ; preds = %code @@ -8950,7 +10518,7 @@ cond.end9: ; preds = %cond.false8, %cond. } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.279"(%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* @@ -8968,151 +10536,97 @@ code: ; preds = %0 ret i1 %7 } -; Function Attrs: inlinehint nounwind -define internal i1 @"==.280"(%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 + %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 -if_block: ; preds = %code - %1 = load %String*, %String** %this.addr - %2 = call i64 @size.193(%String* %1) - %3 = load %String*, %String** %other.addr - %4 = call i64 @size.193(%String* %3) - %5 = icmp ne i64 %2, %4 - br i1 %5, label %if_then, label %if_end +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 -if_then: ; preds = %if_block - ret i1 false +cond.false: ; preds = %code + br label %cond.end -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) - store i64 %7, i64* %s - br label %while_block +cond.end: ; preds = %cond.false, %cond.true + %cond.res = phi i1 [ %10, %cond.true ], [ false, %cond.false ] + ret i1 %cond.res +} -dumy_block: ; No predecessors! - br label %if_end +; Function Attrs: alwaysinline nounwind +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 -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 +code: ; preds = %0 + %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 +} -while_body: ; preds = %while_block - br label %if_block1 +; Function Attrs: alwaysinline nounwind +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 -while_step: ; preds = %if_end3 - %11 = call i64 @"post_++.43"(i64* %i) - br label %while_block +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 + %5 = call i1 @"==.356"(%"RangeWithLookahead[SparrowScanner]"* %2, %"RangeWithLookahead[SparrowScanner]"* %4) + br i1 %5, label %cond.true10, label %cond.false11 -while_end: ; preds = %while_block - ret i1 true +cond.true: ; preds = %cond.end3 + %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]"*, %"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 -if_block1: ; preds = %while_body - %12 = load %String*, %String** %this.addr - %13 = load i64, i64* %i - %14 = call i8* @"().281"(%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) - %19 = load i8, i8* %18 - %20 = icmp ne i8 %15, %19 - br i1 %20, label %if_then2, label %if_end3 +cond.false: ; preds = %cond.end3 + br label %cond.end -if_then2: ; preds = %if_block1 - ret i1 false +cond.end: ; preds = %cond.false, %cond.true + %cond.res16 = phi i1 [ %12, %cond.true ], [ false, %cond.false ] + ret i1 %cond.res16 -if_end3: ; preds = %dumy_block4, %if_block1 - br label %while_step - -dumy_block4: ; No predecessors! - br label %if_end3 -} - -; Function Attrs: inlinehint nounwind -define internal i8* @"().281"(%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 - 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.v - %5 = load i64, i64* %tmp.v - call void @advance.195(%"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 { - %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 @"==.283"(%"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 - %5 = call i1 @"==.284"(%"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %2, %"RangeWithLookahead[SparrowScanner[_CharSource, ExternalErrorReporter]]"* %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 - %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 - %11 = load i32, i32* %10 - %12 = icmp eq i32 %8, %11 - br label %cond.end - -cond.false: ; preds = %cond.end3 - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond.res16 = phi i1 [ %12, %cond.true ], [ false, %cond.false ] - 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 @"==.279"(%TokenType* %14, %TokenType* %16) - br label %cond.end3 +cond.true1: ; preds = %cond.end6 + %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 br label %cond.end3 @@ -9122,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 @"==.276"(%"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 @@ -9137,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 @"==.287"(%"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 @@ -9152,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 @"==.138"(%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 @@ -9168,27 +10682,27 @@ 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 { - %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 @"==.270"(%"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 @"==.285"(%"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 @@ -9200,16 +10714,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 @"==.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]"* 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 +10731,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.209(%"Vector[Token]"* %1) %3 = load %"Vector[Token]"*, %"Vector[Token]"** %other.addr - %4 = call i64 @size.199(%"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 @@ -9229,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.199(%"Vector[Token]"* %6) + %7 = call i64 @size.209(%"Vector[Token]"* %6) store i64 %7, i64* %s br label %while_block @@ -9239,8 +10753,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 +10773,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.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.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.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 @@ -9283,7 +10797,7 @@ dumy_block6: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal %Token* @at.286(%"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 @@ -9296,23 +10810,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.215(%"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.219(%"RawPtr[Token]" %5) ret %Token* %6 } ; Function Attrs: inlinehint nounwind -define internal i1 @"==.287"(%"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]"* 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 +10834,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.222(%"Vector[UInt]"* %1) %3 = load %"Vector[UInt]"*, %"Vector[UInt]"** %other.addr - %4 = call i64 @size.212(%"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 @@ -9332,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.212(%"Vector[UInt]"* %6) + %7 = call i64 @size.222(%"Vector[UInt]"* %6) store i64 %7, i64* %s br label %while_block @@ -9342,8 +10856,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 +10876,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.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.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.360(%"Vector[UInt]"* %20, i64 %23) %25 = load i32, i32* %24 %26 = icmp eq i32 %19, %25 %27 = xor i1 true, %26 @@ -9388,7 +10902,7 @@ dumy_block6: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal i32* @at.288(%"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 @@ -9401,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.218(%"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.222(%"RawPtr[UInt]" %5) + %6 = call i32* @value.272(%"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 { - %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 @"==.290"(%"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 @"==.138"(%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 @"==.278"(%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 @"==.290"(%"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 @"==.283"(%"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 @"==.285"(%"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 @@ -9503,489 +11032,1184 @@ cond.end: ; preds = %cond.false, %cond.t ret i1 %cond.res } -; Function Attrs: inlinehint nounwind -define internal void @ctor.291(%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.152(%File* %2) - %3 = load %ParserContext*, %ParserContext** %this.addr - %4 = getelementptr inbounds %ParserContext, %ParserContext* %3, i32 0, i32 1 - call void @ctor.153(%FileRange* %4) - %5 = load %ParserContext*, %ParserContext** %this.addr - %6 = getelementptr inbounds %ParserContext, %ParserContext* %5, i32 0, i32 2 - call void @ctor.139(%_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) - %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) - 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.292(%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") - %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.144(%_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.152(%File* %30) - %31 = load %ParserContext*, %ParserContext** %this.addr - %32 = getelementptr inbounds %ParserContext, %ParserContext* %31, i32 0, i32 1 - call void @ctor.153(%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) - 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.298(%"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.229(%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.304(%"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) - 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.292(%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.293(%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.293(%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.294(%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.295(%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) - 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.297(%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.295(%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.164(%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 + +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 + +cond.false26: ; preds = %cond.end30 + br label %cond.end27 + +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 + +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 + +cond.false29: ; preds = %cond.end33 + br label %cond.end30 + +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 %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 +; 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 = load %StringOutputStream*, %StringOutputStream** %s.addr - %2 = load %StringRef*, %StringRef** %x.addr - %3 = load %StringRef, %StringRef* %2 - call void @"<<<.296"(%StringOutputStream* %1, %StringRef %3) - %4 = load %StringOutputStream*, %StringOutputStream** %s.addr - ret %StringOutputStream* %4 + %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 } ; Function Attrs: alwaysinline nounwind -define internal void @"<<<.296"(%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 +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 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 + %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: 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.v = alloca %StringRef +; 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 %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.v, i8* %6, i8* %10) - %11 = load %StringRef, %StringRef* %tmp.v - call void @insertBefore(%String* %1, %StringRef %2, %StringRef %11) - ret void + %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: 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.v = alloca i64 - %q = alloca %"RawPtr[Char]" - %tmp.v1 = alloca i64 - %"$tmpC2" = alloca %"RawPtr[Char]" - %tmp.v3 = alloca i64 - %"$tmpC4" = alloca %"RawPtr[Char]" - %tmp.v5 = alloca i64 - %"$tmpC6" = alloca %"RawPtr[Char]" - %"$tmpC11" = alloca %"RawPtr[Char]" - %"$tmpC12" = alloca %"RawPtr[Char]" - %tmp.v13 = alloca i64 +; 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 = 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.193(%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) - %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 - %22 = call i64 @_DiffType_opMinus(i64 %20, i64 %21) - call void @advance.195(%"RawPtr[Char]"* %q, %"RawPtr[Char]" %19, i64 %22) - br label %while_block + %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 +} -while_block: ; preds = %while_step, %code - %23 = call i1 @"==.188"(%"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 @"==.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 -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.v3 - %30 = load i64, i64* %tmp.v3 - call void @advance.195(%"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 %"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 +} -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") - br label %while_block +; 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 -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") - br label %while_block7 +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 +} -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 @"==.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 -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.189(%"RawPtr[Char]"* %"$tmpC11", %"RawPtr[Char]" %45) - call void @"=.184"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %"$tmpC11") - call void @popFront(%StringRef* %range.addr) - br label %while_step9 +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_step9: ; preds = %while_body8 - br label %while_block7 +; 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_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.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") - ret void +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 } -; 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 +; 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 code: ; preds = %0 - %1 = load %"RawPtr[Char]"*, %"RawPtr[Char]"** %_result.addr - %2 = getelementptr inbounds %StringRef, %StringRef* %s.addr, i32 0, i32 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 - call void @ctor.186(%"RawPtr[Char]"* %1, i8* %3) + %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 +} + +; 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 + +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 @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 %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 } @@ -9996,17 +12220,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 +12256,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 +12273,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 +12286,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.190(%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 +12309,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(%"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 %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(%"RawPtr[Char]"* %"$tmpC13", %"RawPtr[Char]" %40, i64 %42) + call void @"=.200"(%"RawPtr[Char]"* %37, %"RawPtr[Char]"* %"$tmpC13") ret void } @@ -10106,7 +12330,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 +12341,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 } @@ -10143,115 +12367,251 @@ code: ; preds = %0 ret void } -; Function Attrs: alwaysinline nounwind -define internal void @dtor.297(%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 + 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 @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 %StringOutputStream*, %StringOutputStream** %this.addr - %2 = getelementptr inbounds %StringOutputStream, %StringOutputStream* %1, i32 0, i32 0 - call void @dtor.229(%String* %2) + %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: inlinehint nounwind -define internal void @ctor.298(%"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.v = 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) - %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 - %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) - %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) - %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.299(%"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 +; 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.181(%"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.300(%"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 +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.139(%_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) - %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) - %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) + %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.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_++.303"(%_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 @@ -10261,18 +12621,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.394(%"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 +12640,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.395(%"Vector[Char]"* %1) store i64 %2, i64* %curCapacity br label %if_block @@ -10301,14 +12661,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 +12678,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 +12691,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.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 @@ -10354,24 +12714,24 @@ 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 @"=.184"(%"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 @"=.184"(%"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.302(%"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.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -10382,24 +12742,54 @@ 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 } ; 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.145(%_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]"* @@ -10422,9 +12812,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 +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 @"==.188"(%"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.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.395(%"Vector[Char]"* %7) %9 = mul i64 %6, %8 store i64 %9, i64* %t br label %if_block1 @@ -10461,124 +12851,202 @@ 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.269(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %20) + call void @"=.200"(%"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.394(%"Vector[Char]"* %25, i64 %26) br label %if_end } ; Function Attrs: inlinehint nounwind -define internal i8 @"post_++.303"(%_CharSource* %r) #4 { - %r.addr = alloca %_CharSource* - store %_CharSource* %r, %_CharSource** %r.addr +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 %_CharSource*, %_CharSource** %r.addr - %2 = call i8 @front.147(%_CharSource* %1) + %1 = load %BufferedCharSourceRange*, %BufferedCharSourceRange** %r.addr + %2 = call i8 @front.399(%BufferedCharSourceRange* %1) store i8 %2, i8* %res - %3 = load %_CharSource*, %_CharSource** %r.addr - call void @popFront.149(%_CharSource* %3) + %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 void @ctor.304(%"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 +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 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 %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.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 - %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) - %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) - %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) - %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.305(%"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) - %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) - %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 + %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 @"+=.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.391(%"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.395(%"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.393(%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) + %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.228(%Token* %"$tmpC") + call void @dtor.260(%Token* %"$tmpC") br label %cond_destruct_end cond_destruct_alt2: ; preds = %if_end @@ -10589,46 +13057,46 @@ 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 { - %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 +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.154(%"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) - %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) - %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) + %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.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_!!.309"(%"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_++.313"(%Token* %"$tmpC", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %16) - call void @"+=.311"(%"Vector[Token]"* %14, %Token* %"$tmpC") - call void @dtor.228(%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 @@ -10636,18 +13104,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.404(%"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 +13123,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.405(%"Vector[Token]"* %1) store i64 %2, i64* %curCapacity br label %if_block @@ -10676,14 +13144,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 +13161,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 +13174,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.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.308(%"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.205(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %33, i64 %34) - call void @"=.202"(%"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.205(%"RawPtr[Token]"* %"$tmpC12", %"RawPtr[Token]" %39, i64 %40) - call void @"=.202"(%"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.307(%"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.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -10756,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.200(%"RawPtr[Token]" %3, %"RawPtr[Token]" %6) - store i64 %7, i64* %tmp.v - %8 = load i64, i64* %tmp.v + %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.308(%"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 @@ -10773,7 +13241,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.211(%"RawPtr[Token]" %2) %4 = load i64, i64* %n.addr %5 = mul i64 %4, 72 %6 = call i8* @realloc(i8* %3, i64 %5) @@ -10785,22 +13253,22 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i1 @"pre_!!.309"(%"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.310(%"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.310(%"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 @@ -10808,7 +13276,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @"+=.311"(%"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* @@ -10818,20 +13286,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.410(%"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.410(%"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 +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 @"==.208"(%"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.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.405(%"Vector[Token]"* %7) %9 = mul i64 %6, %8 store i64 %9, i64* %t br label %if_block1 @@ -10859,101 +13327,101 @@ 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.219(%"RawPtr[Token]" %12) %14 = load %Token*, %Token** %value.addr - call void @ctor.190(%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.210(%"RawPtr[Token]"* %"$tmpC", %"RawPtr[Token]" %19) - call void @"=.202"(%"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 %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.404(%"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_++.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.314(%Token* %res, %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %1) - %2 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %r.addr - call void @popFront.315(%"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.190(%Token* %3, %Token* %res) - call void @dtor.228(%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.228(%Token* %res) + call void @dtor.260(%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.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.315(%"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.190(%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.315(%"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 +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 @@ -10961,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.316(%"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.319(%TokenType* %tmp.v, i32 0) - call void @"=.255"(%TokenType* %10, %TokenType* %tmp.v) - %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 @"=.248"(%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 @"=.255"(%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 @"=.248"(%Location* %27, %Location* %31) + call void @"=.283"(%Location* %27, %Location* %31) br label %if_end if_end: ; preds = %if_else, %if_then @@ -11013,33 +13481,33 @@ if_end: ; preds = %if_else, %if_then } ; Function Attrs: inlinehint nounwind -define internal i1 @isEmpty.316(%"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.317(%"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.317(%"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.318(%"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.318(%"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 @@ -11049,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 @"==.188"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) + %5 = call i1 @"==.268"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) ret i1 %5 } @@ -11064,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 @"=.250"(%LineCol* %2, %LineCol* %4) + call void @"=.285"(%LineCol* %2, %LineCol* %4) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.319(%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 @@ -11085,7 +13553,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.320(%TokenType* %this) #3 { +define internal void @dtor.418(%TokenType* %this) #3 { %this.addr = alloca %TokenType* store %TokenType* %this, %TokenType** %this.addr br label %code @@ -11094,126 +13562,42 @@ 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.v = 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.v, i8* %5, i8* %9) - %10 = load %StringRef, %StringRef* %tmp.v - 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.v = 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.v - %5 = load i64, i64* %tmp.v - call void @advance.195(%"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) - %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.189(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %18) - call void @"=.184"(%"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") - 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 @"=.184"(%"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.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.this30 = alloca %"$lambdaEnclosureData.1" + %tmp.this47 = alloca %"$lambdaEnclosureData.2" + %tmp.this60 = alloca i64 %c1 = alloca i8 %c2 = alloca i8 - %tmp.v64 = alloca %String + %tmp.this76 = alloca %String %"$tmpForRef" = alloca %StringRef - %tmp.StringRef65 = alloca %StringRef - %tmp.v75 = alloca i64 - %"$tmpC180" = alloca %String - %tmp.StringRef181 = alloca %StringRef - %tmp.StringRef182 = alloca %StringRef - %tmp.v183 = 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 @@ -11223,18 +13607,18 @@ 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 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 @@ -11246,8 +13630,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 @@ -11264,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.325(%"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 - call void @advanceIf(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %27, %"$lambdaEnclosureData" %28) + %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[BufferedCharSourceRange]]"* %27, %"$lambdaEnclosureData" %28) br label %if_block10 if_end4: ; preds = %if_end12, %cond.end7 @@ -11289,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_!!.344"(%"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.325(%"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 @@ -11318,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.316(%"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.319(%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 @@ -11360,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 - %53 = load %"$lambdaEnclosureData.0", %"$lambdaEnclosureData.0"* %tmp.v21 - call void @advanceIf.345(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %52, %"$lambdaEnclosureData.0" %53) - br label %while_step + %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.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.353(%String* %"$tmpC", %StringRef %59) - call void @reportError.352(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %56, %String* %"$tmpC") - call void @dtor.229(%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) +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_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_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_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_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 -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) - %67 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %67, i32 1) +if_then32: ; preds = %if_block31 + %70 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %70, i32 255) ret void -if_end30: ; preds = %dumy_block31, %if_block28 - br label %if_block32 +if_end33: ; preds = %dumy_block34, %if_block31 + br label %while_step -dumy_block31: ; No predecessors! - br label %if_end30 +dumy_block34: ; No predecessors! + br label %if_end33 -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.325(%"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) - br label %while_step +dumy_block35: ; No predecessors! + br label %if_end29 -if_end34: ; preds = %dumy_block40, %cond.end37 - br label %if_block41 +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.true35: ; preds = %if_block32 - %75 = load i8, i8* %ch217 - %76 = icmp eq i8 %75, 47 - br label %cond.end37 +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 -cond.false36: ; preds = %if_block32 - br label %cond.end37 +if_end38: ; preds = %dumy_block39, %if_block36 + br label %if_block40 -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 +dumy_block39: ; No predecessors! + br label %if_end38 -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.v48 - %81 = load i64, i64* %tmp.v48 - call void @advance.368(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %80, i64 %81) - store i8 97, i8* %c1 - store i8 97, i8* %c2 - br label %while_block49 +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_end43: ; preds = %dumy_block67, %cond.end46 - br label %if_block68 +if_end42: ; preds = %dumy_block52, %cond.end45 + br label %if_block53 -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_!!.344"(%"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_++.369"(%"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 +cond.true43: ; preds = %if_block40 + %83 = load i8, i8* %ch217 + %84 = icmp eq i8 %83, 47 + br label %cond.end45 -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.false44: ; preds = %if_block40 + br label %cond.end45 -cond.false54: ; preds = %while_block49 - br label %cond.end55 +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.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 +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.true56: ; preds = %cond.true53 - 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.false57: ; preds = %cond.true53 - %93 = load i8, i8* %c2 - %94 = icmp ne i8 %93, 47 - br label %cond.end58 +if_end50: ; preds = %dumy_block51, %if_block48 + br label %while_step -cond.end58: ; preds = %cond.false57, %cond.true56 - %cond.res59 = phi i1 [ true, %cond.true56 ], [ %94, %cond.false57 ] - br label %cond.end55 +dumy_block51: ; No predecessors! + br label %if_end50 -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_block52: ; No predecessors! + br label %if_end42 + +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 + +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 -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.370(%String* %tmp.v64, %StringRef* %"$tmpForRef") - call void @reportError.352(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %98, %String* %tmp.v64) - call void @dtor.229(%String* %tmp.v64) - %102 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %102, i32 0) - ret void +if_end55: ; preds = %dumy_block83, %cond.end58 + br label %if_block84 -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) - br label %while_step +cond.true56: ; preds = %if_block53 + %94 = load i8, i8* %ch217 + %95 = icmp eq i8 %94, 42 + br label %cond.end58 -dumy_block66: ; No predecessors! - br label %if_end63 +cond.false57: ; preds = %if_block53 + br label %cond.end58 -dumy_block67: ; No predecessors! - br label %if_end43 +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 -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.v75 - %109 = load i64, i64* %tmp.v75 - call void @advance.368(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %108, i64 %109) - br label %while_step +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 -if_end70: ; preds = %dumy_block76, %cond.end73 - br label %if_block77 +cond.false66: ; preds = %while_block61 + br label %cond.end67 -cond.true71: ; preds = %if_block68 - %110 = load i8, i8* %ch217 - %111 = icmp eq i8 %110, 10 - br label %cond.end73 +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 -cond.false72: ; preds = %if_block68 - br label %cond.end73 +cond.true68: ; preds = %cond.true65 + br label %cond.end70 -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.false69: ; preds = %cond.true65 + %105 = load i8, i8* %c2 + %106 = icmp ne i8 %105, 47 + br label %cond.end70 -dumy_block76: ; No predecessors! - br label %if_end70 +cond.end70: ; preds = %cond.false69, %cond.true68 + %cond.res71 = phi i1 [ true, %cond.true68 ], [ %106, %cond.false69 ] + br label %cond.end67 -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 +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_then78: ; preds = %if_block77 +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.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %129) - %130 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%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.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %134) - %135 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%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 @@ -11693,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.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %139) - %140 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%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 @@ -11711,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.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %144) - %145 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%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.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %149) - %150 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%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.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %154) - %155 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%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 @@ -11768,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.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %159) - %160 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%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 @@ -11787,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.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %164) - %165 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%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 @@ -11806,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.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %169) - %170 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%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 @@ -11825,275 +14199,370 @@ 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.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %174) - %175 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%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 br label %if_block133 -dumy_block132: ; No predecessors! - br label %if_end131 +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 -if_block133: ; preds = %if_end131 +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.325(%"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.319(%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 - -cond.false137: ; preds = %if_block133 - br label %cond.end138 - -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 - dumy_block140: ; No predecessors! - br label %if_end135 + br label %if_end139 -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_block141: ; preds = %if_end139 + %181 = load i8, i8* %ch16 + %182 = icmp eq i8 %181, 59 + br i1 %182, label %if_then142, label %if_end143 -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) - %189 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %189, i32 35) +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 -if_end143: ; preds = %dumy_block148, %cond.end146 - br label %if_block149 +if_end143: ; preds = %dumy_block144, %if_block141 + br label %if_block145 + +dumy_block144: ; No predecessors! + br label %if_end143 -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 +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 -cond.false145: ; preds = %if_block141 - br label %cond.end146 +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 -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_end147: ; preds = %dumy_block148, %if_block145 + br label %if_block149 dumy_block148: ; No predecessors! - br label %if_end143 + br label %if_end147 -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 +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 if_then150: ; preds = %if_block149 - br label %if_block152 + %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 + +if_end151: ; preds = %dumy_block152, %if_block149 + br label %if_block153 -if_end151: ; preds = %if_end154, %if_block149 - br label %if_block156 +dumy_block152: ; No predecessors! + br label %if_end151 -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 +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_then153: ; preds = %if_block152 - %198 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %198, i32 37) +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_end154: ; preds = %dumy_block155, %if_block152 - br label %if_end151 +if_end155: ; preds = %dumy_block160, %cond.end158 + br label %if_block161 -dumy_block155: ; No predecessors! - br label %if_end154 +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_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_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_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) - %203 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %203, i32 33) +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_end158: ; preds = %dumy_block163, %cond.end161 - br label %if_block164 +if_end163: ; preds = %dumy_block168, %cond.end166 + br label %if_block169 -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 +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 -cond.false160: ; preds = %if_block156 - br label %cond.end161 +cond.false165: ; preds = %if_block161 + br label %cond.end166 -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 +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_block163: ; No predecessors! - br label %if_end158 +dumy_block168: ; No predecessors! + br label %if_end163 -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_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_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_then170: ; preds = %if_block169 + br label %if_block172 + +if_end171: ; preds = %if_end174, %if_block169 + br label %if_block176 + +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 + +if_then173: ; preds = %if_block172 + %218 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %218, i32 37) ret void -if_end166: ; preds = %dumy_block171, %cond.end169 - br label %if_block172 +if_end174: ; preds = %dumy_block175, %if_block172 + br label %if_end171 -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.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") - %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) - %229 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %229, i32 0) +dumy_block175: ; No predecessors! + br label %if_end174 + +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_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 -cond.true175: ; preds = %if_block172 - br label %cond.end177 +if_end178: ; preds = %dumy_block183, %cond.end181 + br label %if_block184 -cond.false176: ; preds = %if_block172 - %230 = load i8, i8* %ch16 - %231 = icmp eq i8 %230, 46 - br label %cond.end177 +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.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 +cond.false180: ; preds = %if_block176 + br label %cond.end181 -dumy_block179: ; No predecessors! - br label %if_end174 +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 -dumy_block184: ; No predecessors! +dumy_block183: ; No predecessors! + br label %if_end178 + +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 + +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.321(%"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.321(%"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.322(%"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.322(%"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.323(%"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.323(%"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 @@ -12107,33 +14576,33 @@ 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 - %tmp.v = alloca i32 +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 - store i32 1, i32* %tmp.v - %4 = load i32, i32* %tmp.v - %5 = call i8 @peek(%"RangeWithLookahead[_CharSource]"* %3, i32 %4) + %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[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.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,20 +14611,20 @@ 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 - %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) + store i64 %2, i64* %tmp.this + %3 = load i64, i64* %tmp.this + %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_++.303"(%_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 @@ -12167,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 @@ -12182,28 +14651,28 @@ 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 - %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) + store i64 %17, i64* %tmp.this1 + %18 = load i64, i64* %tmp.this1 + %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.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* @"().422"(%"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 +14686,7 @@ dumy_block4: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal i8* @"().324"(%"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 @@ -12230,64 +14699,64 @@ 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.325(%"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 +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 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_*.326"(%"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.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 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.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) + %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_*.326"(%"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.322(%"RangeWithLookahead[_CharSource]"* %1) + %1 = load %"RangeWithLookahead[BufferedCharSourceRange]"*, %"RangeWithLookahead[BufferedCharSourceRange]"** %r.addr + %2 = call i8 @front.420(%"RangeWithLookahead[BufferedCharSourceRange]"* %1) ret i8 %2 } @@ -12297,7 +14766,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 +14780,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,33 +14812,33 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @popFront.327(%"RangeWithLookahead[_CharSource]"* %this) #4 { - %this.addr = alloca %"RangeWithLookahead[_CharSource]"* - store %"RangeWithLookahead[_CharSource]"* %this, %"RangeWithLookahead[_CharSource]"** %this.addr - %tmp.v = alloca i64 +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 - store i64 0, i64* %tmp.v - %3 = load i64, i64* %tmp.v - call void @remove.328(%"Vector[Char]"* %2, i64 %3) + %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.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.318(%"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_++.303"(%_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 @@ -12378,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 @@ -12392,36 +14861,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.426(%"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.427(%"ContiguousMemoryRange[Char]"* %r, %"Vector[Char]"* %1) %2 = load i64, i64* %index.addr - call void @popFront.331(%"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.183(%"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.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.430(%"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.431(%"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.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]"* @@ -12436,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.330(%"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.330(%"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]" @@ -12453,21 +14922,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.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.187(%"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.331(%"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 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 +14946,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(%"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.332(%"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 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 +14970,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(%"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.333(%"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]" @@ -12528,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.334(%"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.335(%"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.336(%"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.337(%"ContiguousMemoryRange[Char]"* %"$rangeVar") + call void @popFront.435(%"ContiguousMemoryRange[Char]"* %"$rangeVar") br label %while_block while_end: ; preds = %while_block @@ -12553,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 @"==.188"(%"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 @@ -12568,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.189(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %20) - call void @"=.184"(%"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.189(%"RawPtr[Char]"* %"$tmpC5", %"RawPtr[Char]" %21) - call void @"=.184"(%"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 @@ -12581,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 @"=.184"(%"RawPtr[Char]"* %23, %"RawPtr[Char]"* %rBegin) + call void @"=.200"(%"RawPtr[Char]"* %23, %"RawPtr[Char]"* %rBegin) ret void } @@ -12596,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.187(%"RawPtr[Char]"* %1, %"RawPtr[Char]"* %2) + call void @ctor.192(%"RawPtr[Char]"* %1, %"RawPtr[Char]"* %2) ret void } @@ -12611,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.187(%"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.334(%"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]"* @@ -12628,20 +15097,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.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.187(%"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.335(%"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.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -12650,14 +15119,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.434(%"ContiguousMemoryRange[Char]" %this) #4 { %this.addr = alloca %"ContiguousMemoryRange[Char]" store %"ContiguousMemoryRange[Char]" %this, %"ContiguousMemoryRange[Char]"* %this.addr br label %code @@ -12670,7 +15139,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @popFront.337(%"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]" @@ -12682,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.189(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %5) - call void @"=.184"(%"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 @@ -12699,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.316(%"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.325(%"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 @@ -12716,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.321(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5) - %7 = call i1 @"().338"(%"$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 @@ -12730,7 +15199,7 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: alwaysinline nounwind -define internal i1 @"().338"(%"$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 @@ -12744,7 +15213,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.339(%"$lambdaEnclosureData"* %this) #3 { +define internal void @ctor.437(%"$lambdaEnclosureData"* %this) #3 { %this.addr = alloca %"$lambdaEnclosureData"* store %"$lambdaEnclosureData"* %this, %"$lambdaEnclosureData"** %this.addr br label %code @@ -12754,7 +15223,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.340(%"$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"* @@ -12766,7 +15235,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.341(%"$lambdaEnclosureData"* %this) #3 { +define internal void @dtor.439(%"$lambdaEnclosureData"* %this) #3 { %this.addr = alloca %"$lambdaEnclosureData"* store %"$lambdaEnclosureData"* %this, %"$lambdaEnclosureData"** %this.addr br label %code @@ -12776,7 +15245,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.342"(%"$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"* @@ -12788,7 +15257,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.343"(%"$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"* @@ -12800,22 +15269,22 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i1 @"pre_!!.344"(%"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.316(%"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.345(%"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 @@ -12824,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.316(%"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.325(%"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 @@ -12841,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.321(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5) - %7 = call i1 @"().346"(%"$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 @@ -12855,7 +15324,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 @"().444"(%"$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 +15338,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.347(%"$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 @@ -12879,7 +15348,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.348(%"$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"* @@ -12891,7 +15360,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.349(%"$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 @@ -12901,7 +15370,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.350"(%"$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"* @@ -12913,7 +15382,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.351"(%"$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"* @@ -12924,54 +15393,332 @@ code: ; preds = %0 ret i1 true } -; Function Attrs: inlinehint nounwind -define internal void @reportError.352(%"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* - store %String* %msg, %String** %msg.addr - br label %code +; Function Attrs: inlinehint nounwind +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*, %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.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 -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 - %8 = load %String*, %String** %msg.addr - call void @reportError(%ExternalErrorReporter* %2, %Location %7, %String* %8) +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.353(%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.295(%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) - ret void - -dumy_block: ; No predecessors! - call void @dtor.297(%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.354(%"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 @@ -12980,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.316(%"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.325(%"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 @@ -12997,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.321(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5) - %7 = call i1 @"().355"(%"$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 @@ -13011,7 +15758,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 @"().456"(%"$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 +15772,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.356(%"$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 @@ -13035,7 +15782,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.357(%"$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"* @@ -13047,7 +15794,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.358(%"$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 @@ -13057,7 +15804,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.359"(%"$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"* @@ -13069,7 +15816,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.360"(%"$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"* @@ -13081,9 +15828,9 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @advanceIf.361(%"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 @@ -13092,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.316(%"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.325(%"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 @@ -13109,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.321(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %5) - %7 = call i1 @"().362"(%"$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 @@ -13123,7 +15870,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 @"().463"(%"$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 +15884,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.363(%"$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 @@ -13147,7 +15894,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.364(%"$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"* @@ -13159,7 +15906,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.365(%"$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 @@ -13169,7 +15916,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.366"(%"$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"* @@ -13181,7 +15928,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal i1 @"==.367"(%"$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"* @@ -13193,12 +15940,12 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @advance.368(%"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.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -13206,14 +15953,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) + %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 @@ -13224,33 +15971,33 @@ while_end: ; preds = %while_block } ; Function Attrs: inlinehint nounwind -define internal i8 @"pre_++.369"(%"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.325(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %1) - %2 = load %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"*, %"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"** %r.addr - %3 = call i8 @front.321(%"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.316(%"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.370(%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* @@ -13264,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.194(%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 @@ -13278,48 +16025,48 @@ 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.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 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) + %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 - store i32 1, i32* %tmp.v - %4 = load i32, i32* %tmp.v - %5 = call i1 @hasLessThan(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %3, i32 %4) + %3 = load %SparrowScanner*, %SparrowScanner** %this.addr + store i32 1, i32* %tmp.this + %4 = load i32, i32* %tmp.this + %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.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.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.319(%TokenType* %10, i32 0) + call void @ctor.417(%TokenType* %10, i32 0) ret void if_end: ; preds = %dumy_block, %if_block @@ -13329,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_!!.344"(%"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 @@ -13344,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 @@ -13359,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.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.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.319(%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.325(%"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.319(%TokenType* %33, i32 39) + call void @ctor.417(%TokenType* %33, i32 39) ret void dumy_block11: ; No predecessors! @@ -13406,31 +16153,31 @@ 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.371(%"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.371(%"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.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,20 +16186,20 @@ 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 - %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) + store i64 %2, i64* %tmp.this + %3 = load i64, i64* %tmp.this + %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_++.303"(%_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 @@ -13463,18 +16210,18 @@ 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 - %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) + store i64 %14, i64* %tmp.this1 + %15 = load i64, i64* %tmp.this1 + %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 @@ -13486,22 +16233,22 @@ 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.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 - %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 @@ -13511,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_++.369"(%"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 @@ -13526,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 @"+=.372"(%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.325(%"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 @@ -13547,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 @"+=.372"(%String* %20, i8 10) + call void @"+=.473"(%String* %20, i8 10) br label %if_end7 if_else6: ; preds = %if_block4 @@ -13565,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 @"+=.372"(%String* %25, i8 8) + call void @"+=.473"(%String* %25, i8 8) br label %if_end11 if_else10: ; preds = %if_block8 @@ -13583,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 @"+=.372"(%String* %30, i8 12) + call void @"+=.473"(%String* %30, i8 12) br label %if_end15 if_else14: ; preds = %if_block12 @@ -13601,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 @"+=.372"(%String* %35, i8 9) + call void @"+=.473"(%String* %35, i8 9) br label %if_end19 if_else18: ; preds = %if_block16 @@ -13619,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 @"+=.372"(%String* %40, i8 92) + call void @"+=.473"(%String* %40, i8 92) br label %if_end23 if_else22: ; preds = %if_block20 @@ -13637,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 @"+=.372"(%String* %45, i8 39) + call void @"+=.473"(%String* %45, i8 39) br label %if_end27 if_else26: ; preds = %if_block24 @@ -13655,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 @"+=.372"(%String* %50, i8 34) + call void @"+=.473"(%String* %50, i8 34) br label %if_end31 if_else30: ; preds = %if_block28 @@ -13676,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_++.369"(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %57) - call void @"+=.372"(%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 @@ -13701,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 - store i32 2, i32* %tmp.v - %62 = load i32, i32* %tmp.v - %63 = call i1 @hasLessThan(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %61, i32 %62) + %61 = load %SparrowScanner*, %SparrowScanner** %this.addr + store i32 2, i32* %tmp.this + %62 = load i32, i32* %tmp.this + %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.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.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_++.369"(%"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_++.369"(%"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.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 @"+=.473"(%String* %81, i8 %84) br label %if_end35 dumy_block: ; No predecessors! @@ -13752,7 +16499,7 @@ dumy_block41: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal void @"+=.372"(%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 @@ -13762,20 +16509,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.474(%String* %1, i8 %2) ret void } ; Function Attrs: inlinehint nounwind -define internal void @pushBack.373(%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 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 +16534,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 @"==.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.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 +16558,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.269(%"RawPtr[Char]"* %"$tmpC", %"RawPtr[Char]" %19) + call void @"=.200"(%"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 +16586,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 +16599,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 +16647,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,73 +16665,73 @@ 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 } 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 @"+=.372"(%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) + %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 - %tmp.v = alloca i64 - %tmp.v5 = alloca %String + %this.addr = alloca %SparrowScanner* + store %SparrowScanner* %this, %SparrowScanner** %this.addr + %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) + %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.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_!!.344"(%"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 @@ -13994,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 @@ -14008,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 @@ -14022,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.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.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.319(%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 - store i64 2, i64* %tmp.v6 - %26 = load i64, i64* %tmp.v6 - call void @advance.368(%"LocationSyncCharRange[RangeWithLookahead[_CharSource]]"* %25, i64 %26) + %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.469(%"LocationSyncCharRange[RangeWithLookahead[BufferedCharSourceRange]]"* %25, i64 %26) %27 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %27, i32 39) + call void @ctor.417(%TokenType* %27, i32 39) ret void dumy_block: ; No predecessors! @@ -14309,23 +17056,23 @@ 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 %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 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 @@ -14335,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 @@ -14355,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.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.476(%SparrowScanner* %11, i32 %13) store i8 %14, i8* %c br label %while_block @@ -14372,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.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.476(%SparrowScanner* %17, i32 %19) store i8 %20, i8* %c br label %while_step @@ -14394,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 @@ -14409,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 @@ -14420,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_!!.344"(%"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 @"+=.372"(%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.325(%"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 @"().374"(%"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 @@ -14460,7 +17207,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 @"().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 @@ -14477,19 +17224,19 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i8 @peekChar.375(%"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 } @@ -14497,13 +17244,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 @@ -14512,16 +17259,15 @@ 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 - %data = alloca %StringRef* - %"$tmpC" = alloca %StringRef + %data = alloca %StringRef %tmp.StringRef = alloca %StringRef %tmp.StringRef24 = alloca %StringRef %tmp.StringRef30 = alloca %StringRef @@ -14548,126 +17294,126 @@ 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 @"+=.372"(%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) + %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_!!.344"(%"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.325(%"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 - 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*, %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 @"+=.473"(%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*, %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 - %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*, %SparrowScanner** %this.addr + %38 = call i8 @peekChar(%SparrowScanner* %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*, %SparrowScanner** %this.addr + %41 = call i1 @parseOperator(%SparrowScanner* %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.417(%TokenType* %42, i32 36) ret void if_end14: ; preds = %dumy_block15, %if_block12 @@ -14677,18 +17423,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.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 - %47 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %47, i32 10) + %48 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %48, i32 10) ret void if_else: ; preds = %if_block16 @@ -14701,18 +17447,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.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 - %53 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %53, i32 11) + %54 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %54, i32 11) ret void if_else22: ; preds = %if_block20 @@ -14725,18 +17471,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.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 - %59 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %59, i32 4) + %60 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %60, i32 4) ret void if_else28: ; preds = %if_block26 @@ -14749,18 +17495,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.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 - %65 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %65, i32 12) + %66 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %66, i32 12) ret void if_else34: ; preds = %if_block32 @@ -14773,18 +17519,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.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 - %71 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %71, i32 5) + %72 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %72, i32 5) ret void if_else40: ; preds = %if_block38 @@ -14797,18 +17543,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.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 - %77 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %77, i32 6) + %78 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %78, i32 6) ret void if_else46: ; preds = %if_block44 @@ -14821,18 +17567,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.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 - %83 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %83, i32 15) + %84 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %84, i32 15) ret void if_else52: ; preds = %if_block50 @@ -14845,18 +17591,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.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 - %89 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %89, i32 23) + %90 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %90, i32 23) ret void if_else58: ; preds = %if_block56 @@ -14869,18 +17615,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.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 - %95 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %95, i32 20) + %96 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %96, i32 20) ret void if_else64: ; preds = %if_block62 @@ -14893,18 +17639,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.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 - %101 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %101, i32 13) + %102 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %102, i32 13) ret void if_else70: ; preds = %if_block68 @@ -14917,18 +17663,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.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 - %107 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %107, i32 14) + %108 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %108, i32 14) ret void if_else76: ; preds = %if_block74 @@ -14941,18 +17687,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.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 - %113 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %113, i32 3) + %114 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %114, i32 3) ret void if_else82: ; preds = %if_block80 @@ -14965,18 +17711,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.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 - %119 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %119, i32 2) + %120 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %120, i32 2) ret void if_else88: ; preds = %if_block86 @@ -14989,18 +17735,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.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 - %125 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %125, i32 21) + %126 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %126, i32 21) ret void if_else94: ; preds = %if_block92 @@ -15013,18 +17759,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.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 - %131 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %131, i32 7) + %132 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %132, i32 7) ret void if_else100: ; preds = %if_block98 @@ -15037,18 +17783,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.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 - %137 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %137, i32 16) + %138 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %138, i32 16) ret void if_else106: ; preds = %if_block104 @@ -15061,18 +17807,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.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 - %143 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %143, i32 17) + %144 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %144, i32 17) ret void if_else112: ; preds = %if_block110 @@ -15085,18 +17831,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.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 - %149 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %149, i32 22) + %150 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %150, i32 22) ret void if_else118: ; preds = %if_block116 @@ -15109,18 +17855,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.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 - %155 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %155, i32 18) + %156 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %156, i32 18) ret void if_else124: ; preds = %if_block122 @@ -15133,18 +17879,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.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 - %161 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %161, i32 8) + %162 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %162, i32 8) ret void if_else130: ; preds = %if_block128 @@ -15157,18 +17903,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.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 - %167 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %167, i32 9) + %168 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%TokenType* %168, i32 9) ret void if_else136: ; preds = %if_block134 @@ -15181,23 +17927,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.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 - %173 = load %TokenType*, %TokenType** %_result.addr - call void @ctor.319(%TokenType* %173, i32 19) + %174 = load %TokenType*, %TokenType** %_result.addr + call void @ctor.417(%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.417(%TokenType* %175, i32 36) ret void if_end143: ; preds = %dumy_block146, %dumy_block145 @@ -15211,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 @@ -15223,27 +17969,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 @@ -15251,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 - store i32 2, i32* %tmp.v - %8 = load i32, i32* %tmp.v - %9 = call i8 @peekChar.375(%"SparrowScanner[_CharSource, ExternalErrorReporter]"* %7, i32 %8) + %7 = load %SparrowScanner*, %SparrowScanner** %this.addr + store i32 2, i32* %tmp.this + %8 = load i32, i32* %tmp.this + %9 = call i8 @peekChar.476(%SparrowScanner* %7, i32 %8) %10 = call i8 @toLower(i8 %9) store i8 %10, i8* %ch3 br label %if_block @@ -15273,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 - store i64 2, i64* %tmp.v1 - %15 = load i64, i64* %tmp.v1 - call void @advance.368(%"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 - %19 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %20 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %19, i32 0, i32 2 + %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.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*, %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 @@ -15316,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 - store i64 2, i64* %tmp.v11 - %32 = load i64, i64* %tmp.v11 - call void @advance.368(%"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 - %36 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %37 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %36, i32 0, i32 2 + %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.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*, %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 @@ -15359,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 - store i64 1, i64* %tmp.v21 - %49 = load i64, i64* %tmp.v21 - call void @advance.368(%"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 - %53 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %54 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %53, i32 0, i32 2 + %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.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*, %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 - store i64 10, i64* %tmp.v23 - %62 = load i64, i64* %tmp.v23 - %63 = load %"SparrowScanner[_CharSource, ExternalErrorReporter]"*, %"SparrowScanner[_CharSource, ExternalErrorReporter]"** %this.addr - %64 = getelementptr inbounds %"SparrowScanner[_CharSource, ExternalErrorReporter]", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %63, i32 0, i32 2 + %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*, %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 @@ -15409,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_!!.344"(%"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 @@ -15474,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 @@ -15493,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_!!.344"(%"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 @@ -15528,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_!!.344"(%"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 @@ -15565,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.325(%"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 @@ -15582,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.325(%"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.376(%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.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.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.319(%TokenType* %133, i32 0) + call void @ctor.417(%TokenType* %133, i32 0) ret void if_end68: ; preds = %dumy_block, %if_block66 @@ -15630,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_!!.344"(%"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.325(%"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 @@ -15661,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_!!.344"(%"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.325(%"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 @@ -15696,26 +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.v90 - %160 = load i8, i8* %tmp.v90 - call void @"+=.372"(%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 + store i8 0, i8* %tmp.this90 + %160 = load i8, i8* %tmp.this90 + 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 - 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 + %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.377(%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 @@ -15724,16 +18468,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.417(%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.417(%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.203(%TokenType* %172, %TokenType* %cond) br i1 %173, label %cond_destruct_alt1, label %cond_destruct_alt2 cond_destruct_alt1: ; preds = %cond_end @@ -15775,16 +18519,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.417(%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.417(%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.203(%TokenType* %175, %TokenType* %cond106) br i1 %176, label %cond_destruct_alt1107, label %cond_destruct_alt2108 cond_destruct_alt1107: ; preds = %cond_end103 @@ -15809,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.319(%TokenType* %tmp.v117, i32 41) + call void @ctor.417(%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.417(%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.203(%TokenType* %177, %TokenType* %cond119) br i1 %178, label %cond_destruct_alt1120, label %cond_destruct_alt2121 cond_destruct_alt1120: ; preds = %cond_end116 @@ -15844,17 +18588,17 @@ 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* 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 +18607,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 @@ -15879,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_!!.344"(%"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.325(%"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 @@ -15911,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 @@ -15921,27 +18665,27 @@ 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 @"+=.372"(%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.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 @@ -15950,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_!!.344"(%"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.325(%"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 @@ -15982,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 @@ -15992,27 +18736,27 @@ 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 @"+=.372"(%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.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 +18769,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,24 +18787,24 @@ 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 } ; 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 @@ -16069,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_!!.344"(%"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.325(%"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 @"().374"(%"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 @@ -16104,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 @@ -16115,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 @"+=.372"(%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 @@ -16136,26 +18880,11 @@ if_end: ; preds = %if_then, %if_block } ; Function Attrs: inlinehint nounwind -define internal i1 @isEmpty.376(%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 @"==.188"(%"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.477(%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 +18893,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(%"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 @@ -16177,7 +18906,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.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 @@ -16194,25 +18923,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.452(%StringOutputStream* %s) %1 = call %StringOutputStream* @"<<"(%StringOutputStream* %s, %StringRef* %a1.addr) - %2 = call %StringOutputStream* @"<<.379"(%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* @"<<.383"(%StringOutputStream* %3, i32* %a4.addr) - %5 = call %StringOutputStream* @"<<.379"(%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.192(%String* %6, %String* %7) - call void @dtor.297(%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.297(%StringOutputStream* %s) + call void @dtor.454(%StringOutputStream* %s) ret void } ; Function Attrs: inlinehint nounwind -define internal %StringOutputStream* @"<<.379"(%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* @@ -16223,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 @"<<<.380"(%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 @"<<<.380"(%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 @@ -16240,17 +18969,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.481(%String* %2, i8 %3) ret void } ; Function Attrs: inlinehint nounwind -define internal void @append.381(%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 store i8 %value, i8* %value.addr - %tmp.v = alloca %StringRef + %tmp.this = alloca %StringRef br label %code code: ; preds = %0 @@ -16264,14 +18993,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.482(%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.482(%String* %this, i8 %value, %StringRef %pos) #4 { %this.addr = alloca %String* store %String* %this, %String** %this.addr %value.addr = alloca i8 @@ -16280,14 +19009,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 +19032,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.190(%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(%"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(%"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 @"==.268"(%"RawPtr[Char]"* %p, %"RawPtr[Char]"* %q) %23 = xor i1 true, %22 br i1 %23, label %while_body, label %while_end @@ -16334,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.189(%"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 @@ -16345,16 +19074,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(%"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.189(%"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 @@ -16363,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.189(%"RawPtr[Char]"* %"$tmpC7", %"RawPtr[Char]" %43) - call void @"=.184"(%"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* @"<<.383"(%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* @@ -16380,53 +19109,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 @"<<<.484"(%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 @"<<<.484"(%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.485(%String* %"$tmpC") call void @append(%String* %2, %StringRef %4) - call void @dtor.229(%String* %"$tmpC1") + call void @dtor.261(%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.485(%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 +19166,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.471(%String* %3, %StringRef* %"$tmpForRef") ret void } ; Function Attrs: inlinehint nounwind -define internal void @"+=.386"(%"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* @@ -16464,20 +19188,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.487(%"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.487(%"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 +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 @"==.221"(%"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.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.488(%"Vector[UInt]"* %7) %9 = mul i64 %6, %8 store i64 %9, i64* %t br label %if_block1 @@ -16507,42 +19231,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.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.223(%"RawPtr[UInt]"* %"$tmpC", %"RawPtr[UInt]" %20) - call void @"=.215"(%"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 %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.489(%"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.488(%"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 +19276,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.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.389(%"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 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 +19302,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.488(%"Vector[UInt]"* %1) store i64 %2, i64* %curCapacity br label %if_block @@ -16599,14 +19323,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 +19340,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 +19353,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.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.390(%"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.218(%"RawPtr[UInt]"* %"$tmpC", %"RawPtr[UInt]" %33, i64 %34) - call void @"=.215"(%"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.218(%"RawPtr[UInt]"* %"$tmpC12", %"RawPtr[UInt]" %39, i64 %40) - call void @"=.215"(%"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.390(%"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 @@ -16676,7 +19400,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.224(%"RawPtr[UInt]" %2) %4 = load i64, i64* %n.addr %5 = mul i64 %4, 4 %6 = call i8* @realloc(i8* %3, i64 %5) @@ -16688,20 +19412,20 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i1 @isEmpty.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 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.392(%"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.392(%"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 @@ -16711,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 @"==.208"(%"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.393(%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.394(%"Vector[Token]"* %3) - call void @ctor.190(%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.394(%"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 @@ -16742,88 +19466,88 @@ 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.219(%"RawPtr[Token]" %3) ret %Token* %4 } ; Function Attrs: noinline nounwind -define void @popFront.395(%"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 +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 %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 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.319(%TokenType* %tmp.v, i32 25) - call void @"=.255"(%TokenType* %9, %TokenType* %tmp.v) + %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.396(%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.191(%TokenType* %oldType, %TokenType* %11) - call void @dtor.228(%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) - %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 @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.319(%TokenType* %tmp.v2, i32 1) - %17 = call i1 @"==.279"(%TokenType* %16, %TokenType* %tmp.v2) + 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! @@ -16833,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.393(%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.319(%TokenType* %tmp.v4, i32 0) - %21 = call i1 @"==.279"(%TokenType* %20, %TokenType* %tmp.v4) + 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 @@ -16850,48 +19574,48 @@ 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.260(%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.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.393(%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.319(%TokenType* %tmp.v6, i32 1) - %25 = call i1 @"==.279"(%TokenType* %24, %TokenType* %tmp.v6) + 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.397(%"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.228(%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) - %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) + 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.411(%"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 @@ -16911,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.412(%"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 @@ -16934,13 +19658,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.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 - 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 @@ -16954,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.319(%TokenType* %tmp.v41, i32 31) - call void @"=.255"(%TokenType* %55, %TokenType* %tmp.v41) - %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 @@ -16967,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.319(%TokenType* %tmp.v39, i32 25) - %58 = call i1 @"==.279"(%TokenType* %oldType, %TokenType* %tmp.v39) + 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 @@ -16980,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.319(%TokenType* %tmp.v37, i32 31) - %60 = call i1 @"==.279"(%TokenType* %oldType, %TokenType* %tmp.v37) + 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 @@ -16994,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.319(%TokenType* %tmp.v35, i32 24) - %63 = call i1 @"==.279"(%TokenType* %62, %TokenType* %tmp.v35) + 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 @@ -17040,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.319(%TokenType* %tmp.v59, i32 24) - call void @"=.255"(%TokenType* %69, %TokenType* %tmp.v59) - %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 @"+=.386"(%"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 @@ -17057,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.319(%TokenType* %tmp.v57, i32 0) - %75 = call i1 @"==.279"(%TokenType* %74, %TokenType* %tmp.v57) + 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 @@ -17093,8 +19817,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 @@ -17107,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.412(%"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.414(%"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.319(%TokenType* %tmp.v75, i32 31) - call void @"=.255"(%TokenType* %93, %TokenType* %tmp.v75) + %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.412(%"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.412(%"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.415(%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 @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 @@ -17184,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.319(%TokenType* %tmp.v87, i32 28) - %120 = call i1 @"==.279"(%TokenType* %119, %TokenType* %tmp.v87) + 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 @@ -17199,18 +19923,18 @@ 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.260(%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.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 @@ -17223,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.319(%TokenType* %tmp.v98, i32 24) - %128 = call i1 @"==.279"(%TokenType* %127, %TokenType* %tmp.v98) + 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 @@ -17242,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.319(%TokenType* %tmp.v107, i32 29) - %132 = call i1 @"==.279"(%TokenType* %131, %TokenType* %tmp.v107) + 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.418(%"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 @@ -17259,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.411(%"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 @@ -17275,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.319(%TokenType* %tmp.v116, i32 27) - %141 = call i1 @"==.279"(%TokenType* %140, %TokenType* %tmp.v116) + 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.418(%"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 @@ -17292,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.411(%"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 @@ -17308,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.319(%TokenType* %tmp.v124, i32 25) - %150 = call i1 @"==.279"(%TokenType* %149, %TokenType* %tmp.v124) + 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.418(%"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.411(%"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 @@ -17338,84 +20062,84 @@ 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.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.393(%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 @"=.255"(%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.190(%Token* %10, %Token* %tk) - call void @dtor.228(%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.228(%Token* %tk) + call void @dtor.260(%Token* %tk) ret void } ; Function Attrs: inlinehint nounwind -define internal void @popFront.397(%"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 +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 - store i64 0, i64* %tmp.v - %3 = load i64, i64* %tmp.v - call void @remove.398(%"Vector[Token]"* %2, i64 %3) + %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.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.392(%"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_++.313"(%Token* %"$tmpC", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %10) - call void @"+=.311"(%"Vector[Token]"* %8, %Token* %"$tmpC") - call void @dtor.228(%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_!!.309"(%"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 @@ -17427,82 +20151,316 @@ 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.498(%"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.499(%"ContiguousMemoryRange[Token]"* %r, %"Vector[Token]"* %1) + %2 = load i64, i64* %index.addr + call void @popFront.501(%"ContiguousMemoryRange[Token]"* %r, i64 %2) + %3 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr + %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.503(%"ContiguousMemoryRange[Token]"* %r, i64 %8) + %9 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr + %10 = load %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %r + call void @remove.504(%"Vector[Token]"* %9, %"ContiguousMemoryRange[Token]" %10) + ret void +} + +; Function Attrs: inlinehint nounwind +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]"* + store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr + br label %code + +code: ; preds = %0 + %1 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %_result.addr + %2 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr + %3 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %2, i32 0, i32 0 + %4 = load %"RawPtr[Token]", %"RawPtr[Token]"* %3 + %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.500(%"ContiguousMemoryRange[Token]"* %1, %"RawPtr[Token]" %4, %"RawPtr[Token]" %7) + ret void +} + +; Function Attrs: alwaysinline nounwind +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]" + store %"RawPtr[Token]" %f_begin, %"RawPtr[Token]"* %f_begin.addr + %f_end.addr = alloca %"RawPtr[Token]" + store %"RawPtr[Token]" %f_end, %"RawPtr[Token]"* %f_end.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.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.217(%"RawPtr[Token]"* %4, %"RawPtr[Token]"* %f_end.addr) + ret void +} + +; Function Attrs: alwaysinline nounwind +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 + store i64 %n, i64* %n.addr + %"$tmpC" = alloca %"RawPtr[Token]" + %tmp.this = alloca i64 + 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]"** %this.addr + %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.this + %7 = load i64, i64* %tmp.this + 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.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]" + store %"RawPtr[Token]" %this, %"RawPtr[Token]"* %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 + %1 = load %"RawPtr[Token]"*, %"RawPtr[Token]"** %_result.addr + %2 = load %"RawPtr[Token]", %"RawPtr[Token]"* %this.addr + %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 + %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.216(%"RawPtr[Token]"* %1, i8* %8) + ret void +} + +; Function Attrs: alwaysinline nounwind +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 + store i64 %n, i64* %n.addr + %"$tmpC" = alloca %"RawPtr[Token]" + %tmp.this = alloca i64 + 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 1 + %3 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %this.addr + %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.this + %7 = load i64, i64* %tmp.this + %8 = sub i64 0, %7 + 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.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]" + store %"ContiguousMemoryRange[Token]" %range, %"ContiguousMemoryRange[Token]"* %range.addr + %rBegin = alloca %"RawPtr[Token]" + %rEnd = alloca %"RawPtr[Token]" + %"$rangeVar" = alloca %"ContiguousMemoryRange[Token]" + %el = alloca %Token* + %"$tmpC" = alloca %"RawPtr[Token]" + %"$tmpC5" = alloca %"RawPtr[Token]" + br label %code + +code: ; preds = %0 + %1 = load %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %range.addr + call void @frontPtr.505(%"RawPtr[Token]"* %rBegin, %"ContiguousMemoryRange[Token]" %1) + %2 = load %"ContiguousMemoryRange[Token]", %"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.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.509(%"ContiguousMemoryRange[Token]" %6) + store %Token* %7, %Token** %el + %8 = load %Token*, %Token** %el + call void @dtor.260(%Token* %8) + br label %while_step + +while_step: ; preds = %while_body + call void @popFront.510(%"ContiguousMemoryRange[Token]"* %"$rangeVar") + br label %while_block + +while_end: ; preds = %while_block + br label %while_block1 + +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 @"==.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.219(%"RawPtr[Token]" %13) + %15 = load %"RawPtr[Token]", %"RawPtr[Token]"* %rEnd + %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.219(%"RawPtr[Token]" %17) + call void @dtor.260(%Token* %18) + %19 = load %"RawPtr[Token]", %"RawPtr[Token]"* %rBegin + 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.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 + br label %while_block1 + +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 @"=.212"(%"RawPtr[Token]"* %22, %"RawPtr[Token]"* %rBegin) + ret void +} + +; Function Attrs: inlinehint nounwind +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]" + store %"ContiguousMemoryRange[Token]" %this, %"ContiguousMemoryRange[Token]"* %this.addr br label %code code: ; preds = %0 - %1 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr - call void @all.399(%"ContiguousMemoryRange[Token]"* %r, %"Vector[Token]"* %1) - %2 = load i64, i64* %index.addr - call void @popFront.401(%"ContiguousMemoryRange[Token]"* %r, i64 %2) - %3 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr - %4 = call i64 @size.199(%"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 - %8 = call i64 @_SizeType_opMinus(i64 %6, i64 %7) - call void @popBack.403(%"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) + %1 = load %"RawPtr[Token]"*, %"RawPtr[Token]"** %_result.addr + %2 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %this.addr, i32 0, i32 0 + call void @ctor.217(%"RawPtr[Token]"* %1, %"RawPtr[Token]"* %2) ret void } ; Function Attrs: inlinehint nounwind -define internal void @all.399(%"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]"* - store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr +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]" + store %"ContiguousMemoryRange[Token]" %this, %"ContiguousMemoryRange[Token]"* %this.addr br label %code code: ; preds = %0 - %1 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %_result.addr - %2 = load %"Vector[Token]"*, %"Vector[Token]"** %this.addr - %3 = getelementptr inbounds %"Vector[Token]", %"Vector[Token]"* %2, i32 0, i32 0 - %4 = load %"RawPtr[Token]", %"RawPtr[Token]"* %3 - %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) + %1 = load %"RawPtr[Token]"*, %"RawPtr[Token]"** %_result.addr + %2 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %this.addr, i32 0, i32 1 + call void @ctor.217(%"RawPtr[Token]"* %1, %"RawPtr[Token]"* %2) 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.507(%"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"* %other) #3 { %this.addr = alloca %"ContiguousMemoryRange[Token]"* store %"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"** %this.addr - %f_begin.addr = alloca %"RawPtr[Token]" - store %"RawPtr[Token]" %f_begin, %"RawPtr[Token]"* %f_begin.addr - %f_end.addr = alloca %"RawPtr[Token]" - store %"RawPtr[Token]" %f_end, %"RawPtr[Token]"* %f_end.addr + %other.addr = alloca %"ContiguousMemoryRange[Token]"* + store %"ContiguousMemoryRange[Token]"* %other, %"ContiguousMemoryRange[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.207(%"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) + %3 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %other.addr + %4 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %3, i32 0, i32 0 + 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.217(%"RawPtr[Token]"* %6, %"RawPtr[Token]"* %8) ret void } +; Function Attrs: inlinehint nounwind +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 + br label %code + +code: ; preds = %0 + %1 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %this.addr, i32 0, i32 1 + %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.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 + ret i1 %7 +} + +; Function Attrs: inlinehint nounwind +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 + +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.219(%"RawPtr[Token]" %2) + ret %Token* %3 +} + ; Function Attrs: alwaysinline nounwind -define internal void @popFront.401(%"ContiguousMemoryRange[Token]"* %this, i64 %n) #3 { +define internal void @popFront.510(%"ContiguousMemoryRange[Token]"* %this) #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 br label %code code: ; preds = %0 @@ -17511,691 +20469,1034 @@ 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 - %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") + 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 void @advance.402(%"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 +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]" + %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.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 i32* @back.512(%"Vector[UInt]"* %this) #4 { + %this.addr = alloca %"Vector[UInt]"* + store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.addr + %"$tmpC" = alloca %"RawPtr[UInt]" + %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.this + %4 = load i64, i64* %tmp.this + call void @advance.513(%"RawPtr[UInt]"* %"$tmpC", %"RawPtr[UInt]" %3, i64 %4) + %5 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %"$tmpC" + %6 = call i32* @value.272(%"RawPtr[UInt]" %5) + ret i32* %6 +} + +; Function Attrs: inlinehint nounwind +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]" + 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[Token]"*, %"RawPtr[Token]"** %_result.addr - %2 = load %"RawPtr[Token]", %"RawPtr[Token]"* %this.addr - %3 = call i8* @bytePtr.201(%"RawPtr[Token]" %2) + %1 = load %"RawPtr[UInt]"*, %"RawPtr[UInt]"** %_result.addr + %2 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %this.addr + %3 = call i8* @bytePtr.224(%"RawPtr[UInt]" %2) %4 = load i64, i64* %n.addr - store i64 72, 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.206(%"RawPtr[Token]"* %1, i8* %8) + call void @ctor.229(%"RawPtr[UInt]"* %1, i8* %8) + ret void +} + +; Function Attrs: inlinehint nounwind +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]" + %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 %"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.this + %6 = load i64, i64* %tmp.this + 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.272(%"RawPtr[UInt]" %9) + %11 = load i32, i32* %10 + ret void +} + +; Function Attrs: inlinehint nounwind +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 + store %StringRef %a1, %StringRef* %a1.addr + %a2.addr = alloca i32 + store i32 %a2, i32* %a2.addr + %a3.addr = alloca %StringRef + store %StringRef %a3, %StringRef* %a3.addr + %a4.addr = alloca i32 + store i32 %a4, i32* %a4.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 = call %StringOutputStream* @"<<.516"(%StringOutputStream* %1, i32* %a2.addr) + %3 = call %StringOutputStream* @"<<"(%StringOutputStream* %2, %StringRef* %a3.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.189(%String* %5, %String* %6) + call void @dtor.454(%StringOutputStream* %s) + ret void + +dumy_block: ; No predecessors! + call void @dtor.454(%StringOutputStream* %s) ret void } +; Function Attrs: inlinehint nounwind +define internal %StringOutputStream* @"<<.516"(%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.this = alloca i64 + br label %code + +code: ; preds = %0 + %1 = load %StringOutputStream*, %StringOutputStream** %s.addr + %2 = load i32*, i32** %x.addr + %3 = load i32, i32* %2 + %4 = zext i32 %3 to i64 + store i64 %4, i64* %tmp.this + %5 = load i64, i64* %tmp.this + call void @"<<<.517"(%StringOutputStream* %1, i64 %5) + %6 = load %StringOutputStream*, %StringOutputStream** %s.addr + ret %StringOutputStream* %6 +} + ; Function Attrs: alwaysinline nounwind -define internal void @popBack.403(%"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 +define internal void @"<<<.517"(%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 %String 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 1 - %3 = load %"ContiguousMemoryRange[Token]"*, %"ContiguousMemoryRange[Token]"** %this.addr - %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 - %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") + %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* %"$tmpC", i64 %3) + %4 = call %StringRef @all.485(%String* %"$tmpC") + call void @append(%String* %2, %StringRef %4) + call void @dtor.261(%String* %"$tmpC") ret void } ; Function Attrs: inlinehint nounwind -define internal void @remove.404(%"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]" - store %"ContiguousMemoryRange[Token]" %range, %"ContiguousMemoryRange[Token]"* %range.addr - %rBegin = alloca %"RawPtr[Token]" - %rEnd = alloca %"RawPtr[Token]" - %"$rangeVar" = alloca %"ContiguousMemoryRange[Token]" - %el = alloca %Token* - %"$tmpC" = alloca %"RawPtr[Token]" - %"$tmpC5" = alloca %"RawPtr[Token]" +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 %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %range.addr - call void @frontPtr.405(%"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) - br label %while_block + %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 +} -while_block: ; preds = %while_step, %code - %3 = load %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %"$rangeVar" - %4 = call i1 @isEmpty.408(%"ContiguousMemoryRange[Token]" %3) - %5 = xor i1 true, %4 - br i1 %5, label %while_body, label %while_end +; 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 -while_body: ; preds = %while_block - %6 = load %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %"$rangeVar" - %7 = call %Token* @front.409(%"ContiguousMemoryRange[Token]" %6) - store %Token* %7, %Token** %el - %8 = load %Token*, %Token** %el - call void @dtor.228(%Token* %8) - br label %while_step +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 +} -while_step: ; preds = %while_body - call void @popFront.410(%"ContiguousMemoryRange[Token]"* %"$rangeVar") - br label %while_block +; 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 +} -while_end: ; preds = %while_block - br label %while_block1 +; 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 -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) - %12 = xor i1 true, %11 - br i1 %12, label %while_body2, label %while_end4 +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 -while_body2: ; preds = %while_block1 - %13 = load %"RawPtr[Token]", %"RawPtr[Token]"* %rBegin - %14 = call %Token* @value.209(%"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) - %17 = load %"RawPtr[Token]", %"RawPtr[Token]"* %rEnd - %18 = call %Token* @value.209(%"RawPtr[Token]" %17) - call void @dtor.228(%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") - %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") - br label %while_step3 +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 -while_step3: ; preds = %while_body2 - br label %while_block1 +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 -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) +if_end: ; preds = %if_then, %if_block ret void } ; Function Attrs: inlinehint nounwind -define internal void @frontPtr.405(%"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]" - store %"ContiguousMemoryRange[Token]" %this, %"ContiguousMemoryRange[Token]"* %this.addr +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 %"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) - ret void + %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 void @backPtr.406(%"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]" - store %"ContiguousMemoryRange[Token]" %this, %"ContiguousMemoryRange[Token]"* %this.addr +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 %"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) - ret void + %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: alwaysinline nounwind -define internal void @ctor.407(%"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 +; 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 %"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 @ctor.207(%"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) + %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: inlinehint nounwind -define internal i1 @isEmpty.408(%"ContiguousMemoryRange[Token]" %this) #4 { - %this.addr = alloca %"ContiguousMemoryRange[Token]" - store %"ContiguousMemoryRange[Token]" %this, %"ContiguousMemoryRange[Token]"* %this.addr - %tmp.v = alloca i64 +; 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 = getelementptr inbounds %"ContiguousMemoryRange[Token]", %"ContiguousMemoryRange[Token]"* %this.addr, i32 0, i32 1 - %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 - %7 = icmp sle i64 %5, %6 - ret i1 %7 + %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: inlinehint nounwind -define internal %Token* @front.409(%"ContiguousMemoryRange[Token]" %this) #4 { - %this.addr = alloca %"ContiguousMemoryRange[Token]" - store %"ContiguousMemoryRange[Token]" %this, %"ContiguousMemoryRange[Token]"* %this.addr +; 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 = 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) - ret %Token* %3 + %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: alwaysinline nounwind -define internal void @popFront.410(%"ContiguousMemoryRange[Token]"* %this) #3 { - %this.addr = alloca %"ContiguousMemoryRange[Token]"* - store %"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"** %this.addr - %"$tmpC" = alloca %"RawPtr[Token]" +; 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 = 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]"** %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") - ret void + %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 i8* @back.411(%"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 +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 %"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) - %5 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC" - %6 = call i8* @value(%"RawPtr[Char]" %5) - ret i8* %6 + %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 i32* @back.412(%"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 +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 %"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) - %5 = load %"RawPtr[UInt]", %"RawPtr[UInt]"* %"$tmpC" - %6 = call i32* @value.222(%"RawPtr[UInt]" %5) - ret i32* %6 + %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 @advance.413(%"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 +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 - %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 = load i64, i64* %n.addr - store i64 4, i64* %tmp.v1 - %5 = load i64, i64* %tmp.v1 - %6 = mul i64 %4, %5 - store i64 %6, i64* %tmp.v - %7 = load i64, i64* %tmp.v - %8 = call i8* @ptrAdd(i8* %3, i64 %7) - call void @ctor.219(%"RawPtr[UInt]"* %1, i8* %8) + 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 void @popBack.414(%"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 +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 %"Vector[UInt]"*, %"Vector[UInt]"** %this.addr - %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 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") - %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) - %11 = load i32, i32* %10 + %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 @toString.415(%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 - store %StringRef %a1, %StringRef* %a1.addr - %a2.addr = alloca i32 - store i32 %a2, i32* %a2.addr - %a3.addr = alloca %StringRef - store %StringRef %a3, %StringRef* %a3.addr - %a4.addr = alloca i32 - store i32 %a4, i32* %a4.addr - %s = alloca %StringOutputStream +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 - call void @ctor.295(%StringOutputStream* %s) - %1 = call %StringOutputStream* @"<<"(%StringOutputStream* %s, %StringRef* %a1.addr) - %2 = call %StringOutputStream* @"<<.416"(%StringOutputStream* %1, i32* %a2.addr) - %3 = call %StringOutputStream* @"<<"(%StringOutputStream* %2, %StringRef* %a3.addr) - %4 = call %StringOutputStream* @"<<.416"(%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) + %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 +} -dumy_block: ; No predecessors! - call void @dtor.297(%StringOutputStream* %s) +; 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 %StringOutputStream* @"<<.416"(%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 +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 %StringOutputStream*, %StringOutputStream** %s.addr - %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) - %6 = load %StringOutputStream*, %StringOutputStream** %s.addr - ret %StringOutputStream* %6 +code: ; preds = %0 + %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: alwaysinline nounwind -define internal void @"<<<.417"(%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 +; Function Attrs: inlinehint nounwind +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 %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 @append(%String* %2, %StringRef %4) - call void @dtor.229(%String* %"$tmpC1") + %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 @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 @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 = 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 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 @popBack.418(%"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 +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 %"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.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") - %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 + %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 + +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 + +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 + +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 void @ctor.419(%"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 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 %"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) - %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) - %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 - ret void + %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 void @ctor.420(%"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 - %"$tmpC" = alloca %Token +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 %"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) - %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) - %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) - %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) - 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) - br i1 %12, label %if_then, label %if_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_++.423"(%Token* %"$tmpC", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %16) - call void @"+=.311"(%"Vector[Token]"* %14, %Token* %"$tmpC") - call void @dtor.228(%Token* %"$tmpC") - br label %if_end - -if_end: ; preds = %if_then, %if_block - 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 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 @"pre_!!.421"(%"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 i1 @isEof(%File* %this) #4 { + %this.addr = alloca %File* + store %File* %this, %File** %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.422(%"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %1) - %3 = xor i1 true, %2 - ret i1 %3 + %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 i1 @isEmpty.422(%"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 +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]"** %this.addr - %2 = getelementptr inbounds %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %1, i32 0, i32 5 + %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 = icmp eq i32 %3, 0 - br i1 %4, label %cond.true, label %cond.false - -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) - 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 + 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 } -; Function Attrs: inlinehint nounwind -define internal void @"post_++.423"(%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 +; 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 - %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) - %2 = load %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"*, %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"** %r.addr - call void @popFront.395(%"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) ret void +} -dumy_block: ; No predecessors! - call void @dtor.228(%Token* %res) +; 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: 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: 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.291(%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.424(%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.424(%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.291(%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 @@ -18227,7 +21528,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.258(%ParserContext* %4) %5 = load %ParserContext*, %ParserContext** %obj.addr %6 = bitcast %ParserContext* %5 to i8* call void @free(i8* %6) @@ -18249,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_++.313"(%Token* %"$tmpC", %"SparrowScanner[_CharSource, ExternalErrorReporter]"* %3) - call void @"=.254"(%Token* %1, %Token* %"$tmpC") - call void @dtor.228(%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 } @@ -18260,157 +21561,189 @@ 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 - %decls = alloca %Node - %tmp.v = alloca %TokenType %"$tmpForRef" = alloca %Node + %decls = alloca %Node + %tmp.this = alloca %TokenType %"$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.436(%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 - %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.434(%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_*.425"(%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.177(%Location* %1, %Location* %4) - call void @dtor.228(%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.228(%Token* %"$tmpC") + call void @dtor.260(%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_*.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.426(%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.426(%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.394(%"Vector[Token]"* %3) - call void @ctor.190(%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 - %tmp.v = alloca %TokenType +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 + %tmp.this1 = alloca %TokenType %qid = alloca %Node - %tmp.v1 = alloca %TokenType + %"$tmpForRef" = alloca %Node + %tmp.this2 = alloca %TokenType + %tmp.this3 = alloca %Node br label %code code: ; preds = %0 + br label %while_block + +while_block: ; preds = %while_step, %code + %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]]"* %1, %TokenType %2) + br i1 %3, label %while_body, label %while_end + +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 = %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 - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) - br i1 %3, label %if_then, label %if_end +if_block: ; preds = %while_end + %4 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + 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 - %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 - %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) - ret void + %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") + %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 - %9 = load %Node*, %Node** %_result.addr - call void @ctor.436(%Node* %9) - ret void + call void @ctor.556(%Node* %tmp.this3) + %13 = load %Node, %Node* %tmp.this3 + ret %Node %13 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 @@ -18421,26 +21754,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_*.425"(%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 @"==.279"(%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_++.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") + %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.228(%Token* %"$tmpC") + call void @dtor.260(%Token* %"$tmpC") ret i1 false dumy_block: ; No predecessors! @@ -18448,68 +21781,68 @@ 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_++.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.426(%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) + %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.190(%Token* %3, %Token* %res) - call void @dtor.228(%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.228(%Token* %res) + call void @dtor.260(%Token* %res) ret void } ; Function Attrs: inlinehint nounwind -define internal void @popFront.428(%"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 +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 - store i64 0, i64* %tmp.v - %3 = load i64, i64* %tmp.v - call void @remove.398(%"Vector[Token]"* %2, i64 %3) + %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.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.392(%"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_++.423"(%Token* %"$tmpC", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %10) - call void @"+=.311"(%"Vector[Token]"* %8, %Token* %"$tmpC") - call void @dtor.228(%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_!!.421"(%"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 @@ -18521,106 +21854,102 @@ 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 - %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 - %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" - %9 = call %Node @comp_parser_mkIdentifier(%Location* %loc, %StringRef %8) - store %Node %9, %Node* %"$tmpForRef" - call void @ctor.434(%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) + %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]]"* %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.319(%TokenType* %tmp.v1, i32 33) - %14 = load %TokenType, %TokenType* %tmp.v1 - %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 -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) - 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* %"$tmpC5", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %18) - call void @span(%Location* %"$tmpC4", %Location* %loc, %Location* %"$tmpC5") - %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) - store %Node %24, %Node* %"$tmpForRef3" - call void @"=.435"(%Node* %base, %Node* %"$tmpForRef3") - br i1 %17, label %cond_destruct_alt1, label %cond_destruct_alt2 + %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") + %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_alt17, label %cond_destruct_alt28 + 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.319(%TokenType* %tmp.v2, i32 37) - %26 = load %TokenType, %TokenType* %tmp.v2 - %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 @@ -18635,40 +21964,41 @@ 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_alt28: ; preds = %if_end - br label %cond_destruct_end9 - -cond_destruct_end9: ; preds = %cond_destruct_alt28, %cond_destruct_alt17 - %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 - %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") - %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") +cond_destruct_alt15: ; preds = %if_end + br label %cond_destruct_end7 + +cond_destruct_alt26: ; preds = %if_end + br label %cond_destruct_end7 + +cond_destruct_end7: ; preds = %cond_destruct_alt26, %cond_destruct_alt15 + %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") + %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_block15: ; No predecessors! - call void @dtor.229(%String* %lastId) - ret void +dumy_block12: ; No predecessors! + 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 @@ -18681,9 +22011,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 @@ -18696,8 +22026,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 @@ -18705,27 +22035,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_*.425"(%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.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.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! @@ -18733,63 +22063,63 @@ dumy_block4: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal void @reportError.429(%"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 %"$tmpC1" = alloca %Token - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %"$tmpC2" = 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 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) - %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.228(%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_*.425"(%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.319(%TokenType* %tmp.v, i32 0) - %11 = call i1 @"==.279"(%TokenType* %10, %TokenType* %tmp.v) + 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_++.427"(%Token* %"$tmpC2", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %16) - call void @"=.254"(%Token* %14, %Token* %"$tmpC2") - call void @dtor.228(%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.228(%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.430(%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 @@ -18804,24 +22134,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.452(%StringOutputStream* %s) %1 = call %StringOutputStream* @"<<"(%StringOutputStream* %s, %StringRef* %a1.addr) - %2 = call %StringOutputStream* @"<<.431"(%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* @"<<.431"(%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.192(%String* %5, %String* %6) - call void @dtor.297(%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.297(%StringOutputStream* %s) + call void @dtor.454(%StringOutputStream* %s) ret void } ; Function Attrs: inlinehint nounwind -define internal %StringOutputStream* @"<<.431"(%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* @@ -18850,13 +22180,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* @"<<.551"(%StringOutputStream* %1, %String* %"$tmpC") + call void @dtor.261(%String* %"$tmpC") ret void } ; Function Attrs: inlinehint nounwind -define internal %StringOutputStream* @"<<.432"(%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* @@ -18866,25 +22196,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 @">>.552"(%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 @">>.552"(%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,163 +22225,172 @@ 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 - %"$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.319(%TokenType* %tmp.v, i32 0) - %1 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v) + 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.370(%String* %2, %StringRef* %"$tmpForRef") + call void @ctor.471(%String* %2, %StringRef* %"$tmpForRef") ret void if_else: ; preds = %if_block @@ -19063,19 +22403,19 @@ 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.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.370(%String* %7, %StringRef* %"$tmpForRef6") + call void @ctor.471(%String* %7, %StringRef* %"$tmpForRef6") ret void if_else3: ; preds = %if_block1 @@ -19088,19 +22428,19 @@ 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.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.370(%String* %12, %StringRef* %"$tmpForRef14") + call void @ctor.471(%String* %12, %StringRef* %"$tmpForRef14") ret void if_else11: ; preds = %if_block9 @@ -19113,19 +22453,19 @@ 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.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.370(%String* %17, %StringRef* %"$tmpForRef22") + call void @ctor.471(%String* %17, %StringRef* %"$tmpForRef22") ret void if_else19: ; preds = %if_block17 @@ -19138,19 +22478,19 @@ 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.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.370(%String* %22, %StringRef* %"$tmpForRef30") + call void @ctor.471(%String* %22, %StringRef* %"$tmpForRef30") ret void if_else27: ; preds = %if_block25 @@ -19163,19 +22503,19 @@ 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.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.370(%String* %27, %StringRef* %"$tmpForRef38") + call void @ctor.471(%String* %27, %StringRef* %"$tmpForRef38") ret void if_else35: ; preds = %if_block33 @@ -19188,19 +22528,19 @@ 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.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.370(%String* %32, %StringRef* %"$tmpForRef46") + call void @ctor.471(%String* %32, %StringRef* %"$tmpForRef46") ret void if_else43: ; preds = %if_block41 @@ -19213,19 +22553,19 @@ 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.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.370(%String* %37, %StringRef* %"$tmpForRef54") + call void @ctor.471(%String* %37, %StringRef* %"$tmpForRef54") ret void if_else51: ; preds = %if_block49 @@ -19238,19 +22578,19 @@ 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.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.370(%String* %42, %StringRef* %"$tmpForRef62") + call void @ctor.471(%String* %42, %StringRef* %"$tmpForRef62") ret void if_else59: ; preds = %if_block57 @@ -19263,19 +22603,19 @@ 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.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.370(%String* %47, %StringRef* %"$tmpForRef70") + call void @ctor.471(%String* %47, %StringRef* %"$tmpForRef70") ret void if_else67: ; preds = %if_block65 @@ -19288,19 +22628,19 @@ 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.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.370(%String* %52, %StringRef* %"$tmpForRef78") + call void @ctor.471(%String* %52, %StringRef* %"$tmpForRef78") ret void if_else75: ; preds = %if_block73 @@ -19313,19 +22653,19 @@ 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.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.370(%String* %57, %StringRef* %"$tmpForRef86") + call void @ctor.471(%String* %57, %StringRef* %"$tmpForRef86") ret void if_else83: ; preds = %if_block81 @@ -19338,19 +22678,19 @@ 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.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.370(%String* %62, %StringRef* %"$tmpForRef94") + call void @ctor.471(%String* %62, %StringRef* %"$tmpForRef94") ret void if_else91: ; preds = %if_block89 @@ -19363,19 +22703,19 @@ 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.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.370(%String* %67, %StringRef* %"$tmpForRef102") + call void @ctor.471(%String* %67, %StringRef* %"$tmpForRef102") ret void if_else99: ; preds = %if_block97 @@ -19388,19 +22728,19 @@ 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.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.370(%String* %72, %StringRef* %"$tmpForRef110") + call void @ctor.471(%String* %72, %StringRef* %"$tmpForRef110") ret void if_else107: ; preds = %if_block105 @@ -19413,19 +22753,19 @@ 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.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.370(%String* %77, %StringRef* %"$tmpForRef118") + call void @ctor.471(%String* %77, %StringRef* %"$tmpForRef118") ret void if_else115: ; preds = %if_block113 @@ -19438,19 +22778,19 @@ 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.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.370(%String* %82, %StringRef* %"$tmpForRef126") + call void @ctor.471(%String* %82, %StringRef* %"$tmpForRef126") ret void if_else123: ; preds = %if_block121 @@ -19463,19 +22803,19 @@ 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.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.370(%String* %87, %StringRef* %"$tmpForRef134") + call void @ctor.471(%String* %87, %StringRef* %"$tmpForRef134") ret void if_else131: ; preds = %if_block129 @@ -19488,19 +22828,19 @@ 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.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.370(%String* %92, %StringRef* %"$tmpForRef142") + call void @ctor.471(%String* %92, %StringRef* %"$tmpForRef142") ret void if_else139: ; preds = %if_block137 @@ -19513,19 +22853,19 @@ 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.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.370(%String* %97, %StringRef* %"$tmpForRef150") + call void @ctor.471(%String* %97, %StringRef* %"$tmpForRef150") ret void if_else147: ; preds = %if_block145 @@ -19538,19 +22878,19 @@ 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.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.370(%String* %102, %StringRef* %"$tmpForRef158") + call void @ctor.471(%String* %102, %StringRef* %"$tmpForRef158") ret void if_else155: ; preds = %if_block153 @@ -19563,19 +22903,19 @@ 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.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.370(%String* %107, %StringRef* %"$tmpForRef166") + call void @ctor.471(%String* %107, %StringRef* %"$tmpForRef166") ret void if_else163: ; preds = %if_block161 @@ -19588,19 +22928,19 @@ 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.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.370(%String* %112, %StringRef* %"$tmpForRef174") + call void @ctor.471(%String* %112, %StringRef* %"$tmpForRef174") ret void if_else171: ; preds = %if_block169 @@ -19613,19 +22953,19 @@ 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.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.370(%String* %117, %StringRef* %"$tmpForRef182") + call void @ctor.471(%String* %117, %StringRef* %"$tmpForRef182") ret void if_else179: ; preds = %if_block177 @@ -19638,19 +22978,19 @@ 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.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.370(%String* %122, %StringRef* %"$tmpForRef190") + call void @ctor.471(%String* %122, %StringRef* %"$tmpForRef190") ret void if_else187: ; preds = %if_block185 @@ -19663,19 +23003,19 @@ 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.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.370(%String* %127, %StringRef* %"$tmpForRef198") + call void @ctor.471(%String* %127, %StringRef* %"$tmpForRef198") ret void if_else195: ; preds = %if_block193 @@ -19688,19 +23028,19 @@ 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.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.370(%String* %132, %StringRef* %"$tmpForRef206") + call void @ctor.471(%String* %132, %StringRef* %"$tmpForRef206") ret void if_else203: ; preds = %if_block201 @@ -19713,19 +23053,19 @@ 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.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.370(%String* %137, %StringRef* %"$tmpForRef214") + call void @ctor.471(%String* %137, %StringRef* %"$tmpForRef214") ret void if_else211: ; preds = %if_block209 @@ -19738,19 +23078,19 @@ 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.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.370(%String* %142, %StringRef* %"$tmpForRef222") + call void @ctor.471(%String* %142, %StringRef* %"$tmpForRef222") ret void if_else219: ; preds = %if_block217 @@ -19763,19 +23103,19 @@ 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.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.370(%String* %147, %StringRef* %"$tmpForRef230") + call void @ctor.471(%String* %147, %StringRef* %"$tmpForRef230") ret void if_else227: ; preds = %if_block225 @@ -19788,19 +23128,19 @@ 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.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.370(%String* %152, %StringRef* %"$tmpForRef238") + call void @ctor.471(%String* %152, %StringRef* %"$tmpForRef238") ret void if_else235: ; preds = %if_block233 @@ -19813,19 +23153,19 @@ 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.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.370(%String* %157, %StringRef* %"$tmpForRef246") + call void @ctor.471(%String* %157, %StringRef* %"$tmpForRef246") ret void if_else243: ; preds = %if_block241 @@ -19838,19 +23178,19 @@ 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.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.370(%String* %162, %StringRef* %"$tmpForRef254") + call void @ctor.471(%String* %162, %StringRef* %"$tmpForRef254") ret void if_else251: ; preds = %if_block249 @@ -19863,19 +23203,19 @@ 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.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.370(%String* %167, %StringRef* %"$tmpForRef262") + call void @ctor.471(%String* %167, %StringRef* %"$tmpForRef262") ret void if_else259: ; preds = %if_block257 @@ -19888,19 +23228,19 @@ 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.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.370(%String* %172, %StringRef* %"$tmpForRef270") + call void @ctor.471(%String* %172, %StringRef* %"$tmpForRef270") ret void if_else267: ; preds = %if_block265 @@ -19913,19 +23253,19 @@ 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.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.370(%String* %177, %StringRef* %"$tmpForRef278") + call void @ctor.471(%String* %177, %StringRef* %"$tmpForRef278") ret void if_else275: ; preds = %if_block273 @@ -19938,19 +23278,19 @@ 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.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.370(%String* %182, %StringRef* %"$tmpForRef286") + call void @ctor.471(%String* %182, %StringRef* %"$tmpForRef286") ret void if_else283: ; preds = %if_block281 @@ -19963,19 +23303,19 @@ 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.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.370(%String* %187, %StringRef* %"$tmpForRef294") + call void @ctor.471(%String* %187, %StringRef* %"$tmpForRef294") ret void if_else291: ; preds = %if_block289 @@ -19988,19 +23328,19 @@ 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.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.370(%String* %192, %StringRef* %"$tmpForRef302") + call void @ctor.471(%String* %192, %StringRef* %"$tmpForRef302") ret void if_else299: ; preds = %if_block297 @@ -20013,19 +23353,19 @@ 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.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.370(%String* %197, %StringRef* %"$tmpForRef310") + call void @ctor.471(%String* %197, %StringRef* %"$tmpForRef310") ret void if_else307: ; preds = %if_block305 @@ -20038,19 +23378,19 @@ 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.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.370(%String* %202, %StringRef* %"$tmpForRef318") + call void @ctor.471(%String* %202, %StringRef* %"$tmpForRef318") ret void if_else315: ; preds = %if_block313 @@ -20063,19 +23403,19 @@ 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.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.370(%String* %207, %StringRef* %"$tmpForRef326") + call void @ctor.471(%String* %207, %StringRef* %"$tmpForRef326") ret void if_else323: ; preds = %if_block321 @@ -20088,19 +23428,19 @@ 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.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.370(%String* %212, %StringRef* %"$tmpForRef334") + call void @ctor.471(%String* %212, %StringRef* %"$tmpForRef334") ret void if_else331: ; preds = %if_block329 @@ -20113,19 +23453,19 @@ 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.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.370(%String* %217, %StringRef* %"$tmpForRef342") + call void @ctor.471(%String* %217, %StringRef* %"$tmpForRef342") ret void if_else339: ; preds = %if_block337 @@ -20138,74 +23478,175 @@ 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.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.370(%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.319(%TokenType* %tmp.v356, i32 45) - %226 = call i1 @"==.279"(%TokenType* %t.addr, %TokenType* %tmp.v356) - 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.370(%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.434(%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.65(%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 } -declare %Node @comp_parser_mkIdentifier(%Location*, %StringRef) +; 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 %"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 +} ; Function Attrs: alwaysinline nounwind -define internal void @"=.435"(%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* @@ -20217,11 +23658,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 @"=.67"(%UntypedPtr* %2, %UntypedPtr* %4) + call void @"=.288"(%UntypedPtr* %2, %UntypedPtr* %4) ret void } -declare %Node @comp_parser_mkStarExpr(%Location*, %Node, %StringRef) +; 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 %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 +} + +; 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 { @@ -20236,11 +23726,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.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.177(%Location* %3, %Location* %res) + call void @ctor.182(%Location* %3, %Location* %res) ret void } @@ -20257,31 +23747,54 @@ 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 @"=.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.177(%Location* %1, %Location* %4) + call void @ctor.182(%Location* %1, %Location* %4) ret void } -declare %Node @comp_parser_mkCompoundExpr(%Location*, %Node, %StringRef) +; 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 %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.436(%Node* %this) #3 { +define internal void @ctor.556(%Node* %this) #3 { %this.addr = alloca %Node* store %Node* %this, %Node** %this.addr br label %code @@ -20289,20 +23802,21 @@ 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.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 @@ -20312,30 +23826,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.473(%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 @"=.435"(%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 @@ -20344,53 +23862,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.436(%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 @@ -20398,211 +23917,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.473(%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.434(%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 @"=.435"(%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_*.425"(%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.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") + %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 @@ -20610,20 +24130,20 @@ 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 - %tmp.v = alloca %TokenType +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 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.319(%TokenType* %tmp.v, i32 31) - %2 = load %TokenType, %TokenType* %tmp.v - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %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]]"* %1, %TokenType %2) br i1 %3, label %while_body, label %while_end while_body: ; preds = %while_block @@ -20637,136 +24157,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.v = alloca %TokenType + %tmp.this = alloca %TokenType %e = alloca %Node - %"$tmpC" = alloca %Node %"$tmpForRef" = alloca %Node - %tmp.v1 = alloca %TokenType - %"$tmpC2" = alloca %Node + %"$tmpForRef1" = alloca %Node + %tmp.this2 = alloca %TokenType %"$tmpForRef3" = alloca %Node - %tmp.v4 = alloca %TokenType + %"$tmpForRef4" = alloca %Node + %tmp.this5 = alloca %TokenType br label %code code: ; preds = %0 - call void @ctor.436(%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.319(%TokenType* %tmp.v, i32 26) - %2 = load %TokenType, %TokenType* %tmp.v - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %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]]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_end if_then: ; preds = %if_block - call void @ctor.436(%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") - %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 @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.434(%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.319(%TokenType* %tmp.v1, i32 32) - %10 = load %TokenType, %TokenType* %tmp.v1 - %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 @"=.435"(%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") + %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.319(%TokenType* %tmp.v4, i32 27) - %17 = load %TokenType, %TokenType* %tmp.v4 - %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 - %"$tmpC6" = alloca %StringRef - %"$tmpForRef7" = alloca %Node - %"$tmpC8" = alloca %Location + %"$tmpForRef4" = alloca %Node + %"$tmpForRef5" = alloca %Node + %"$tmpC6" = alloca %Location + %"$tmpC7" = alloca %Location + %"$tmpForRef8" = alloca %Node %"$tmpC9" = alloca %Location - %"$tmpC10" = alloca %StringRef + %"$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.164(%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* @"=.256"(%String* %op, %String* %"$tmpC") - call void @dtor.229(%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.434(%Node* %7, %Node* %baseExpr) - call void @dtor.229(%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.376(%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 @@ -20778,37 +24300,41 @@ 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 - call void @asStringRef(%StringRef* %"$tmpC6", %String* %op) - %16 = load %StringRef, %StringRef* %"$tmpC6" - %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") + %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* %"$tmpC9", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %19) - call void @span(%Location* %"$tmpC8", %Location* %loc, %Location* %"$tmpC9") - %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") + %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_block11, %if_then2 @@ -20818,153 +24344,149 @@ dumy_block11: ; No predecessors! br label %if_end3 dumy_block12: ; No predecessors! - call void @dtor.229(%String* %op) - ret void + 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 %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) + %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.319(%TokenType* %tmp.v, i32 34) - %3 = load %TokenType, %TokenType* %tmp.v - %4 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, %TokenType %3) + %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]]"* %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") - %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 - %9 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %7, %TokenType %8) + %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]]"* %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") + %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.376(%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.229(%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") - call void @asStringRef(%StringRef* %"$tmpC9", %String* %op) - %18 = load %StringRef, %StringRef* %"$tmpC9" - %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) - ret void - -if_end6: ; preds = %dumy_block10, %dumy_block - call void @dtor.229(%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.261(%String* %op) + unreachable dumy_block: ; No predecessors! br label %if_end6 -dumy_block10: ; No predecessors! +dumy_block9: ; No predecessors! br label %if_end6 } ; 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 - %tmp.v = alloca %TokenType + %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.319(%TokenType* %tmp.v, i32 36) - %2 = load %TokenType, %TokenType* %tmp.v - %3 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %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]]"* %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.192(%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.v = alloca %TokenType - %tmp.v5 = alloca %TokenType + %tmp.this = alloca %TokenType + %tmp.this5 = alloca %TokenType 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.319(%TokenType* %tmp.v, i32 37) - %2 = load %TokenType, %TokenType* %tmp.v - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %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]]"* %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.192(%String* %4, %String* %7) + call void @ctor.189(%String* %4, %String* %7) ret void if_else: ; preds = %if_block @@ -20982,25 +24504,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.192(%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.164(%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.319(%TokenType* %tmp.v5, i32 35) - %15 = load %TokenType, %TokenType* %tmp.v5 - %16 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %14, %TokenType %15) + %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]]"* %14, %TokenType %15) br label %cond.end cond.false: ; preds = %if_block1 @@ -21045,96 +24567,93 @@ 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.v = alloca %TokenType - %tmp.v1 = alloca %TokenType - %"$tmpC" = alloca %Node - %tmp.v6 = alloca %TokenType + %tmp.this = alloca %TokenType + %tmp.this1 = alloca %TokenType %"$tmpForRef" = alloca %Node - %"$tmpC7" = alloca %Node - %tmp.v8 = alloca %TokenType - %tmp.v13 = alloca %TokenType + %tmp.this6 = alloca %TokenType + %"$tmpForRef7" = alloca %Node + %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 + %"$tmpC" = alloca %String %tmp.StringRef = alloca %StringRef - %"$tmpC93" = alloca %Token - %tmp.StringRef94 = alloca %StringRef - %tmp.v99 = alloca %TokenType + %"$tmpC90" = alloca %Token + %tmp.StringRef91 = alloca %StringRef + %tmp.this92 = alloca %Node + %tmp.this97 = alloca %TokenType %args = alloca %Node - %tmp.v100 = alloca %TokenType - %"$tmpForRef101" = alloca %Node + %"$tmpForRef98" = alloca %Node + %tmp.this99 = alloca %TokenType + %"$tmpForRef100" = alloca %Node + %"$tmpC101" = alloca %Location %"$tmpC102" = alloca %Location - %"$tmpC103" = alloca %Location - %tmp.v108 = alloca %TokenType - %tmp.v113 = alloca %TokenType - %tmp.v114 = alloca %TokenType - %"$tmpForRef115" = alloca %Node + %tmp.this107 = alloca %TokenType + %tmp.this112 = alloca %TokenType + %tmp.this113 = alloca %TokenType + %"$tmpForRef114" = alloca %Node + %"$tmpC115" = alloca %Location %"$tmpC116" = alloca %Location - %"$tmpC117" = alloca %Location - %tmp.StringRef118 = alloca %StringRef + %tmp.StringRef117 = alloca %StringRef %id = alloca %String - %"$tmpForRef119" = alloca %Node + %"$tmpForRef118" = alloca %Node + %"$tmpC119" = alloca %Location %"$tmpC120" = alloca %Location - %"$tmpC121" = alloca %Location - %"$tmpC122" = alloca %StringRef br label %code code: ; preds = %0 - call void @ctor.436(%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.319(%TokenType* %tmp.v, i32 28) - %3 = load %TokenType, %TokenType* %tmp.v - %4 = call i1 @nextIs(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, %TokenType %3) + %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]]"* %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") + %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 @@ -21144,37 +24663,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.319(%TokenType* %tmp.v1, i32 6) - %7 = load %TokenType, %TokenType* %tmp.v1 - %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.319(%TokenType* %tmp.v6, i32 28) - %10 = load %TokenType, %TokenType* %tmp.v6 - %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 @"=.435"(%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 - %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 @@ -21184,321 +24704,343 @@ 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.319(%TokenType* %tmp.v13, i32 36) - %19 = load %TokenType, %TokenType* %tmp.v13 - %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 - call void @asStringRef(%StringRef* %"$tmpC15", %String* %26) - %27 = load %StringRef, %StringRef* %"$tmpC15" - %28 = call %Node @comp_parser_mkIdentifier(%Location* %23, %StringRef %27) - store %Node %28, %Node* %"$tmpForRef14" - call void @"=.435"(%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 - 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 - %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 - %31 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %29, %TokenType %30) - br i1 %31, label %if_then17, label %if_else18 - -if_then17: ; preds = %if_block16 - %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 - -if_else18: ; preds = %if_block16 - br label %if_block22 - -if_end19: ; preds = %if_end25, %if_then17 - br label %if_end12 - -if_block22: ; preds = %if_else18 - %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 - %38 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %36, %TokenType %37) - br i1 %38, label %if_then23, label %if_else24 - -if_then23: ; preds = %if_block22 - %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 +if_block15: ; preds = %if_else11 + %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 + %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 @comp_parser_mkBoolLiteral(%Location* %41, i1 true) - store %Node %42, %Node* %"$tmpForRef27" - call void @"=.435"(%Node* %res, %Node* %"$tmpForRef27") - br label %if_end25 - -if_else24: ; preds = %if_block22 - br label %if_block28 - -if_end25: ; preds = %if_end31, %if_then23 - br label %if_end19 + %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_block28: ; preds = %if_else24 - %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 - %45 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %43, %TokenType %44) - br i1 %45, label %if_then29, label %if_else30 +if_else17: ; preds = %if_block15 + br label %if_block21 -if_then29: ; preds = %if_block28 - %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 +if_end18: ; preds = %if_end24, %if_then16 + br label %if_end12 -if_else30: ; preds = %if_block28 - br label %if_block34 +if_block21: ; preds = %if_else17 + %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_end31: ; preds = %if_end37, %if_then29 - br label %if_end25 +if_then22: ; preds = %if_block21 + %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 + br label %if_block27 -if_block34: ; preds = %if_else30 - %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 - %52 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %50, %TokenType %51) - br i1 %52, label %if_then35, label %if_else36 +if_end24: ; preds = %if_end30, %if_then22 + br label %if_end18 -if_then35: ; preds = %if_block34 - %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.v40 - %61 = load i32, i32* %tmp.v40 - %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 +if_block27: ; preds = %if_else23 + %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 + %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_else36: ; preds = %if_block34 - br label %if_block41 +if_else29: ; preds = %if_block27 + br label %if_block33 -if_end37: ; preds = %if_end44, %if_then35 - br label %if_end31 +if_end30: ; preds = %if_end36, %if_then28 + br label %if_end24 -if_block41: ; preds = %if_else36 - %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 - %65 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %63, %TokenType %64) - br i1 %65, label %if_then42, label %if_else43 +if_block33: ; preds = %if_else29 + %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_then42: ; preds = %if_block41 - %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 +if_then34: ; preds = %if_block33 + %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[_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 + %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.v47 - %74 = load i32, i32* %tmp.v47 - %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 - -if_else43: ; preds = %if_block41 - br label %if_block48 + 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_end44: ; preds = %if_end51, %if_then42 - br label %if_end37 +if_else35: ; preds = %if_block33 + br label %if_block40 -if_block48: ; preds = %if_else43 - %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 - %78 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %76, %TokenType %77) - br i1 %78, label %if_then49, label %if_else50 +if_end36: ; preds = %if_end43, %if_then34 + br label %if_end30 -if_then49: ; preds = %if_block48 - %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.v54 - %86 = load i64, i64* %tmp.v54 - %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 +if_block40: ; preds = %if_else35 + %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 + %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_else50: ; preds = %if_block48 - br label %if_block55 +if_else42: ; preds = %if_block40 + br label %if_block47 -if_end51: ; preds = %if_end58, %if_then49 - br label %if_end44 +if_end43: ; preds = %if_end50, %if_then41 + br label %if_end36 -if_block55: ; preds = %if_else50 - %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 - %90 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %88, %TokenType %89) - br i1 %90, label %if_then56, label %if_else57 - -if_then56: ; preds = %if_block55 - %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.v61 - %98 = load i64, i64* %tmp.v61 - %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 +if_block47: ; preds = %if_else42 + %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 + %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 + br label %if_block54 + +if_end50: ; preds = %if_end57, %if_then48 + br label %if_end43 -if_else57: ; preds = %if_block55 - br label %if_block62 +if_block54: ; preds = %if_else49 + %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 + %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 + 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 - %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 - %102 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %100, %TokenType %101) - br i1 %102, label %if_then63, label %if_else64 +if_block61: ; preds = %if_else56 + %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_then63: ; preds = %if_block62 - %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.v68 - %111 = load float, float* %tmp.v68 - %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 +if_then62: ; preds = %if_block61 + %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 + br label %if_block68 -if_else64: ; preds = %if_block62 - br label %if_block69 +if_end64: ; preds = %if_end71, %if_then62 + br label %if_end57 -if_end65: ; preds = %if_end72, %if_then63 - br label %if_end58 +if_block68: ; preds = %if_else63 + %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_block69: ; preds = %if_else64 - %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 - %115 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %113, %TokenType %114) - br i1 %115, label %if_then70, label %if_else71 - -if_then70: ; preds = %if_block69 - %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.v75 - %123 = load double, double* %tmp.v75 - %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 +if_then69: ; preds = %if_block68 + %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_else71: ; preds = %if_block69 - br label %if_block76 +if_else70: ; preds = %if_block68 + br label %if_block75 + +if_end71: ; preds = %if_end78, %if_then69 + br label %if_end64 + +if_block75: ; preds = %if_else70 + %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 + %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 + %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_end72: ; preds = %if_end79, %if_then70 - br label %if_end65 +if_else77: ; preds = %if_block75 + br label %if_block82 -if_block76: ; preds = %if_else71 - %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 - %127 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %125, %TokenType %126) - br i1 %127, label %if_then77, label %if_else78 +if_end78: ; preds = %if_end84, %if_then76 + br label %if_end71 -if_then77: ; preds = %if_block76 - %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) - %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 - -if_else78: ; preds = %if_block76 - br label %if_block83 - -if_end79: ; preds = %if_end85, %if_then77 - br label %if_end72 +if_block82: ; preds = %if_else77 + %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 + %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_block83: ; preds = %if_else78 - %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 - %140 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %138, %TokenType %139) - br i1 %140, label %if_then84, label %if_end85 - -if_then84: ; preds = %if_block83 - %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" - %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 - -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,214 +25049,220 @@ 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 - %149 = load %Node, %Node* %res - %150 = call i1 @isNull(%Node %149) - br i1 %150, label %if_then90, label %if_end91 +if_block87: ; preds = %cond_destruct_end + %176 = load %Node, %Node* %res + %177 = call i1 @isNull(%Node %176) + br i1 %177, label %if_then88, label %if_end89 -if_then90: ; preds = %if_block89 - %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_*.425"(%Token* %"$tmpC93", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]]"* %156) - %157 = getelementptr inbounds %Token, %Token* %"$tmpC93", 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 - 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") - %162 = load %Node*, %Node** %_result.addr - call void @ctor.436(%Node* %162) - ret void - -if_end91: ; preds = %dumy_block, %if_block89 +if_then88: ; preds = %if_block87 + %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 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 - %163 = load %Node*, %Node** %_result.addr - call void @ctor.434(%Node* %163, %Node* %res) - ret void - -if_block95: ; 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 - %166 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %164, %TokenType %165) - br i1 %166, label %if_then96, label %if_else97 - -if_then96: ; preds = %if_block95 - %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 - %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") - %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 - -if_else97: ; preds = %if_block95 - br label %if_block104 +while_end: ; preds = %if_else105, %while_block + %190 = load %Node, %Node* %res + ret %Node %190 -if_end98: ; preds = %if_end107, %if_then96 +if_block93: ; preds = %while_body + %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 + %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_block103 + +if_end96: ; preds = %if_end106, %if_then94 br label %while_step -if_block104: ; preds = %if_else97 - %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 - %177 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %175, %TokenType %176) - br i1 %177, label %if_then105, label %if_else106 +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_then105: ; preds = %if_block104 - br label %if_block109 +if_then104: ; preds = %if_block103 + br label %if_block108 -if_else106: ; preds = %if_block104 +if_else105: ; preds = %if_block103 br label %while_end -if_end107: ; preds = %dumy_block123, %if_end112 - br label %if_end98 - -if_block109: ; preds = %if_then105 - %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 - %180 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %178, %TokenType %179) - br i1 %180, label %if_then110, label %if_else111 - -if_then110: ; preds = %if_block109 - %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 - %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") - %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 - 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 +if_end106: ; preds = %dumy_block121, %if_end111 + br label %if_end96 + +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_else111: ; preds = %if_block109 - %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") - %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 +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_end112: ; preds = %if_else111, %if_then110 - br label %if_end107 +if_end111: ; preds = %if_else110, %if_then109 + br label %if_end106 -dumy_block123: ; No predecessors! - br label %if_end107 +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_*.425"(%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 @"==.279"(%TokenType* %3, %TokenType* %t.addr) - call void @dtor.228(%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.228(%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 - %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) + %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.557(%Token* %"$tmpC", %"RangeWithLookahead[SparrowLayoutDecoder[SparrowScanner]]"* %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 @"==.352"(%TokenType* %4, %TokenType* %t.addr) + call void @dtor.260(%Token* %"$tmpC") ret i1 %5 dumy_block: ; No predecessors! - call void @dtor.228(%Token* %"$tmpC") + call void @dtor.260(%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.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.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,22 +25271,22 @@ 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 - %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) + store i64 %2, i64* %tmp.this + %3 = load i64, i64* %tmp.this + %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_++.423"(%Token* %"$tmpC", %"SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter]"* %11) - call void @"+=.311"(%"Vector[Token]"* %9, %Token* %"$tmpC") - call void @dtor.228(%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 @@ -21748,9 +25296,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_!!.421"(%"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 @@ -21763,29 +25311,29 @@ 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 - %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) + store i64 %16, i64* %tmp.this1 + %17 = load i64, i64* %tmp.this1 + %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.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* @"().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.162(%Token* %29) + call void @ctor.143(%Token* %29) ret void if_end: ; preds = %dumy_block3, %dumy_block @@ -21799,7 +25347,7 @@ dumy_block3: ; No predecessors! } ; Function Attrs: inlinehint nounwind -define internal %Token* @"().438"(%"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 @@ -21812,256 +25360,303 @@ 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.215(%"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.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.v = alloca %TokenType - %tmp.v1 = alloca %TokenType + %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.v2 = alloca %TokenType - %"$tmpC" = alloca %Node - %"$tmpC3" = alloca %Node - %tmp.v4 = alloca %TokenType - %"$tmpForRef" = alloca %Node - %"$tmpC5" = alloca %Location - %"$tmpC6" = alloca %Location + %tmp.this4 = alloca %TokenType + %"$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.319(%TokenType* %tmp.v, i32 28) - %3 = load %TokenType, %TokenType* %tmp.v - %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 - %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.436(%Node* %body) - call void @ctor.436(%Node* %bodyExp) + %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]]"* %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]]"* %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.319(%TokenType* %tmp.v2, i32 35) - %12 = load %TokenType, %TokenType* %tmp.v2 - %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 @"=.435"(%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 @"=.435"(%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.319(%TokenType* %tmp.v4, i32 29) - %17 = load %TokenType, %TokenType* %tmp.v4 - %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.434(%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.v = alloca %TokenType - %tmp.v1 = alloca %TokenType - %tmp.v5 = alloca %TokenType - %"$tmpC" = alloca %Node - %tmp.v6 = alloca %TokenType + %tmp.this = alloca %TokenType + %tmp.this1 = alloca %TokenType + %tmp.this5 = alloca %TokenType + %"$tmpForRef" = alloca %Node + %tmp.this6 = alloca %TokenType br label %code code: ; preds = %0 - call void @ctor.436(%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.319(%TokenType* %tmp.v, i32 33) - %2 = load %TokenType, %TokenType* %tmp.v - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %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 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 - %6 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %4, %TokenType %5) + %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]]"* %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) - 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.319(%TokenType* %tmp.v5, i32 36) - %9 = load %TokenType, %TokenType* %tmp.v5 - %10 = call i1 @nextIs(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8, %TokenType %9) + %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]]"* %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") + %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.319(%TokenType* %tmp.v6, i32 25) - %13 = load %TokenType, %TokenType* %tmp.v6 - %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 - %"$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) - %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" - %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 @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.319(%TokenType* %tmp.v, i32 32) - %10 = load %TokenType, %TokenType* %tmp.v - %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* %"$tmpC1", %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %12) - %13 = call %String* @"=.256"(%String* %id, %String* %"$tmpC1") - call void @dtor.229(%String* %"$tmpC1") - %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" - %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") + %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.434(%Node* %21, %Node* %res) - call void @dtor.229(%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.229(%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 - %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.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.319(%TokenType* %tmp.v, i32 28) - %2 = load %TokenType, %TokenType* %tmp.v - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %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]]"* %1, %TokenType %2) br i1 %3, label %if_then, label %if_else if_then: ; preds = %if_block @@ -22071,80 +25666,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.434(%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.319(%TokenType* %tmp.v4, i32 29) - %6 = load %TokenType, %TokenType* %tmp.v4 - %7 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %5, %TokenType %6) + %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]]"* %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) - 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.319(%TokenType* %tmp.v5, i32 32) - %12 = load %TokenType, %TokenType* %tmp.v5 - %13 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11, %TokenType %12) + %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]]"* %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.319(%TokenType* %tmp.v6, i32 29) - %17 = load %TokenType, %TokenType* %tmp.v6 - %18 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %16, %TokenType %17) + %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]]"* %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 - %21 = call i1 @nextIs(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %19, %TokenType %20) + %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]]"* %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.436(%Node* %tmp.v12) - %29 = load %Node, %Node* %tmp.v12 - %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) + %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 @@ -22152,112 +25749,118 @@ 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* store %Node* %res, %Node** %res.addr %ids = alloca %"Vector[LocString]" - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %typeNode = alloca %Node + %"$tmpForRef" = alloca %Node %init = alloca %Node - %tmp.v1 = alloca %TokenType - %"$tmpC" = alloca %Node + %tmp.this1 = alloca %TokenType + %"$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 - %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) + %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 - %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 - %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 @"=.435"(%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.465(%"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.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) - %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.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.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.319(%TokenType* %tmp.v1, i32 32) - %9 = load %TokenType, %TokenType* %tmp.v1 - %10 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8, %TokenType %9) + %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]]"* %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") - %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.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.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 @@ -22265,19 +25868,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.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.229(%String* %id) - call void @dtor.465(%"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.439(%"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 @@ -22285,18 +25888,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.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.440(%"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.440(%"RawPtr[LocString]"* %6) + call void @ctor.561(%"RawPtr[LocString]"* %6) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.440(%"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 @@ -22309,7 +25912,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @"+=.441"(%"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* @@ -22319,20 +25922,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.563(%"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.563(%"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 +25947,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 @"==.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.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.565(%"Vector[LocString]"* %7) %9 = mul i64 %6, %8 store i64 %9, i64* %t br label %if_block1 @@ -22360,40 +25963,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.576(%"RawPtr[LocString]" %12) %14 = load %LocString*, %LocString** %value.addr - call void @ctor.453(%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.456(%"RawPtr[LocString]"* %"$tmpC", %"RawPtr[LocString]" %19) - call void @"=.450"(%"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 %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.568(%"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 @"==.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]"* @@ -22414,10 +26017,10 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal i64 @capacity.444(%"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.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -22427,38 +26030,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.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.445(%"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]" 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.567(%"RawPtr[LocString]" %1) %3 = load %"RawPtr[LocString]", %"RawPtr[LocString]"* %other.addr - %4 = call i8* @bytePtr.446(%"RawPtr[LocString]" %3) + %4 = call i8* @bytePtr.567(%"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.567(%"RawPtr[LocString]" %this) #4 { %this.addr = alloca %"RawPtr[LocString]" store %"RawPtr[LocString]" %this, %"RawPtr[LocString]"* %this.addr br label %code @@ -22471,18 +26074,18 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @reserve.447(%"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 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 +26093,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.565(%"Vector[LocString]"* %1) store i64 %2, i64* %curCapacity br label %if_block @@ -22511,14 +26114,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 +26131,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 +26144,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.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.449(%"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.451(%"RawPtr[LocString]"* %"$tmpC", %"RawPtr[LocString]" %33, i64 %34) - call void @"=.450"(%"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.451(%"RawPtr[LocString]"* %"$tmpC12", %"RawPtr[LocString]" %39, i64 %40) - call void @"=.450"(%"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.448(%"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.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -22591,14 +26194,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.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.449(%"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 @@ -22608,7 +26211,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.567(%"RawPtr[LocString]" %2) %4 = load i64, i64* %n.addr %5 = mul i64 %4, 48 %6 = call i8* @realloc(i8* %3, i64 %5) @@ -22620,7 +26223,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.450"(%"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]"* @@ -22638,7 +26241,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.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]" @@ -22650,16 +26253,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.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.452(%"RawPtr[LocString]"* %1, i8* %6) + call void @ctor.573(%"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.573(%"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 +26282,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.453(%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* @@ -22691,12 +26294,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.575(%"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.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]"* @@ -22708,17 +26311,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.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.192(%String* %6, %String* %8) + call void @ctor.189(%String* %6, %String* %8) ret void } ; Function Attrs: inlinehint nounwind -define internal %LocString* @value.455(%"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 @@ -22730,7 +26333,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.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]" @@ -22740,14 +26343,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.567(%"RawPtr[LocString]" %2) %4 = call i8* @ptrAdd(i8* %3, i64 48) - call void @ctor.452(%"RawPtr[LocString]"* %1, i8* %4) + call void @ctor.573(%"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.578(%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 +26360,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.575(%"Tuple[Location, String]"* %2, %"Tuple[Location, String]"* %fdata.addr) ret void } @@ -22793,12 +26396,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.579(%"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.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 @@ -22810,15 +26413,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.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.192(%String* %4, %String* %fv2.addr) + call void @ctor.189(%String* %4, %String* %fv2.addr) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.459(%LocString* %this) #3 { +define internal void @dtor.580(%LocString* %this) #3 { %this.addr = alloca %LocString* store %LocString* %this, %LocString** %this.addr br label %code @@ -22826,12 +26429,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.581(%"Tuple[Location, String]"* %2) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.460(%"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 @@ -22839,12 +26442,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.261(%String* %2) ret void } ; Function Attrs: inlinehint nounwind -define internal void @ctor.461(%"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]"* @@ -22861,61 +26464,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.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.440(%"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.440(%"RawPtr[LocString]"* %6) + call void @ctor.561(%"RawPtr[LocString]"* %6) %7 = load %"Vector[LocString]"*, %"Vector[LocString]"** %other.addr - %8 = call i64 @size.448(%"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.462(%"RawPtr[LocString]"* %"$tmpC", i64 %11) - call void @"=.450"(%"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.451(%"RawPtr[LocString]"* %"$tmpC1", %"RawPtr[LocString]" %16, i64 %17) - call void @"=.450"(%"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 @"=.450"(%"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.464(%"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.464(%"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 @"==.443"(%"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.455(%"RawPtr[LocString]" %30) + %31 = call %LocString* @value.576(%"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.576(%"RawPtr[LocString]" %32) + call void @ctor.574(%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.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.456(%"RawPtr[LocString]"* %"$tmpC3", %"RawPtr[LocString]" %35) - call void @"=.450"(%"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 @@ -22926,7 +26529,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.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 @@ -22939,12 +26542,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.584(%"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.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* @@ -22960,7 +26563,7 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.464(%"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]"* @@ -22978,7 +26581,7 @@ code: ; preds = %0 } ; Function Attrs: inlinehint nounwind -define internal void @dtor.465(%"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]" @@ -22988,38 +26591,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.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 @"==.443"(%"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.455(%"RawPtr[LocString]" %7) - call void @dtor.459(%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.456(%"RawPtr[LocString]"* %"$tmpC", %"RawPtr[LocString]" %9) - call void @"=.450"(%"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.466(%"RawPtr[LocString]" %12) + call void @freePtr.587(%"RawPtr[LocString]" %12) ret void } ; Function Attrs: inlinehint nounwind -define internal void @freePtr.466(%"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 @@ -23029,12 +26632,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.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.446(%"RawPtr[LocString]" %3) + %4 = call i8* @bytePtr.567(%"RawPtr[LocString]" %3) call void @free(i8* %4) br label %if_end @@ -23043,7 +26646,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.588(%"RawPtr[LocString]" %this) #4 { %this.addr = alloca %"RawPtr[LocString]" store %"RawPtr[LocString]" %this, %"RawPtr[LocString]"* %this.addr br label %code @@ -23057,7 +26660,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 @@ -23072,14 +26677,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 +26694,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.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.468(%"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 @@ -23104,77 +26707,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.470(%"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.471(%"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 - call void @asStringRef(%StringRef* %"$tmpC", %String* %14) - %15 = load %StringRef, %StringRef* %"$tmpC" - %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") - %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 @"=.435"(%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.472(%"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.470(%"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.471(%"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 - call void @asStringRef(%StringRef* %"$tmpC9", %String* %34) - %35 = load %StringRef, %StringRef* %"$tmpC9" - %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") - %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") + %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.472(%"ContiguousMemoryRange[LocString]"* %"$rangeVar2") + call void @popFront.594(%"ContiguousMemoryRange[LocString]"* %"$rangeVar2") br label %while_block3 while_end6: ; preds = %while_block3 @@ -23182,7 +26787,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.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]"* @@ -23197,12 +26802,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.590(%"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.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]" @@ -23214,18 +26819,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.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.464(%"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.470(%"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.v = alloca i64 + %tmp.this = alloca i64 br label %code code: ; preds = %0 @@ -23233,15 +26838,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.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 ret i1 %7 } ; Function Attrs: inlinehint nounwind -define internal %LocString* @front.471(%"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 @@ -23249,14 +26854,69 @@ 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.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.472(%"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]" @@ -23268,210 +26928,237 @@ 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.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 - %tmp.v = alloca %TokenType +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.319(%TokenType* %tmp.v, i32 30) - %2 = load %TokenType, %TokenType* %tmp.v - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %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]]"* %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.436(%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 - %tmp.v = alloca %TokenType +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.319(%TokenType* %tmp.v, i32 31) - %2 = load %TokenType, %TokenType* %tmp.v - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %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]]"* %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) - 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.436(%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_*.425"(%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.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") - 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.434(%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 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 - %"$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.319(%TokenType* %tmp.v, i32 24) - %3 = load %TokenType, %TokenType* %tmp.v - %4 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, %TokenType %3) + %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]]"* %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.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.319(%TokenType* %tmp.v2, i32 25) - %7 = load %TokenType, %TokenType* %tmp.v2 - %8 = call i1 @nextIs(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %6, %TokenType %7) + %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]]"* %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.319(%TokenType* %tmp.v6, i32 25) - %13 = load %TokenType, %TokenType* %tmp.v6 - %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.473(%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 @"=.435"(%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 @@ -23483,32 +27170,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 @"=.435"(%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.473(%Node %n) #4 { +define internal i1 @isSet.595(%Node %n) #4 { %n.addr = alloca %Node store %Node %n, %Node* %n.addr br label %code @@ -23521,10 +27210,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.474(%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 @@ -23537,44 +27269,549 @@ 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.452(%StringOutputStream* %s) %1 = call %StringOutputStream* @"<<"(%StringOutputStream* %s, %StringRef* %a1.addr) - %2 = call %StringOutputStream* @"<<.431"(%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.192(%String* %4, %String* %5) - call void @dtor.297(%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.297(%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 { @@ -23591,109 +27828,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.v = alloca %TokenType - %"$tmpC" = alloca %Node + %tmp.this = alloca %TokenType %"$tmpForRef1" = alloca %Node + %"$tmpForRef2" = alloca %Node br label %code code: ; preds = %0 - call void @ctor.436(%Node* %res) - call void @ctor.436(%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.434(%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 @"=.435"(%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.319(%TokenType* %tmp.v, i32 32) - %9 = load %TokenType, %TokenType* %tmp.v - %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 @"=.435"(%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 @"=.435"(%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.434(%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 @"=.435"(%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 @@ -23704,43 +27943,43 @@ 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 %"$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 - 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) + %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]]"*, %"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.191(%TokenType* %t, %TokenType* %3) - call void @dtor.228(%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.319(%TokenType* %tmp.v, i32 35) - %4 = call i1 @"==.279"(%TokenType* %t, %TokenType* %tmp.v) + 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 @@ -23748,8 +27987,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.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! @@ -23759,8 +27998,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.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 @@ -23771,8 +28010,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.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 @@ -23783,8 +28022,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.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 @@ -23795,8 +28034,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.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 @@ -23807,8 +28046,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.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 @@ -23819,8 +28058,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.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 @@ -23831,8 +28070,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.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 @@ -23843,8 +28082,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.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 @@ -23855,8 +28094,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.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 @@ -23867,8 +28106,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.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 @@ -23879,8 +28118,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.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 @@ -23891,8 +28130,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.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 @@ -23903,8 +28142,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.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 @@ -23915,8 +28154,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.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 @@ -24179,21 +28418,93 @@ 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.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 @@ -24206,62 +28517,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.319(%TokenType* %tmp.v, i32 36) - %2 = load %TokenType, %TokenType* %tmp.v - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %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]]"* %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.192(%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_*.425"(%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.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.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.319(%TokenType* %tmp.v5, i32 37) - %20 = load %TokenType, %TokenType* %tmp.v5 - %21 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %19, %TokenType %20) + %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]]"* %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.192(%String* %22, %String* %25) + call void @ctor.189(%String* %22, %String* %25) ret void if_else3: ; preds = %if_block1 @@ -24281,21 +28592,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.370(%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.319(%TokenType* %tmp.v10, i32 35) - %32 = load %TokenType, %TokenType* %tmp.v10 - %33 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %31, %TokenType %32) + %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]]"* %31, %TokenType %32) br label %cond.end cond.false: ; preds = %if_block7 @@ -24327,19 +28638,68 @@ 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.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 @@ -24348,18 +28708,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.319(%TokenType* %tmp.v, i32 36) - %2 = load %TokenType, %TokenType* %tmp.v - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %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]]"* %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.192(%String* %4, %String* %7) + call void @ctor.189(%String* %4, %String* %7) ret void if_else: ; preds = %if_block @@ -24372,18 +28732,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.319(%TokenType* %tmp.v5, i32 37) - %9 = load %TokenType, %TokenType* %tmp.v5 - %10 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8, %TokenType %9) + %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]]"* %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.192(%String* %11, %String* %14) + call void @ctor.189(%String* %11, %String* %14) ret void if_else3: ; preds = %if_block1 @@ -24403,26 +28763,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.370(%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.164(%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.319(%TokenType* %tmp.v11, i32 35) - %22 = load %TokenType, %TokenType* %tmp.v11 - %23 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %21, %TokenType %22) + %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]]"* %21, %TokenType %22) br label %cond.end cond.false: ; preds = %if_block7 @@ -24466,40 +28826,119 @@ 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.v = alloca %TokenType - %"$tmpC" = alloca %Node - %tmp.v1 = alloca %TokenType + %tmp.this = alloca %TokenType + %"$tmpForRef" = alloca %Node + %tmp.this1 = alloca %TokenType 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.319(%TokenType* %tmp.v, i32 3) - %2 = load %TokenType, %TokenType* %tmp.v - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %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]]"* %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 @"=.435"(%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 - %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 @@ -24510,147 +28949,144 @@ 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.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) - %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 @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.319(%TokenType* %tmp.v, i32 32) - %6 = load %TokenType, %TokenType* %tmp.v - %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 @"=.435"(%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.434(%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 %StringRef + %"$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") - call void @asStringRef(%StringRef* %"$tmpC2", %String* %id) - %7 = load %StringRef, %StringRef* %"$tmpC2" - %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) - 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.229(%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.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.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.319(%TokenType* %tmp.v, i32 36) - %2 = load %TokenType, %TokenType* %tmp.v - %3 = call i1 @nextIs(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %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]]"* %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 - %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 + %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]]"* %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* @"=.256"(%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 - %13 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11, %TokenType %12) + %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]]"* %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.319(%TokenType* %tmp.v1, i32 35) - %15 = load %TokenType, %TokenType* %tmp.v1 - %16 = call i1 @next2Is(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %14, %TokenType %15) + %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]]"* %14, %TokenType %15) br label %cond.end cond.false: ; preds = %if_block @@ -24668,197 +29104,214 @@ 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.189(%String* %17, %String* %id) + call void @dtor.261(%String* %id) ret void dumy_block: ; No predecessors! - call void @dtor.229(%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 - %tmp.v = alloca %TokenType - %"$tmpForRef" = alloca %Node - %"$tmpC" = alloca %StringRef +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 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.319(%TokenType* %tmp.v, i32 39) - %2 = load %TokenType, %TokenType* %tmp.v - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %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]]"* %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 - call void @asStringRef(%StringRef* %"$tmpC", %String* %10) - %11 = load %StringRef, %StringRef* %"$tmpC" - %12 = call %Node @comp_parser_mkStringLiteral(%Location* %7, %StringRef %11) - store %Node %12, %Node* %"$tmpForRef" - call void @ctor.434(%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.v = alloca %TokenType - %"$tmpC" = alloca %Node - %tmp.v1 = alloca %TokenType + %tmp.this = alloca %TokenType + %"$tmpForRef" = alloca %Node + %tmp.this1 = alloca %TokenType br label %code code: ; preds = %0 - call void @ctor.436(%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.319(%TokenType* %tmp.v, i32 28) - %2 = load %TokenType, %TokenType* %tmp.v - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %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]]"* %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") - %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 - %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.434(%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 - %"$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) - %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" - %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 @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.319(%TokenType* %tmp.v, i32 32) - %10 = load %TokenType, %TokenType* %tmp.v - %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* %"$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") - %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" - %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") + %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.434(%Node* %21, %Node* %res) - call void @dtor.229(%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.229(%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.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 %"$tmpForRef" = alloca %Node - %"$tmpC6" = alloca %StringRef + %"$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.319(%TokenType* %tmp.v, i32 8) - %2 = load %TokenType, %TokenType* %tmp.v - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %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]]"* %1, %TokenType %2) %4 = xor i1 true, %3 br i1 %4, label %if_then, label %if_end @@ -24866,86 +29319,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.177(%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.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.376(%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 @"=.435"(%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 @"=.435"(%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.319(%TokenType* %tmp.v5, i32 31) - %16 = load %TokenType, %TokenType* %tmp.v5 - %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" - %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) + %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_block7: ; No predecessors! - call void @dtor.229(%String* %id) + 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.v = alloca %TokenType + %tmp.this = alloca %TokenType %loc = alloca %Location %id = alloca %String %formals = alloca %Node + %"$tmpForRef" = alloca %Node %ifClause = alloca %Node - %tmp.v1 = alloca %TokenType + %"$tmpForRef1" = alloca %Node + %tmp.this2 = alloca %TokenType %children = alloca %Node - %tmp.v2 = alloca %TokenType - %"$tmpForRef" = alloca %Node - %"$tmpC" = alloca %StringRef + %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.319(%TokenType* %tmp.v, i32 7) - %2 = load %TokenType, %TokenType* %tmp.v - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %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]]"* %1, %TokenType %2) %4 = xor i1 true, %3 br i1 %4, label %if_then, label %if_end @@ -24953,130 +29433,196 @@ 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.177(%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.319(%TokenType* %tmp.v1, i32 24) - %12 = load %TokenType, %TokenType* %tmp.v1 - %13 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11, %TokenType %12) - call void @ctor.436(%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 - %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" - %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 @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.229(%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 - %tmp.v = alloca %TokenType +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.319(%TokenType* %tmp.v, i32 15) - %2 = load %TokenType, %TokenType* %tmp.v - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %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]]"* %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.436(%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.v = alloca %TokenType + %tmp.this = alloca %TokenType %loc = alloca %Location %id = alloca %String %formals = alloca %Node - %tmp.v4 = alloca %TokenType + %"$tmpForRef" = alloca %Node + %tmp.this4 = alloca %TokenType %underlyingData = alloca %Node + %"$tmpForRef5" = alloca %Node %ifClause = alloca %Node - %tmp.v5 = alloca %TokenType - %"$tmpForRef" = alloca %Node - %"$tmpC" = alloca %StringRef - %tmp.v6 = alloca %Node - %ifClause7 = alloca %Node + %"$tmpForRef6" = alloca %Node + %tmp.this7 = alloca %TokenType + %"$tmpForRef8" = alloca %Node + %tmp.this9 = alloca %Node + %ifClause10 = alloca %Node + %"$tmpForRef11" = 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.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 - %"$tmpForRef34" = alloca %Node - %tmp.v42 = alloca %TokenType - %tmp.v43 = alloca %TokenType - %tmp.v48 = alloca %TokenType - %"$tmpForRef49" = alloca %Node - %"$tmpC50" = alloca %StringRef - %tmp.v51 = 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[_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 - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %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 @@ -25084,375 +29630,486 @@ 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.177(%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) + 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 - %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 - %12 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %10, %TokenType %11) - br i1 %12, label %if_then2, label %if_else + %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 - %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.319(%TokenType* %tmp.v5, i32 31) - %16 = load %TokenType, %TokenType* %tmp.v5 - %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" - %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 - %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") + %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 - %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) - br label %if_block8 + %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_end11, %if_then2 - call void @dtor.229(%String* %id) +if_end3: ; preds = %if_end15, %if_then2 + call void @dtor.261(%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 - %31 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %29, %TokenType %30) - br i1 %31, label %if_then9, label %if_else10 +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_then9: ; preds = %if_block8 - br label %if_end11 +if_then13: ; preds = %if_block12 + br label %if_end15 -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 - %34 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %32, %TokenType %33) +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_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 - call void @asStringRef(%StringRef* %"$tmpC50", %String* %id) - %39 = load %StringRef, %StringRef* %"$tmpC50" - %40 = load %Node, %Node* %formals - call void @ctor.436(%Node* %tmp.v51) - %41 = load %Node, %Node* %tmp.v51 - %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") +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_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 - %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_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_block15 + br label %while_block19 -while_step: ; preds = %cond_destruct_end47 +while_step: ; preds = %cond_destruct_end51 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.319(%TokenType* %tmp.v48, i32 25) - %50 = load %TokenType, %TokenType* %tmp.v48 - %51 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %49, %TokenType %50) - br label %if_end11 +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 - %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 + %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 [ %55, %cond.true ], [ false, %cond.false ] + %cond.res = phi i1 [ %63, %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.319(%TokenType* %tmp.v22, i32 32) - %57 = load %TokenType, %TokenType* %tmp.v22 - %58 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %56, %TokenType %57) - br i1 %58, label %cond.true19, label %cond.false20 +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_body16: ; preds = %cond.end21 - br label %while_step17 +while_body20: ; preds = %cond.end25 + br label %while_step21 -while_step17: ; preds = %while_body16 - br label %while_block15 +while_step21: ; preds = %while_body20 + br label %while_block19 -while_end18: ; preds = %cond.end21 - br i1 %58, label %cond_destruct_alt1, label %cond_destruct_alt2 +while_end22: ; preds = %cond.end25 + br i1 %66, label %cond_destruct_alt1, label %cond_destruct_alt2 -cond.true19: ; preds = %while_block15 - br label %cond.end21 +cond.true23: ; preds = %while_block19 + br label %cond.end25 -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 - %61 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %59, %TokenType %60) - br label %cond.end21 +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.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 +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_end18 +cond_destruct_alt1: ; preds = %while_end22 br label %cond_destruct_end -cond_destruct_alt2: ; preds = %while_end18 +cond_destruct_alt2: ; preds = %while_end22 br label %cond_destruct_end cond_destruct_end: ; preds = %cond_destruct_alt2, %cond_destruct_alt1 - br label %if_block25 + br label %if_block29 -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 - %64 = call i1 @nextIs(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %62, %TokenType %63) - br i1 %64, label %if_then26, label %if_end27 +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_then26: ; preds = %if_block25 +if_then30: ; preds = %if_block29 br label %while_end -if_end27: ; preds = %dumy_block29, %if_block25 - call void @ctor.436(%Node* %usingNode) - br label %if_block30 +if_end31: ; preds = %dumy_block33, %if_block29 + call void @ctor.556(%Node* %usingNode) + br label %if_block34 -dumy_block29: ; No predecessors! - br label %if_end27 +dumy_block33: ; No predecessors! + br label %if_end31 -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 @"=.435"(%Node* %children, %Node* %"$tmpForRef34") - br label %if_end33 +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_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 +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_end33: ; preds = %if_else32, %if_then31 - br label %while_block35 +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 -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 - %73 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %71, %TokenType %72) - br i1 %73, label %cond.true39, label %cond.false40 +if_end37: ; preds = %if_else36, %if_then35 + br label %while_block39 -while_body36: ; preds = %cond.end41 - br label %while_step37 +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_step37: ; preds = %while_body36 - br label %while_block35 +while_body40: ; preds = %cond.end45 + br label %while_step41 -while_end38: ; preds = %cond.end41 - br i1 %73, label %cond_destruct_alt145, label %cond_destruct_alt246 +while_step41: ; preds = %while_body40 + br label %while_block39 -cond.true39: ; preds = %while_block35 - br label %cond.end41 +while_end42: ; preds = %cond.end45 + br i1 %83, label %cond_destruct_alt149, label %cond_destruct_alt250 -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 - %76 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %74, %TokenType %75) - br label %cond.end41 +cond.true43: ; preds = %while_block39 + br label %cond.end45 -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 +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_destruct_alt145: ; preds = %while_end38 - br label %cond_destruct_end47 +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_alt246: ; preds = %while_end38 - br label %cond_destruct_end47 +cond_destruct_alt149: ; preds = %while_end42 + br label %cond_destruct_end51 -cond_destruct_end47: ; preds = %cond_destruct_alt246, %cond_destruct_alt145 +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_block52: ; No predecessors! - call void @dtor.229(%String* %id) +dumy_block55: ; No predecessors! + call void @dtor.261(%String* %id) unreachable } -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 %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.v = alloca %TokenType + %tmp.this = alloca %TokenType %typeNode = alloca %Node + %"$tmpForRef" = alloca %Node %init = alloca %Node - %tmp.v1 = alloca %TokenType - %"$tmpC" = alloca %Node + %tmp.this1 = alloca %TokenType + %"$tmpForRef2" = alloca %Node %"$rangeVar" = alloca %"ContiguousMemoryRange[LocString]" %id = alloca %LocString* %v = alloca %Node - %"$tmpForRef" = alloca %Node - %"$tmpC2" = alloca %StringRef %"$tmpForRef3" = alloca %Node + %"$tmpForRef4" = 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 - %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) + %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 - %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 - %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 @"=.435"(%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 - call void @all.468(%"ContiguousMemoryRange[LocString]"* %"$rangeVar", %"Vector[LocString]"* %ids) + call void @all.589(%"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) - %12 = xor i1 true, %11 - br i1 %12, label %while_body, label %while_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 - %13 = load %"ContiguousMemoryRange[LocString]", %"ContiguousMemoryRange[LocString]"* %"$rangeVar" - %14 = call %LocString* @front.471(%"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 - call void @asStringRef(%StringRef* %"$tmpC2", %String* %20) - %21 = load %StringRef, %StringRef* %"$tmpC2" - %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") - %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") + %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.472(%"ContiguousMemoryRange[LocString]"* %"$rangeVar") + call void @popFront.594(%"ContiguousMemoryRange[LocString]"* %"$rangeVar") br label %while_block while_end: ; preds = %while_block - call void @dtor.465(%"Vector[LocString]"* %ids) + call void @dtor.586(%"Vector[LocString]"* %ids) ret void } -declare %Node @comp_parser_mkField(%Location*, %StringRef, %Node, %Node) +; 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[_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 @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.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 - %ifClause = alloca %Node - %tmp.v3 = alloca %TokenType %"$tmpForRef" = alloca %Node - %"$tmpC" = alloca %StringRef - %"$tmpC4" = alloca %StringRef + %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[_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 - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %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 @@ -25460,86 +30117,151 @@ 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.177(%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 - %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 - %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 - %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" - %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 @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_block5: ; No predecessors! - call void @dtor.229(%String* %paramName) - call void @dtor.229(%String* %id) +dumy_block6: ; No predecessors! + call void @dtor.261(%String* %paramName) + call void @dtor.261(%String* %id) unreachable } -declare %Node @comp_parser_mkConcept(%Location*, %StringRef, %StringRef, %Node, %Node) - ; 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 %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.v = alloca %TokenType + %tmp.this = alloca %TokenType %ids = alloca %"Vector[LocString]" %typeNode = alloca %Node %init = alloca %Node - %tmp.v4 = alloca %TokenType - %"$tmpC" = alloca %Node - %tmp.v8 = alloca %TokenType - %"$tmpC9" = alloca %Node - %tmp.v10 = alloca %TokenType - %"$tmpC11" = alloca %Node - %tmp.v12 = alloca %TokenType + %tmp.this4 = alloca %TokenType + %"$tmpForRef" = alloca %Node + %tmp.this8 = alloca %TokenType + %"$tmpForRef9" = alloca %Node + %tmp.this10 = alloca %TokenType + %"$tmpForRef11" = alloca %Node + %tmp.this12 = alloca %TokenType 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.319(%TokenType* %tmp.v, i32 9) - %2 = load %TokenType, %TokenType* %tmp.v - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %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]]"* %1, %TokenType %2) %4 = xor i1 true, %3 br i1 %4, label %if_then, label %if_end @@ -25547,103 +30269,109 @@ 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.436(%Node* %typeNode) - call void @ctor.436(%Node* %init) + %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 - %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 - %8 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %6, %TokenType %7) + %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 - %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") + %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 - %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 - %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") + %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_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 - %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) + %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_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 - %22 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %20, %TokenType %21) - br i1 %22, label %if_then6, label %if_end7 + %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_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") + %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_end7: ; preds = %if_then6, %if_block5 br label %if_end3 dumy_block13: ; No predecessors! - call void @dtor.465(%"Vector[LocString]"* %ids) + call void @dtor.586(%"Vector[LocString]"* %ids) unreachable } ; 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 @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.v = alloca %TokenType + %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.v4 = alloca %TokenType - %"$tmpC" = alloca %Node - %"$tmpC5" = alloca %Node - %tmp.v6 = alloca %TokenType - %"$tmpC7" = alloca %Node - %"$tmpC8" = alloca %Node - %"$tmpForRef" = alloca %Node - %"$tmpC9" = alloca %StringRef + %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 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.319(%TokenType* %tmp.v, i32 6) - %2 = load %TokenType, %TokenType* %tmp.v - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %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 @@ -25651,88 +30379,97 @@ 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.177(%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) - br label %if_block1 + 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 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.319(%TokenType* %tmp.v4, i32 35) - %12 = load %TokenType, %TokenType* %tmp.v4 - %13 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11, %TokenType %12) - br i1 %13, label %if_then2, label %if_else +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_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") - %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") - %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 - %18 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %16, %TokenType %17) - br label %if_end3 +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 -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") - %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") - br label %if_end3 +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_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 - call void @asStringRef(%StringRef* %"$tmpC9", %String* %id) - %25 = load %StringRef, %StringRef* %"$tmpC9" - %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 @"=.435"(%Node* %24, %Node* %"$tmpForRef") - call void @dtor.229(%String* %id) +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 -dumy_block10: ; No predecessors! - call void @dtor.229(%String* %id) +dumy_block12: ; No predecessors! + call void @dtor.261(%String* %id) unreachable } ; Function Attrs: inlinehint nounwind -define internal void @parseFunNameString(%String* sret %_result, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %this) #4 { +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[_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 + %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.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 @@ -25741,21 +30478,21 @@ 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.319(%TokenType* %tmp.v, i32 33) - %2 = load %TokenType, %TokenType* %tmp.v - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %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 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 + 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.370(%String* %4, %StringRef* %"$tmpForRef") + call void @ctor.471(%String* %4, %StringRef* %"$tmpForRef") ret void if_end: ; preds = %dumy_block, %if_block @@ -25765,348 +30502,555 @@ 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.319(%TokenType* %tmp.v4, i32 28) - %9 = load %TokenType, %TokenType* %tmp.v4 - %10 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8, %TokenType %9) + %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 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 - %13 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11, %TokenType %12) + %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.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 + 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.370(%String* %14, %StringRef* %"$tmpForRef6") + call void @ctor.471(%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) + %19 = load %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"*, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"** %this.addr + call void @parseIdOrOper(%String* %18, %"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %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 +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 code: ; preds = %0 - %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 %Node*, %Node** %res.addr - %3 = call i1 @parseExprOpt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %Node* %2, i1 true) + %3 = call i1 @parseExprOpt(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %1, %Node* %2, i1 true) ret i1 %3 } ; 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 @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 %topLevel.addr = alloca i1 store i1 %topLevel, i1* %topLevel.addr %loc = alloca %Location - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %expr = alloca %Node + %"$tmpForRef" = alloca %Node %thenClause = alloca %Node + %"$tmpForRef1" = alloca %Node %elseClause = alloca %Node - %tmp.v4 = alloca %TokenType - %"$tmpC" = alloca %Node - %"$tmpForRef" = 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 @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.319(%TokenType* %tmp.v, i32 15) - %3 = load %TokenType, %TokenType* %tmp.v - %4 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, %TokenType %3) + %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 - %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.436(%Node* %elseClause) - br label %if_block1 + %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 = %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.319(%TokenType* %tmp.v4, i32 23) - %9 = load %TokenType, %TokenType* %tmp.v4 - %10 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %8, %TokenType %9) - br i1 %10, label %if_then2, label %if_end3 +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 -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") - br label %if_end3 +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 -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 @"=.435"(%Node* %16, %Node* %"$tmpForRef") +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 dumy_block: ; No predecessors! br label %if_end } -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 +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 %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 - %"$tmpC" = alloca %Node - %tmp.v5 = alloca %TokenType + %tmp.this4 = alloca %TokenType + %"$tmpForRef" = alloca %Node + %tmp.this5 = alloca %TokenType %range = alloca %Node + %"$tmpForRef6" = alloca %Node %action = alloca %Node - %"$tmpForRef" = alloca %Node - %"$tmpC6" = alloca %StringRef + %"$tmpForRef7" = alloca %Node + %"$tmpForRef8" = 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) + %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.319(%TokenType* %tmp.v, i32 14) - %3 = load %TokenType, %TokenType* %tmp.v - %4 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, %TokenType %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 - %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) + %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 ret i1 false 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 - %8 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %6, %TokenType %7) + %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[_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") + %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 - %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 - %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 - call void @asStringRef(%StringRef* %"$tmpC6", %String* %id) - %20 = load %StringRef, %StringRef* %"$tmpC6" - %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) + %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 = 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.229(%String* %id) + call void @dtor.261(%String* %id) br label %if_end } -declare %Node @comp_parser_mkForStmt(%Location*, %StringRef, %Node, %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 @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 +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.v = alloca %TokenType + %tmp.this = alloca %TokenType %expr = alloca %Node + %"$tmpForRef" = alloca %Node %stepAction = alloca %Node - %tmp.v4 = alloca %TokenType + %tmp.this4 = alloca %TokenType %"$tmpC" = alloca %String %tmp.StringRef = alloca %StringRef %"$tmpC8" = alloca %Token %tmp.StringRef9 = alloca %StringRef %body = alloca %Node - %"$tmpForRef" = alloca %Node + %"$tmpForRef10" = alloca %Node + %"$tmpForRef11" = 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) + %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.319(%TokenType* %tmp.v, i32 19) - %3 = load %TokenType, %TokenType* %tmp.v - %4 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %2, %TokenType %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 - %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) + %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 if_end: ; preds = %dumy_block, %if_block ret i1 false 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 - %8 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %6, %TokenType %7) - br i1 %8, label %if_then2, label %if_end3 + %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 br label %if_block5 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 @"=.435"(%Node* %14, %Node* %"$tmpForRef") + %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 - %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 + %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 = %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_*.425"(%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.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") + %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, %cond.end br label %if_end3 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 + %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 [ %36, %cond.true ], [ false, %cond.false ] + %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 } -declare %Node @comp_parser_mkWhileStmt(%Location*, %Node, %Node, %Node) +; 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 @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 +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.v = alloca %TokenType + %tmp.this = alloca %TokenType %loc = alloca %Location - %tmp.v1 = alloca %TokenType + %tmp.this1 = alloca %TokenType %"$tmpForRef" = alloca %Node br label %code @@ -26114,45 +31058,64 @@ 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.319(%TokenType* %tmp.v, i32 10) - %2 = load %TokenType, %TokenType* %tmp.v - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %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]]"* %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 + %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.177(%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 - %9 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %7, %TokenType %8) + 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 = call %Node @comp_parser_mkBreakStmt(%Location* %loc) - store %Node %11, %Node* %"$tmpForRef" - call void @"=.435"(%Node* %10, %Node* %"$tmpForRef") + %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 ret i1 false -dumy_block: ; No predecessors! - br label %if_end +dumy_block: ; No predecessors! + br label %if_end +} + +; 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 + +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 } -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 +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.v = alloca %TokenType + %tmp.this = alloca %TokenType %loc = alloca %Location - %tmp.v1 = alloca %TokenType + %tmp.this1 = alloca %TokenType %"$tmpForRef" = alloca %Node br label %code @@ -26160,25 +31123,27 @@ 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.319(%TokenType* %tmp.v, i32 12) - %2 = load %TokenType, %TokenType* %tmp.v - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %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]]"* %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 + %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.177(%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 - %9 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %7, %TokenType %8) + 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 = call %Node @comp_parser_mkContinueStmt(%Location* %loc) - store %Node %11, %Node* %"$tmpForRef" - call void @"=.435"(%Node* %10, %Node* %"$tmpForRef") + %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 @@ -26188,582 +31153,1007 @@ dumy_block: ; No predecessors! br label %if_end } -declare %Node @comp_parser_mkContinueStmt(%Location*) +; Function Attrs: inlinehint nounwind +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 %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 @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 +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 - %tmp.v = alloca %TokenType + %tmp.this = alloca %TokenType %loc = alloca %Location %expr = alloca %Node - %tmp.v3 = alloca %TokenType - %"$tmpC" = alloca %Node - %tmp.v4 = alloca %TokenType + %tmp.this3 = alloca %TokenType %"$tmpForRef" = 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[_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 - %3 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %1, %TokenType %2) + %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 - %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 + %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.177(%Location* %loc, %Location* %6) - call void @ctor.436(%Node* %expr) + 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 - %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 - %9 = call i1 @accept(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %7, %TokenType %8) + %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_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") - %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 - %13 = call i1 @expect(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner[_CharSource, ExternalErrorReporter], ExternalErrorReporter], ExternalErrorReporter]"* %11, %TokenType %12) + %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_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 @"=.435"(%Node* %14, %Node* %"$tmpForRef") + %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 } -declare %Node @comp_parser_mkReturnStmt(%Location*, %Node) +; 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 +} -declare %Node @comp_parser_mkModifiers(%Location*, %Node, %Node) +; 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 -declare %Node @comp_parser_mkModule(%Location*, %Node, %Node) +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: alwaysinline nounwind -define internal void @dtor.475(%Node* %this) #3 { - %this.addr = alloca %Node* - store %Node* %this, %Node** %this.addr +; 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 - ret void + %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 - %"$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 @parseExpression(%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 @parseExpression(%"SparrowParser[SparrowLayoutDecoder[SparrowScanner]]"* %2) ret %Node %3 } ; 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.v = alloca %TokenType - %tmp.v1 = alloca %TokenType +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 +} + +; Function Attrs: inlinehint nounwind +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 i8, i8* %c.addr + %2 = icmp sle i8 48, %1 + br i1 %2, label %cond.true, label %cond.false + +cond.true: ; preds = %code + %3 = load i8, i8* %c.addr + %4 = icmp sle i8 %3, 55 + br label %cond.end + +cond.false: ; preds = %code + br label %cond.end + +cond.end: ; preds = %cond.false, %cond.true + %cond.res = phi i1 [ %4, %cond.true ], [ false, %cond.false ] + ret i1 %cond.res +} + +; Function Attrs: inlinehint nounwind +define internal i1 @isBinDigit(i8 %c) #4 { + %c.addr = alloca i8 + store i8 %c, i8* %c.addr + br label %code + +code: ; preds = %0 + %1 = load i8, i8* %c.addr + %2 = icmp eq i8 %1, 48 + br i1 %2, label %cond.true, label %cond.false + +cond.true: ; preds = %code + br label %cond.end + +cond.false: ; preds = %code + %3 = load i8, i8* %c.addr + %4 = icmp eq i8 %3, 49 + br label %cond.end + +cond.end: ; preds = %cond.false, %cond.true + %cond.res = phi i1 [ true, %cond.true ], [ %4, %cond.false ] + ret i1 %cond.res +} + +; 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 %LocString*, %LocString** %this.addr + %2 = getelementptr inbounds %LocString, %LocString* %1, i32 0, i32 0 + call void @ctor.618(%"Tuple[Location, String]"* %2) + ret void +} + +; 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 + +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 +} + +; 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 + +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 +} + +; 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 + +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 +} + +; 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 + +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 +} + +; 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 + +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 = %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 @dtor.623(%LineCol* %this) #3 { + %this.addr = alloca %LineCol* + store %LineCol* %this, %LineCol** %this.addr + br label %code + +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 + %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 +} + +; 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 + +code: ; preds = %0 + ret void +} + +; 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 + +code: ; preds = %0 + ret void +} + +; 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 + br label %code + +code: ; preds = %0 + 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 +} + +; 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 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 - %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 - %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.130(%Location* %res) + call void @setOne(%Location* %res) + %1 = load %Location*, %Location** %_result.addr + call void @ctor.182(%Location* %1, %Location* %res) 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 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 code: ; preds = %0 - %1 = load i8, i8* %c.addr - %2 = icmp sle i8 48, %1 - br i1 %2, label %cond.true, label %cond.false - -cond.true: ; preds = %code - %3 = load i8, i8* %c.addr - %4 = icmp sle i8 %3, 55 - br label %cond.end - -cond.false: ; preds = %code - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond.res = phi i1 [ %4, %cond.true ], [ false, %cond.false ] - ret i1 %cond.res + 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 } ; Function Attrs: inlinehint nounwind -define internal i1 @isBinDigit(i8 %c) #4 { - %c.addr = alloca i8 - store i8 %c, i8* %c.addr +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 code: ; preds = %0 - %1 = load i8, i8* %c.addr - %2 = icmp eq i8 %1, 48 - br i1 %2, label %cond.true, label %cond.false - -cond.true: ; preds = %code - br label %cond.end - -cond.false: ; preds = %code - %3 = load i8, i8* %c.addr - %4 = icmp eq i8 %3, 49 - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond.res = phi i1 [ true, %cond.true ], [ %4, %cond.false ] - ret i1 %cond.res + 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 } -; Function Attrs: alwaysinline nounwind -define internal void @ctor.476(%LocString* %this) #3 { - %this.addr = alloca %LocString* - store %LocString* %this, %LocString** %this.addr +; 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 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.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 @ctor.477(%"Tuple[Location, String]"* %this) #3 { - %this.addr = alloca %"Tuple[Location, String]"* - store %"Tuple[Location, String]"* %this, %"Tuple[Location, String]"** %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 %"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) - %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) + %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: alwaysinline nounwind -define internal void @"=.478"(%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 +; 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 %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 @"=.479"(%"Tuple[Location, String]"* %2, %"Tuple[Location, String]"* %4) + %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: alwaysinline nounwind -define internal void @"=.479"(%"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 +; 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 br label %code 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 @"=.248"(%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) + %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: alwaysinline nounwind -define internal i1 @"==.480"(%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 +; 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 br label %code 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 @"==.481"(%"Tuple[Location, String]"* %2, %"Tuple[Location, String]"* %4) - ret i1 %5 -} + 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 + +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 + +if_then6: ; preds = %if_block5 + ret i1 true + +if_end7: ; preds = %dumy_block8, %if_block5 + br label %if_block9 + +dumy_block8: ; No predecessors! + br label %if_end7 + +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 + +if_then10: ; preds = %if_block9 + ret i1 false + +if_end11: ; preds = %dumy_block12, %if_block9 + br label %if_block13 -; Function Attrs: alwaysinline nounwind -define internal i1 @"==.481"(%"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 - %5 = call i1 @"==.271"(%Location* %2, %Location* %4) - br i1 %5, label %cond.true, label %cond.false +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 -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 @"==.280"(%String* %7, %String* %9) - br label %cond.end +if_then14: ; preds = %if_block13 + ret i1 true -cond.false: ; preds = %code - br label %cond.end +if_end15: ; preds = %dumy_block16, %if_block13 + br label %if_block17 -cond.end: ; preds = %cond.false, %cond.true - %cond.res = phi i1 [ %10, %cond.true ], [ false, %cond.false ] - ret i1 %cond.res -} +dumy_block16: ; No predecessors! + br label %if_end15 -; Function Attrs: alwaysinline nounwind -define internal void @ctor.482(%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 - 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 %Node*, %Node** %this.addr - %2 = getelementptr inbounds %Node, %Node* %1, i32 0, i32 0 - call void @ctor.65(%UntypedPtr* %2, %UntypedPtr* %fdata.addr) - ret void -} +if_then18: ; preds = %if_block17 + ret i1 false -; Function Attrs: alwaysinline nounwind -define internal i1 @"==.483"(%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 +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 %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 @"==.68"(%UntypedPtr* %2, %UntypedPtr* %4) - ret i1 %5 +dumy_block20: ; No predecessors! + br label %if_end19 } -; Function Attrs: alwaysinline nounwind -define internal void @dtor.484(%LineCol* %this) #3 { - %this.addr = alloca %LineCol* - store %LineCol* %this, %LineCol** %this.addr +; Function Attrs: inlinehint nounwind +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 - ret void -} + br label %if_block -; Function Attrs: alwaysinline nounwind -define internal void @ctor.485(%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 +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 -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 -} +if_then: ; preds = %if_block + ret i1 true -; Function Attrs: alwaysinline nounwind -define internal void @dtor.486(%SourceCode* %this) #3 { - %this.addr = alloca %SourceCode* - store %SourceCode* %this, %SourceCode** %this.addr - br label %code +if_end: ; preds = %dumy_block, %if_block + br label %if_block1 -code: ; preds = %0 - ret void -} +dumy_block: ; No predecessors! + br label %if_end -; Function Attrs: alwaysinline nounwind -define internal void @dtor.487(%Location* %this) #3 { - %this.addr = alloca %Location* - store %Location* %this, %Location** %this.addr - br label %code +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 -code: ; preds = %0 - ret void -} +if_then2: ; preds = %if_block1 + ret i1 false -; 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 - br label %code +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 -code: ; preds = %0 - call void @ctor.157(%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.179(%LineCol* %5, %LineCol* %res) - ret void +dumy_block4: ; No predecessors! + br label %if_end3 } ; 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 @ctor.630(%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 - call void @ctor.155(%Location* %res) - call void @setOne(%Location* %res) - %1 = load %Location*, %Location** %_result.addr - call void @ctor.177(%Location* %1, %Location* %res) + %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: inlinehint nounwind -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 +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]" + 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 - store i32 1, i32* %tmp.v - %1 = load i32, i32* %tmp.v - %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 - %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 - %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 - %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 + %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: inlinehint nounwind -define internal void @mkLocation.488(%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 +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 - call void @ctor.155(%Location* %res) - %1 = getelementptr inbounds %Location, %Location* %res, i32 0, i32 0 - call void @"=.249"(%SourceCode* %1, %SourceCode* %sourceCode.addr) - call void @setOne(%Location* %res) - %2 = load %Location*, %Location** %_result.addr - call void @ctor.177(%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 { - %_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 + %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: inlinehint nounwind +define internal i8* @at.632(%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 - call void @ctor.155(%Location* %res) - %1 = getelementptr inbounds %Location, %Location* %res, i32 0, i32 0 - call void @"=.249"(%SourceCode* %1, %SourceCode* %sourceCode.addr) - %2 = getelementptr inbounds %Location, %Location* %res, i32 0, i32 1 - call void @"=.250"(%LineCol* %2, %LineCol* %start.addr) - %3 = getelementptr inbounds %Location, %Location* %res, i32 0, i32 2 - call void @"=.250"(%LineCol* %3, %LineCol* %end.addr) - %4 = load %Location*, %Location** %_result.addr - call void @ctor.177(%Location* %4, %Location* %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.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: 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 i8* @front.633(%String* %this) #4 { + %this.addr = alloca %String* + store %String* %this, %String** %this.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 @"=.250"(%LineCol* %2, %LineCol* %4) - 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: 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 i8* @back.634(%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 - %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 @"=.250"(%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) - 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 @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 %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 - %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 @"=.250"(%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) - 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 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 @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 + %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 - %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 + %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 i1 true + ret void if_end: ; preds = %dumy_block, %if_block br label %if_block1 @@ -26772,960 +32162,1043 @@ 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 + %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 - 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 - -if_then6: ; preds = %if_block5 - ret i1 true - -if_end7: ; preds = %dumy_block8, %if_block5 - br label %if_block9 - -dumy_block8: ; No predecessors! - br label %if_end7 - -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 - -if_then10: ; preds = %if_block9 - ret i1 false + %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_end11: ; preds = %dumy_block12, %if_block9 - br label %if_block13 +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 -dumy_block12: ; No predecessors! - br label %if_end11 +if_end3: ; preds = %while_end10, %while_end + 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 +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 -if_then14: ; preds = %if_block13 - ret i1 true +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 -if_end15: ; preds = %dumy_block16, %if_block13 - br label %if_block17 +while_step: ; preds = %while_body + br label %while_block -dumy_block16: ; No predecessors! - br label %if_end15 +while_end: ; preds = %while_block + br label %if_end3 -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 +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 -if_then18: ; preds = %if_block17 - ret i1 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.269(%"RawPtr[Char]"* %"$tmpC11", %"RawPtr[Char]" %48) + call void @"=.200"(%"RawPtr[Char]"* %45, %"RawPtr[Char]"* %"$tmpC11") + br label %while_step9 -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 +while_step9: ; preds = %while_body8 + br label %while_block7 -dumy_block20: ; No predecessors! - br label %if_end19 +while_end10: ; preds = %while_block7 + br label %if_end3 } -; Function Attrs: alwaysinline nounwind -define internal void @ctor.490(%String* %this) #3 { +; 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]" 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) + %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: 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 +; 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 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) + %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: alwaysinline nounwind -define internal void @dtor.492(%String* %this) #3 { +; Function Attrs: inlinehint nounwind +define internal void @remove.635(%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 %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: 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 +; Function Attrs: inlinehint nounwind +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 + 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 %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) + %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: 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 +; Function Attrs: inlinehint nounwind +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 + 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 - %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 + %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 -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 +dumy_block: ; No predecessors! + call void @dtor.261(%String* %res) + ret void +} -cond.false: ; preds = %cond.end3 - br label %cond.end +; Function Attrs: alwaysinline nounwind +define internal void @ctor.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 -cond.end: ; preds = %cond.false, %cond.true - %cond.res4 = phi i1 [ %10, %cond.true ], [ false, %cond.false ] - ret i1 %cond.res4 +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 +} -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 +; Function Attrs: alwaysinline nounwind +define internal void @"=.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 -cond.false2: ; preds = %code - br label %cond.end3 +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 +} -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 @"==.640"(%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 + +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 } -; Function Attrs: inlinehint nounwind -define internal void @ctor.495(%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 @"<<<.641"(%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 code: ; preds = %0 - %1 = load %String*, %String** %this.addr - %2 = load i64, i64* %count.addr - call void @ctor.194(%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) + %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 } -; Function Attrs: inlinehint nounwind -define internal void @ctor.496(%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.v = alloca i64 - %tmp.v1 = alloca i64 +; Function Attrs: alwaysinline nounwind +define internal void @"<<<.642"(%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 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.v - %6 = load i64, i64* %tmp.v - call void @ctor.194(%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.v1 - %14 = load i64, i64* %tmp.v1 - call void @_spr_memcpy(i8* %10, i8* %12, i64 %14) + %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 } ; 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 +define internal void @toString.643(%String* sret %_result) #4 { + %_result.addr = alloca %String* + store %String* %_result, %String** %_result.addr br label %code code: ; preds = %0 - %1 = load %String*, %String** %this.addr - %2 = load %String*, %String** %other.addr - %3 = call i1 @"==.280"(%String* %1, %String* %2) - %4 = xor i1 true, %3 - ret i1 %4 + %1 = load %String*, %String** %_result.addr + call void @ctor.137(%String* %1) + ret void } -; Function Attrs: inlinehint nounwind -define internal i8* @at.497(%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 +; Function Attrs: alwaysinline nounwind +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 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.v - %5 = load i64, i64* %tmp.v - call void @advance.195(%"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 + %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 } -; Function Attrs: inlinehint nounwind -define internal i8* @front.498(%String* %this) #4 { - %this.addr = alloca %String* - store %String* %this, %String** %this.addr +; Function Attrs: alwaysinline nounwind +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]"* + store %"ContiguousMemoryRange[LocString]"* %other, %"ContiguousMemoryRange[LocString]"** %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[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 i8* @back.499(%String* %this) #4 { - %this.addr = alloca %String* - store %String* %this, %String** %this.addr - %"$tmpC" = alloca %"RawPtr[Char]" - %tmp.v = alloca i64 +; Function Attrs: alwaysinline nounwind +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 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) - %5 = load %"RawPtr[Char]", %"RawPtr[Char]"* %"$tmpC" - %6 = call i8* @value(%"RawPtr[Char]" %5) - ret i8* %6 + ret void } -; 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 - %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 - %"$tmpC" = alloca %"RawPtr[Char]" - %tmp.v = alloca i64 - %"$tmpC1" = alloca %"RawPtr[Char]" - %tmp.v2 = alloca i64 +; Function Attrs: alwaysinline nounwind +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]"* + store %"ContiguousMemoryRange[LocString]"* %other, %"ContiguousMemoryRange[LocString]"** %other.addr 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) + %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 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.v = alloca i64 - %"$tmpC" = alloca %"RawPtr[Char]" - %tmp.v4 = alloca i64 - %newEnd5 = alloca %"RawPtr[Char]" - %tmp.v6 = alloca i64 - %"$tmpC11" = alloca %"RawPtr[Char]" +; Function Attrs: alwaysinline nounwind +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]"* + store %"ContiguousMemoryRange[LocString]"* %other, %"ContiguousMemoryRange[LocString]"** %other.addr br label %code code: ; preds = %0 - %1 = load %String*, %String** %this.addr - %2 = call i64 @size.193(%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 + %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 -dumy_block: ; No predecessors! - br label %if_end +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 -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 +cond.false: ; preds = %code + br label %cond.end -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.v - %13 = load i64, i64* %tmp.v - call void @advance.195(%"RawPtr[Char]"* %newEnd, %"RawPtr[Char]" %11, i64 %13) - br label %while_block +cond.end: ; preds = %cond.false, %cond.true + %cond.res = phi i1 [ %10, %cond.true ], [ false, %cond.false ] + ret i1 %cond.res +} -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.v6 - %20 = load i64, i64* %tmp.v6 - call void @advance.195(%"RawPtr[Char]"* %newEnd5, %"RawPtr[Char]" %18, i64 %20) - br label %while_block7 +; Function Attrs: alwaysinline nounwind +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 -if_end3: ; preds = %while_end10, %while_end +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.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 +} -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) - %24 = xor i1 true, %23 - br i1 %24, label %while_body, label %while_end +; Function Attrs: alwaysinline nounwind +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 -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.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") - %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 +code: ; preds = %0 + ret void +} -while_step: ; preds = %while_body - br label %while_block +; Function Attrs: alwaysinline nounwind +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]"* + store %"ContiguousMemoryRange[Char]"* %other, %"ContiguousMemoryRange[Char]"** %other.addr + br label %code -while_end: ; preds = %while_block - br label %if_end3 +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 @"=.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 +} -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) - %39 = xor i1 true, %38 - br i1 %39, label %while_body8, label %while_end10 +; Function Attrs: alwaysinline nounwind +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]"* + store %"ContiguousMemoryRange[Char]"* %other, %"ContiguousMemoryRange[Char]"** %other.addr + br label %code -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.189(%"RawPtr[Char]"* %"$tmpC11", %"RawPtr[Char]" %48) - call void @"=.184"(%"RawPtr[Char]"* %45, %"RawPtr[Char]"* %"$tmpC11") - br label %while_step9 +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 @"==.268"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %4) + br i1 %5, label %cond.true, label %cond.false -while_step9: ; preds = %while_body8 - br label %while_block7 +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 -while_end10: ; preds = %while_block7 - br label %if_end3 +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 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.v = alloca %StringRef - %"$tmpC" = alloca %"RawPtr[Char]" +; Function Attrs: alwaysinline nounwind +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 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.v, i8* %5, i8* %9) - %10 = load %StringRef, %StringRef* %tmp.v - call void @insertBefore.382(%String* %1, i8 %2, %StringRef %10) + %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 @_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 @dtor.654(%"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 %"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) ret void } -; Function Attrs: inlinehint nounwind -define internal void @remove.500(%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 +; Function Attrs: alwaysinline nounwind +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]"* + store %"ContiguousMemoryRange[Token]"* %other, %"ContiguousMemoryRange[Token]"** %other.addr 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) + %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 } -; Function Attrs: inlinehint nounwind -define internal void @"+.501"(%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 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]"* + store %"ContiguousMemoryRange[Token]"* %other, %"ContiguousMemoryRange[Token]"** %other.addr br label %code code: ; preds = %0 - %1 = call i64 @size.193(%String* %x.addr) - store i64 %1, i64* %sz1 - %2 = call i64 @size.193(%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) - %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.192(%String* %22, %String* %res) - call void @dtor.229(%String* %res) - ret void + %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 -dumy_block: ; No predecessors! - call void @dtor.229(%String* %res) +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 + +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.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]" + 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.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 @"+.502"(%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 @ctor.658(%"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.193(%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) - %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.192(%String* %21, %String* %res) - call void @dtor.229(%String* %res) + %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: alwaysinline nounwind +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]"* + store %"ContiguousMemoryRange[UInt]"* %other, %"ContiguousMemoryRange[UInt]"** %other.addr + br label %code -dumy_block: ; No predecessors! - call void @dtor.229(%String* %res) +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.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: alwaysinline nounwind -define internal void @ctor.503(%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.660(%"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 %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.192(%String* %2, %String* %4) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @"=.504"(%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 @"=.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 - %5 = call %String* @"=.256"(%String* %2, %String* %4) + %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 i1 @"==.505"(%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 @"==.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]"* + 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 - %5 = call i1 @"==.280"(%String* %2, %String* %4) - ret i1 %5 + %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 @"<<<.506"(%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 +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 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" - call void @append(%String* %2, %StringRef %4) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @"<<<.507"(%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 +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 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.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" - call void @append(%String* %2, %StringRef %6) - call void @dtor.229(%String* %"$tmpC1") ret void } -; Function Attrs: inlinehint nounwind -define internal void @toString.508(%String* sret %_result) #4 { - %_result.addr = alloca %String* - store %String* %_result, %String** %_result.addr +; Function Attrs: alwaysinline nounwind +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 code: ; preds = %0 - %1 = load %String*, %String** %_result.addr - call void @ctor.164(%String* %1) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.509(%"ContiguousMemoryRange[LocString]"* %this) #3 { - %this.addr = alloca %"ContiguousMemoryRange[LocString]"* - store %"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"** %this.addr +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 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) - %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) + %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 @ctor.510(%"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.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 %"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.464(%"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) + %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 @dtor.511(%"ContiguousMemoryRange[LocString]"* %this) #3 { - %this.addr = alloca %"ContiguousMemoryRange[LocString]"* - store %"ContiguousMemoryRange[LocString]"* %this, %"ContiguousMemoryRange[LocString]"** %this.addr +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]"* + store %"NumericRangeInc[Int]"* %other, %"NumericRangeInc[Int]"** %other.addr br label %code code: ; preds = %0 + %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 @"=.512"(%"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 @"==.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]"* + 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 - %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) - %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) - 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: alwaysinline nounwind -define internal i1 @"==.513"(%"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 +; Function Attrs: nounwind readnone speculatable +declare float @llvm.sqrt.f32(float) #6 -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 @"==.443"(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %4) - br i1 %5, label %cond.true, label %cond.false +; 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 -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 @"==.443"(%"RawPtr[LocString]"* %7, %"RawPtr[LocString]"* %9) - br label %cond.end +; Function Attrs: nounwind readnone speculatable +declare double @llvm.floor.f64(double) #6 -cond.false: ; preds = %code - br label %cond.end +; Function Attrs: nounwind readnone speculatable +declare double @llvm.ceil.f64(double) #6 -cond.end: ; preds = %cond.false, %cond.true - %cond.res = phi i1 [ %10, %cond.true ], [ false, %cond.false ] - ret i1 %cond.res -} +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.514(%"ContiguousMemoryRange[Char]"* %this) #3 { - %this.addr = alloca %"ContiguousMemoryRange[Char]"* - store %"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"** %this.addr +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]"* + store %"Vector[LocString]"* %other, %"Vector[LocString]"** %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.161(%"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) + %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.515(%"ContiguousMemoryRange[Char]"* %this) #3 { - %this.addr = alloca %"ContiguousMemoryRange[Char]"* - store %"ContiguousMemoryRange[Char]"* %this, %"ContiguousMemoryRange[Char]"** %this.addr +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 code: ; preds = %0 @@ -27733,79 +33206,110 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.516"(%"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 @"=.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[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 @"=.184"(%"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) + %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 @"==.517"(%"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 @"==.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]"* + store %"Vector[LocString]"* %other, %"Vector[LocString]"** %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 @"==.188"(%"RawPtr[Char]"* %2, %"RawPtr[Char]"* %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[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 @"==.188"(%"RawPtr[Char]"* %7, %"RawPtr[Char]"* %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.518(%"ContiguousMemoryRange[Token]"* %this) #3 { - %this.addr = alloca %"ContiguousMemoryRange[Token]"* - store %"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"** %this.addr +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]"* + store %"Vector[Char]"* %other, %"Vector[Char]"** %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.168(%"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) + %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.519(%"ContiguousMemoryRange[Token]"* %this) #3 { - %this.addr = alloca %"ContiguousMemoryRange[Token]"* - store %"ContiguousMemoryRange[Token]"* %this, %"ContiguousMemoryRange[Token]"** %this.addr +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 code: ; preds = %0 @@ -27813,121 +33317,110 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.520"(%"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 @"=.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[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 @"=.202"(%"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) + %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 @"==.521"(%"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 @"==.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]"* + store %"Vector[Char]"* %other, %"Vector[Char]"** %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 @"==.208"(%"RawPtr[Token]"* %2, %"RawPtr[Token]"* %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[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 @"==.208"(%"RawPtr[Token]"* %7, %"RawPtr[Token]"* %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 -} - -; Function Attrs: alwaysinline nounwind -define internal void @ctor.522(%"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 + %cond.res4 = phi i1 [ %10, %cond.true ], [ false, %cond.false ] + ret i1 %cond.res4 -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) - %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) - ret void -} +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 -; Function Attrs: alwaysinline nounwind -define internal void @ctor.523(%"ContiguousMemoryRange[UInt]"* %this) #3 { - %this.addr = alloca %"ContiguousMemoryRange[UInt]"* - store %"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"** %this.addr - br label %code +cond.false2: ; preds = %code + 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.170(%"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) - ret void +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.524(%"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.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]"* + store %"Vector[Token]"* %other, %"Vector[Token]"** %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.220(%"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) + %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.525(%"ContiguousMemoryRange[UInt]"* %this) #3 { - %this.addr = alloca %"ContiguousMemoryRange[UInt]"* - store %"ContiguousMemoryRange[UInt]"* %this, %"ContiguousMemoryRange[UInt]"** %this.addr +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 code: ; preds = %0 @@ -27935,73 +33428,110 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.526"(%"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 @"=.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[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 @"=.215"(%"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) + %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 @"==.527"(%"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 @"==.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]"* + store %"Vector[Token]"* %other, %"Vector[Token]"** %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 @"==.221"(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %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[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 @"==.221"(%"RawPtr[UInt]"* %7, %"RawPtr[UInt]"* %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 + %cond.res4 = phi i1 [ %10, %cond.true ], [ false, %cond.false ] + ret i1 %cond.res4 + +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 + +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.528(%"RawPtr[LocString]"* %this) #3 { - %this.addr = alloca %"RawPtr[LocString]"* - store %"RawPtr[LocString]"* %this, %"RawPtr[LocString]"** %this.addr +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]"* + store %"Vector[UInt]"* %other, %"Vector[UInt]"** %other.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 @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.529(%"RawPtr[Token]"* %this) #3 { - %this.addr = alloca %"RawPtr[Token]"* - store %"RawPtr[Token]"* %this, %"RawPtr[Token]"** %this.addr +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 code: ; preds = %0 @@ -28009,245 +33539,338 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @dtor.530(%"RawPtr[UInt]"* %this) #3 { - %this.addr = alloca %"RawPtr[UInt]"* - store %"RawPtr[UInt]"* %this, %"RawPtr[UInt]"** %this.addr +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]"* + store %"Vector[UInt]"* %other, %"Vector[UInt]"** %other.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 @"=.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: nounwind readnone speculatable -declare float @llvm.sqrt.f32(float) #6 +; Function Attrs: alwaysinline nounwind +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]"* + store %"Vector[UInt]"* %other, %"Vector[UInt]"** %other.addr + br label %code -; Function Attrs: nounwind readnone speculatable -declare float @llvm.sin.f32(float) #6 +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 @"==.271"(%"RawPtr[UInt]"* %2, %"RawPtr[UInt]"* %4) + br i1 %5, label %cond.true1, label %cond.false2 -; Function Attrs: nounwind readnone speculatable -declare float @llvm.cos.f32(float) #6 +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 -; Function Attrs: nounwind readnone speculatable -declare float @llvm.powi.f32(float, i32) #6 +cond.false: ; preds = %cond.end3 + br label %cond.end -; Function Attrs: nounwind readnone speculatable -declare float @llvm.pow.f32(float, float) #6 +cond.end: ; preds = %cond.false, %cond.true + %cond.res4 = phi i1 [ %10, %cond.true ], [ false, %cond.false ] + ret i1 %cond.res4 -; Function Attrs: nounwind readnone speculatable -declare float @llvm.exp.f32(float) #6 +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 -; Function Attrs: nounwind readnone speculatable -declare float @llvm.exp2.f32(float) #6 +cond.false2: ; preds = %code + br label %cond.end3 -; Function Attrs: nounwind readnone speculatable -declare float @llvm.log.f32(float) #6 +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: nounwind readnone speculatable -declare float @llvm.log10.f32(float) #6 +; Function Attrs: alwaysinline nounwind +define internal void @_returnsVoid() #3 { + br label %code -; Function Attrs: nounwind readnone speculatable -declare float @llvm.log2.f32(float) #6 +code: ; preds = %0 + ret void +} -; Function Attrs: nounwind readnone speculatable -declare float @llvm.fabs.f32(float) #6 +; Function Attrs: alwaysinline nounwind +define internal void @dtor.686(%ErrorReporter* %this) #3 { + %this.addr = alloca %ErrorReporter* + store %ErrorReporter* %this, %ErrorReporter** %this.addr + br label %code -; Function Attrs: nounwind readnone speculatable -declare float @llvm.floor.f32(float) #6 +code: ; preds = %0 + ret void +} -; Function Attrs: nounwind readnone speculatable -declare float @llvm.ceil.f32(float) #6 +; Function Attrs: inlinehint nounwind +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* + store %Location* %loc, %Location** %loc.addr + %msg.addr = alloca %StringRef + store %StringRef %msg, %StringRef* %msg.addr + br label %code -declare float @llvm.truc.f32(float) +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.rint.f32(float) #6 +; Function Attrs: alwaysinline nounwind +define internal void @dtor.688(%AstBuilder* %this) #3 { + %this.addr = alloca %AstBuilder* + store %AstBuilder* %this, %AstBuilder** %this.addr + br label %code -; Function Attrs: nounwind readnone speculatable -declare double @llvm.sqrt.f64(double) #6 +code: ; preds = %0 + ret void +} -; Function Attrs: nounwind readnone speculatable -declare double @llvm.sin.f64(double) #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 double @llvm.cos.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 @isalnum(i32 %2) + %4 = icmp ne i32 0, %3 + ret i1 %4 +} -; Function Attrs: nounwind readnone speculatable -declare double @llvm.powi.f64(double, i32) #6 +declare i32 @isalnum(i32) -; Function Attrs: nounwind readnone speculatable -declare double @llvm.pow.f64(double, double) #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 + +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 double @llvm.exp.f64(double) #6 +declare i32 @isblank(i32) -; Function Attrs: nounwind readnone speculatable -declare double @llvm.exp2.f64(double) #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 double @llvm.log.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 @iscntrl(i32 %2) + %4 = icmp ne i32 0, %3 + ret i1 %4 +} -; Function Attrs: nounwind readnone speculatable -declare double @llvm.log10.f64(double) #6 +declare i32 @iscntrl(i32) -; Function Attrs: nounwind readnone speculatable -declare double @llvm.log2.f64(double) #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 double @llvm.fabs.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 @isgraph(i32 %2) + %4 = icmp ne i32 0, %3 + ret i1 %4 +} -; Function Attrs: nounwind readnone speculatable -declare double @llvm.floor.f64(double) #6 +declare i32 @isgraph(i32) -; Function Attrs: nounwind readnone speculatable -declare double @llvm.ceil.f64(double) #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 -declare double @llvm.truc.f64(double) +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.rint.f64(double) #6 +declare i32 @islower(i32) -; Function Attrs: alwaysinline nounwind -define internal void @ctor.531(%"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 +; 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 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.464(%"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) - %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) - ret void + %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 } -; Function Attrs: alwaysinline nounwind -define internal void @dtor.532(%"Vector[LocString]"* %this) #3 { - %this.addr = alloca %"Vector[LocString]"* - store %"Vector[LocString]"* %this, %"Vector[LocString]"** %this.addr +declare i32 @isprint(i32) + +; 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 code: ; preds = %0 - ret void + %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: alwaysinline nounwind -define internal void @"=.533"(%"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 +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 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 @"=.450"(%"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) - %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) - ret void + %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: alwaysinline nounwind -define internal i1 @"==.534"(%"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 +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 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 @"==.443"(%"RawPtr[LocString]"* %2, %"RawPtr[LocString]"* %4) - br i1 %5, label %cond.true1, label %cond.false2 + %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 +} -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 @"==.443"(%"RawPtr[LocString]"* %7, %"RawPtr[LocString]"* %9) - br label %cond.end +declare i32 @isupper(i32) -cond.false: ; preds = %cond.end3 - br label %cond.end +declare void @exit(i32) -cond.end: ; preds = %cond.false, %cond.true - %cond.res4 = phi i1 [ %10, %cond.true ], [ false, %cond.false ] - ret i1 %cond.res4 +; Function Attrs: inlinehint nounwind +define internal i32 @systemCall(%StringRef %cmd) #4 { + %cmd.addr = alloca %StringRef + store %StringRef %cmd, %StringRef* %cmd.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 @"==.443"(%"RawPtr[LocString]"* %12, %"RawPtr[LocString]"* %14) - br label %cond.end3 +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 +} -cond.false2: ; preds = %code - br label %cond.end3 +; Function Attrs: alwaysinline nounwind +define internal void @ctor.689(%File* %this) #3 { + %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 + ret void } ; Function Attrs: alwaysinline nounwind -define internal void @ctor.535(%"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 +define internal void @ctor.690(%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[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.187(%"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) - %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) + %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 @dtor.536(%"Vector[Char]"* %this) #3 { - %this.addr = alloca %"Vector[Char]"* - store %"Vector[Char]"* %this, %"Vector[Char]"** %this.addr +define internal void @dtor.691(%File* %this) #3 { + %this.addr = alloca %File* + store %File* %this, %File** %this.addr br label %code code: ; preds = %0 @@ -28255,656 +33878,670 @@ code: ; preds = %0 } ; Function Attrs: alwaysinline nounwind -define internal void @"=.537"(%"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 +define internal void @"=.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 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 @"=.184"(%"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) - %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) + %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 i1 @"==.538"(%"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 +define internal i1 @"==.693"(%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[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 @"==.188"(%"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 @"==.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 %"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 @"==.188"(%"RawPtr[Char]"* %12, %"RawPtr[Char]"* %14) - br label %cond.end3 + %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.694(%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.539(%"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 @ctor.695(%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[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.207(%"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) - %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) + %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.540(%"Vector[Token]"* %this) #3 { - %this.addr = alloca %"Vector[Token]"* - store %"Vector[Token]"* %this, %"Vector[Token]"** %this.addr +; Function Attrs: inlinehint nounwind +define internal void @ctor.696(%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 @"=.541"(%"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 @dtor.697(%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 @"=.202"(%"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) - %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) + %1 = load %File*, %File** %this.addr + call void @close(%File* %1) ret void } -; Function Attrs: alwaysinline nounwind -define internal i1 @"==.542"(%"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 @close(%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 @"==.208"(%"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 @"==.208"(%"RawPtr[Token]"* %7, %"RawPtr[Token]"* %9) - br label %cond.end + br label %if_block -cond.false: ; preds = %cond.end3 - br label %cond.end +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.end: ; preds = %cond.false, %cond.true - %cond.res4 = phi i1 [ %10, %cond.true ], [ false, %cond.false ] - ret i1 %cond.res4 +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.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 @"==.208"(%"RawPtr[Token]"* %12, %"RawPtr[Token]"* %14) - br label %cond.end3 +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 +} -cond.false2: ; preds = %code - br label %cond.end3 +; Function Attrs: inlinehint nounwind +define internal i1 @isOpen(%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 + %3 = load i8*, i8** %2 + %4 = call i1 @implOpRefNE(i8* %3, i8* null) + ret i1 %4 } -; Function Attrs: alwaysinline nounwind -define internal void @ctor.543(%"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 void @fclose(i8*) + +; Function Attrs: inlinehint nounwind +define internal void @"=.698"(%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 %"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.220(%"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) - %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) + %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 @dtor.544(%"Vector[UInt]"* %this) #3 { - %this.addr = alloca %"Vector[UInt]"* - store %"Vector[UInt]"* %this, %"Vector[UInt]"** %this.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 %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.695(%File* %1, i8* %4) ret void } -; Function Attrs: alwaysinline nounwind -define internal void @"=.545"(%"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 i32 @flush.699(%File* %this) #4 { + %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 @"=.215"(%"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) - %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) - ret void +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 } -; Function Attrs: alwaysinline nounwind -define internal i1 @"==.546"(%"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 - %5 = call i1 @"==.221"(%"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 @"==.221"(%"RawPtr[UInt]"* %7, %"RawPtr[UInt]"* %9) - br label %cond.end + 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 -cond.false: ; preds = %cond.end3 - br label %cond.end +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 -cond.end: ; preds = %cond.false, %cond.true - %cond.res4 = phi i1 [ %10, %cond.true ], [ false, %cond.false ] - ret i1 %cond.res4 +if_then: ; preds = %if_block + call void @clear(%String* %res) + br label %if_end -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 @"==.221"(%"RawPtr[UInt]"* %12, %"RawPtr[UInt]"* %14) - br label %cond.end3 +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 -cond.false2: ; preds = %code - br label %cond.end3 +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 -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 +dumy_block: ; No predecessors! + call void @dtor.261(%String* %res) + ret void } +declare i8* @fgets(i8*, i32, i8*) + ; Function Attrs: inlinehint nounwind -define internal i1 @isAlnum(i8 %c) #4 { - %c.addr = alloca i8 - store i8 %c, i8* %c.addr - %tmp.v = alloca i32 +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 = load i8, i8* %c.addr - call void @_ass_32_8z(i32* %tmp.v, i8 %1) - %2 = load i32, i32* %tmp.v - %3 = call i32 @isalnum(i32 %2) - %4 = icmp ne i32 0, %3 - ret i1 %4 + %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 @isalnum(i32) +declare i32 @fwrite(i8*, i32, i32, i8*) ; Function Attrs: inlinehint nounwind -define internal i1 @isBlank(i8 %c) #4 { - %c.addr = alloca i8 - store i8 %c, i8* %c.addr - %tmp.v = alloca i32 +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* + store %File* %this, %File** %this.addr 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 - %3 = call i32 @isblank(i32 %2) - %4 = icmp ne i32 0, %3 - ret i1 %4 + %1 = load %FileRange*, %FileRange** %_result.addr + %2 = load %File*, %File** %this.addr + call void @ctor.701(%FileRange* %1, %File* %2) + 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.v = alloca i32 +define internal void @ctor.701(%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 i8, i8* %c.addr - call void @_ass_32_8z(i32* %tmp.v, i8 %1) - %2 = load i32, i32* %tmp.v - %3 = call i32 @iscntrl(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 %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 + +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 + +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 + +if_end: ; preds = %if_then, %if_block + ret void } -declare i32 @iscntrl(i32) +; Function Attrs: alwaysinline nounwind +define internal void @ctor.702(%FileRange* %this) #3 { + %this.addr = alloca %FileRange* + store %FileRange* %this, %FileRange** %this.addr + br label %code -; Function Attrs: inlinehint nounwind -define internal i1 @isGraph(i8 %c) #4 { - %c.addr = alloca i8 - store i8 %c, i8* %c.addr - %tmp.v = alloca i32 +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 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @ctor.703(%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.v, i8 %1) - %2 = load i32, i32* %tmp.v - %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: alwaysinline nounwind +define internal void @dtor.704(%FileRange* %this) #3 { + %this.addr = alloca %FileRange* + store %FileRange* %this, %FileRange** %this.addr + br label %code -; Function Attrs: inlinehint nounwind -define internal i1 @isLower(i8 %c) #4 { - %c.addr = alloca i8 - store i8 %c, i8* %c.addr - %tmp.v = alloca i32 +code: ; preds = %0 + ret void +} + +; Function Attrs: alwaysinline nounwind +define internal void @"=.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.v, i8 %1) - %2 = load i32, i32* %tmp.v - %3 = call i32 @islower(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 @islower(i32) - -; Function Attrs: inlinehint nounwind -define internal i1 @isPrint(i8 %c) #4 { - %c.addr = alloca i8 - store i8 %c, i8* %c.addr - %tmp.v = alloca i32 +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.706"(%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.v, i8 %1) - %2 = load i32, i32* %tmp.v - %3 = call i32 @isprint(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 @isprint(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 @isPunct(i8 %c) #4 { - %c.addr = alloca i8 - store i8 %c, i8* %c.addr - %tmp.v = 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.v, i8 %1) - %2 = load i32, i32* %tmp.v - %3 = call i32 @ispunct(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 @ispunct(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 @isSpace(i8 %c) #4 { - %c.addr = alloca i8 - store i8 %c, i8* %c.addr - %tmp.v = 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.v, i8 %1) - %2 = load i32, i32* %tmp.v - %3 = call i32 @isspace(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 @isspace(i32) - ; Function Attrs: inlinehint nounwind -define internal i1 @isUpper(i8 %c) #4 { - %c.addr = alloca i8 - store i8 %c, i8* %c.addr - %tmp.v = alloca i32 +define internal i1 @isEmpty.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.v, i8 %1) - %2 = load i32, i32* %tmp.v - %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 1 + %3 = load i1, i1* %2 + ret i1 %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 i8 @front.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 + %1 = load %FileRange*, %FileRange** %s.addr + %2 = getelementptr inbounds %FileRange, %FileRange* %1, i32 0, i32 2 + %3 = load i8, i8* %2 + ret i8 %3 } -; Function Attrs: alwaysinline nounwind -define internal void @ctor.547(%File* %this) #3 { - %this.addr = alloca %File* - store %File* %this, %File** %this.addr +; Function Attrs: inlinehint nounwind +define internal void @popFront.709(%FileRange* %s) #4 { + %s.addr = alloca %FileRange* + store %FileRange* %s, %FileRange** %s.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 - ret void -} + %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 -; Function Attrs: alwaysinline nounwind -define internal void @ctor.548(%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_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 -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_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 ret void } +declare i32 @fread(i8*, i32, i32, i8*) + ; Function Attrs: alwaysinline nounwind -define internal void @dtor.549(%File* %this) #3 { - %this.addr = alloca %File* - store %File* %this, %File** %this.addr +define internal void @ctor.710(%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.694(%File* %2) ret void } ; Function Attrs: alwaysinline nounwind -define internal void @"=.550"(%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.711(%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.696(%File* %2, %File* %4) ret void } -; Function Attrs: inlinehint nounwind -define internal void @ctor.551(%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.712(%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.697(%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 @"=.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** %_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.551(%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 @"=.698"(%File* %2, %File* %4) ret void } -; Function Attrs: inlinehint nounwind -define internal i32 @flush.552(%File* %this) #4 { - %this.addr = alloca %File* - store %File* %this, %File** %this.addr +; Function Attrs: alwaysinline nounwind +define internal i1 @"==.714"(%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 @"==.693"(%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.v = alloca i64 - %cstr = alloca i8* - %tmp.v1 = 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.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) - %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.192(%String* %12, %String* %res) - call void @dtor.229(%String* %res) - ret void - -dumy_block: ; No predecessors! - call void @dtor.229(%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/parserTest.spr b/src/SparrowFrontend/Grammar/parserTest.spr deleted file mode 100644 index 2fef0baf..00000000 --- a/src/SparrowFrontend/Grammar/parserTest.spr +++ /dev/null @@ -1,320 +0,0 @@ -import parserIf, parser -import parserDefs -import scanner - -import os -import std.ranges -import std.vector -import std.newDelete - -var _nullNodeImpl: NodeImpl - -datatype NodeImpl - kind: String - loc: Location - name: String - children: Vector(Node) - -fun ctor(this: @NodeImpl) - this.kind ctor "" -fun ctor(this: @NodeImpl, l: Location, kind: StringRef) - this.kind ctor kind - this.loc ctor l - // cout << "Parsed: " << kind << endl -fun ctor(this: @NodeImpl, l: Location, kind: StringRef, r: Range) - this.kind ctor kind - this.loc ctor l - children ctor r - // cout << "Parsed: " << kind << endl -fun ctor(this: @NodeImpl, l: Location, kind: StringRef, r: Range, name: StringRef) - this.kind ctor kind - this.loc ctor l - this.name ctor name - children ctor r - // cout << "Parsed: " << kind << endl - -fun toImpl(n: Node): @NodeImpl = ife(n.data.data !== null, reinterpretCast(@NodeImpl, n.data.data), _nullNodeImpl) -fun toNode(impl: @NodeImpl) = Node(UntypedPtr(reinterpretCast(@Byte, impl))) - -fun >> (n: @NodeImpl, 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: StringRef): Node = new(NodeImpl, l, kind) toNode -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 - -[native("comp_parser_addToNodeList")] -fun addToNodeList(nl, newNode: Node): Node - if nl isSet - if newNode isSet - (nl toImpl).children += newNode - else if newNode isSet - nl = createNode((newNode toImpl).loc, "nodeList", repeat(newNode, 1)) - return nl - -[native("comp_parser_mkModifiers")] -fun mkModifiers(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) \ - = createNode(loc, "module", values(moduleName, decls)) -[native("comp_parser_mkImportName")] -fun mkImportName(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) \ - = createNode(loc, "using", repeat(usingNode, 1), alias) -[native("comp_parser_mkPackage")] -fun mkPackage(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) \ - = createNode(loc, "datatype", values(params, underlyingData, ifClause, children), name) -[native("comp_parser_mkField")] -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) \ - = createNode(loc, "concept", values(baseConcept, ifClause), name) -[native("comp_parser_mkVar")] -fun mkVar(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) \ - = createNode(loc, "param", values(typeNode, init), name) -[native("comp_parser_mkFun")] -fun mkFun(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) \ - = createNode((expr toImpl).loc, "paren", repeat(expr, 1)) -[native("comp_parser_mkPostfixOp")] -fun mkPostfixOp(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) \ - = createNode(loc, "infix", values(lhs, createNode(loc, op), rhs)) -[native("comp_parser_mkPrefixOp")] -fun mkPrefixOp(loc: @Location, op: StringRef, base: Node) \ - = createNode(loc, "prefix", values(createNode(loc, op), base)) -[native("comp_parser_mkIdentifier")] -fun mkIdentifier(loc: @Location, id: StringRef) \ - = createNode(loc, id) -[native("comp_parser_mkCompoundExpr")] -fun mkCompoundExpr(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) \ - = createNode(loc, "starExpr", values(base, createNode(loc, id))) -[native("comp_parser_mkDotExpr")] -fun mkDotExpr(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) \ - = createNode(loc, "funApp", values(base, args)) -[native("comp_parser_mkLambdaExpr")] -fun mkLambdaExpr(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) \ - = createNode(loc, "null") -[native("comp_parser_mkBoolLiteral")] -fun mkBoolLiteral(loc: @Location, val: Bool) \ - = createNode(loc, "boolLit") -[native("comp_parser_mkIntLiteral")] -fun mkIntLiteral(loc: @Location, val: Int) \ - = createNode(loc, "intLit") -[native("comp_parser_mkUIntLiteral")] -fun mkUIntLiteral(loc: @Location, val: UInt) \ - = createNode(loc, "uintLit") -[native("comp_parser_mkLongLiteral")] -fun mkLongLiteral(loc: @Location, val: Long) \ - = createNode(loc, "longLit") -[native("comp_parser_mkULongLiteral")] -fun mkULongLiteral(loc: @Location, val: ULong) \ - = createNode(loc, "ulongLit") -[native("comp_parser_mkFloatLiteral")] -fun mkFloatLiteral(loc: @Location, val: Float) \ - = createNode(loc, "floatLit") -[native("comp_parser_mkDoubleLiteral")] -fun mkDoubleLiteral(loc: @Location, val: Double) \ - = createNode(loc, "doubleLit") -[native("comp_parser_mkCharLiteral")] -fun mkCharLiteral(loc: @Location, val: Char) \ - = createNode(loc, "charLit") -[native("comp_parser_mkStringLiteral")] -fun mkStringLiteral(loc: @Location, data: StringRef) \ - = createNode(loc, "stringLit") - -[native("comp_parser_mkBlockStmt")] -fun mkBlockStmt(loc: @Location, stmts: Node) \ - = createNode(loc, "block", repeat(stmts, 1)) -[native("comp_parser_mkIfStmt")] -fun mkIfStmt(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) \ - = createNode(loc, "for", values(createNode(loc, id), typeNode, range, action)) -[native("comp_parser_mkWhileStmt")] -fun mkWhileStmt(loc: @Location, expr, stepAction, body: Node) \ - = createNode(loc, "while", values(expr, stepAction, body)) -[native("comp_parser_mkBreakStmt")] -fun mkBreakStmt(loc: @Location) \ - = createNode(loc, "break") -[native("comp_parser_mkContinueStmt")] -fun mkContinueStmt(loc: @Location) \ - = createNode(loc, "continue") -[native("comp_parser_mkReturnStmt")] -fun mkReturnStmt(loc: @Location, expr: Node) \ - = createNode(loc, "return", repeat(expr, 1)) - - -fun sprMain - if programArgs.size() < 2 - return - var n = programArgs(1) asInt - - if n == 0 ; doScan(programArgs(2), "") - else if n == 1 ; doParse(programArgs(2), "") - else if n == 2 ; test2() - else if n == 3 ; test3() - else if n == 4 ; test4() - else if n == 5 ; test5() - else if n == 6 ; test6() - else if n == 7 ; test7() - -fun doScan(filename, code: StringRef) - var loc = mkLocation() - var parser: @ParserContext = createScanner(filename, code, loc) - - var token: Token - while true - nextToken(parser, token) - cout << token.type.data << " - '" << token.data << "' - " << token.loc << endl - if token.type == tkEND - break - - parser destroyParser - -fun doParse(filename, code: StringRef) - var loc = mkLocation() - var parser: @ParserContext = createParser(filename, code, loc) - - var rootNode = parser parseModule - cout << (rootNode toImpl) << endl - - 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") -/*<<>>*/ - -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}>") -/*<<>>*/ - -// <<) ->>>*/ - -fun test7 - doParse("", "import x.y.z, k, l(a,b,c);") -/*<<, nodeList(nodeList(importName(compoundExpr(compoundExpr(x, y), z), ), importName(k, ), importName(l, nodeList(a, b, c))))) ->>>*/ - -//<<>(t: TokenType, os: @OutStream) os << (t _asString) diff --git a/tests/Basic/Auto.spr b/tests/Basic/Auto.spr index e109775d..a6ecbccc 100644 --- a/tests/Basic/Auto.spr +++ b/tests/Basic/Auto.spr @@ -2,26 +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; - - f1(a); - writeLn(a); - f2(a); - writeLn(a); + var a: Int = 5 + f1(a) + writeLn(a) + f2(a) + writeLn(a) /*<<'); -} + write('<'); writeLn('-') + doTest() + write('-'); writeLn('>') /*<<>>*/ - diff --git a/tests/Basic/Generics.spr b/tests/Basic/Generics.spr index 082d92d4..0afa67e5 100644 --- a/tests/Basic/Generics.spr +++ b/tests/Basic/Generics.spr @@ -1,80 +1,70 @@ //!! -t "SparrowImplicitLib.spr" -fno-main -concept AnyType(x); // Always true +concept AnyType(x) // Always true fun f1(t: Type, i: Int): Int -{ - var tmp: t; - tmp = i; - return tmp + i; -} + var tmp: t + tmp = i + return tmp + i fun f2(t: Type) -{ - var tmp: t; - write('S'); - write('i'); - write('z'); - write('e'); - write(':'); - write(' '); - writeLn(sizeOf(tmp)); -} + var tmp: t + write('S') + write('i') + write('z') + write('e') + write(':') + write(' ') + writeLn(sizeOf(tmp)) datatype MyVector(t: Type) - start, end: t; + start, end: t using glob = _MyVectorHelper(t).glob package _MyVectorHelper(t: Type) - var glob: t; + var glob: t fun print(this: @MyVector) - write(start); - write(' '); - write('-'); - write(' '); - writeLn(end); - + write(start) + write(' ') + write('-') + write(' ') + writeLn(end) fun valSize(x: AnyType): SizeType -{ - return sizeOf(x); -} + return sizeOf(x) [native("test")] fun test(n: Int) -{ - writeLn(f1(Int, 4)); + writeLn(f1(Int, 4)) //writeLn(f1(Double, 4)); - f2(Int); - f2(Double); - f2(Byte); + f2(Int) + f2(Double) + f2(Byte) if ( Int == Double ) - writeLn('F'); + writeLn('F') if ( Int == Int ) - write('O'); writeLn('K'); - - var v1: MyVector(Int); - v1.start = 4; - v1.end = 5; - v1.print(); - v1.glob = 100; - writeLn(MyVector(Int).glob); + write('O'); writeLn('K') - var v2: MyVector(Double); - v2.start = 10.0; - v2.end = 15.2; - v2.print(); - v2.glob = 3.14; - writeLn(MyVector(Double).glob); + var v1: MyVector(Int) + v1.start = 4 + v1.end = 5 + v1.print() + v1.glob = 100 + writeLn(MyVector(Int).glob) - writeLn('-'); - writeLn(valSize(10)); - writeLn(valSize(3.14)); - writeLn(valSize(v1)); - writeLn(valSize(v2)); -} + var v2: MyVector(Double) + v2.start = 10.0 + v2.end = 15.2 + v2.print() + v2.glob = 3.14 + writeLn(MyVector(Double).glob) + writeLn('-') + writeLn(valSize(10)) + writeLn(valSize(3.14)) + writeLn(valSize(v1)) + writeLn(valSize(v2)) /*<<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")] fun _atoi(str: @Char): Int 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 /*<<>>*/ - fun test2 -{ - var x = 10; - var y = 11; - var z = 12; - cout << doCall((fun.{x} n = n*n + x), 5) << endl; - cout << doCall((fun.{x, y, z} n = n*n + x+y+z), 5) << endl; - cout << doCall((fun.{x,y,z} n = n*n), 5) << endl; -} + var x = 10 + var y = 11 + var z = 12 + cout << doCall((fun.{x} n = n*n + x), 5) << endl + cout << doCall((fun.{x, y, z} n = n*n + x+y+z), 5) << endl + cout << doCall((fun.{x,y,z} n = n*n), 5) << 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..2e82bc1a 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 . . . . . @@ -90,7 +90,6 @@ using nRotations = 12; // return Piece(PosTypeArr(offseted)); //} - //var models: StaticArray(Piece, nPieces); //fun ctor //{ @@ -106,7 +105,6 @@ using nRotations = 12; // models(9).ctor(0~0, 1~0, 2~ 0, 3~ -1, 3~ 0); //} - //fun init //{ // copyFromOldAlgo; @@ -133,46 +131,42 @@ 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, * I'm going to allocate enough space for all legal rotations of each piece @@ -187,19 +181,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) /* Returns the new cell index from the specified cell in the * specified direction. The index is only valid if the @@ -207,75 +199,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,94 +266,78 @@ 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- * leftmost empty cell. Mark off available pieces as it goes along. @@ -569,108 +497,80 @@ 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 +374,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 +153,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 +364,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 test10 -{ - var x = 3; - var y = 4; - cout << ( x + y ) << endl; - cout << (+++3 + +++4) << endl; - cout << ((3+++) + (4+++)) << endl; - cout << ((3+++) + (+++4)) << endl; + var x = 3 + var y = 4 + cout << ( x + y ) << endl + cout << (+++3 + +++4) << endl + cout << ((3+++) + (4+++)) << endl + cout << ((3+++) + (+++4)) << endl - cout << (3+++ + +++4) << endl; // similar to 3 +++ (+ (+++4)) + cout << (3+++ + +++4) << endl // similar to 3 +++ (+ (+++4)) // Both +, and +++ are unary and binary -} /*<<>>*/ - fun test11 -{ - var x = 3; - var y = 4; - var z = 5; - cout << ( x..y ) << endl; - cout << ( x..y..z ) << endl; -} + var x = 3 + var y = 4 + var z = 5 + cout << ( x..y ) << endl + cout << ( x..y..z ) << 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 /*<<" +fun ctor(this: @NodeImpl, l: Location, kind: StringRef) + this.kind ctor kind + this.loc ctor l + // cout << "Parsed: " << kind << endl +fun ctor(this: @NodeImpl, l: Location, kind: StringRef, r: Range) + this.kind ctor kind + this.loc ctor l + children ctor r + // cout << "Parsed: " << kind << endl +fun ctor(this: @NodeImpl, l: Location, kind: StringRef, r: Range, name: StringRef) + this.kind ctor kind + this.loc ctor l + this.name ctor name + children ctor r + // cout << "Parsed: " << kind << endl + +fun toImpl(n: Node): @NodeImpl = ife(n.data.data !== null, reinterpretCast(@NodeImpl, n.data.data), _nullNodeImpl) +fun toNode(impl: @NodeImpl) = Node(UntypedPtr(reinterpretCast(@Byte, impl))) + +fun >> (n: @NodeImpl, 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: StringRef): Node = new(NodeImpl, l, kind) toNode +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 + +datatype MyAstBuilder + +fun addToNodeList(this: @MyAstBuilder, nl, newNode: Node): Node + if nl isSet + if newNode isSet + (nl toImpl).children += newNode + else if newNode isSet + nl = createNode((newNode toImpl).loc, "nodeList", repeat(newNode, 1)) + return nl + +fun mkModifiers(this: @MyAstBuilder, loc: @Location, main, mods: Node) \ + = ife(mods isSet, createNode(loc, "modifiers", values(main, mods)), main) +fun mkModule(this: @MyAstBuilder, loc: @Location, moduleName, decls: Node) \ + = createNode(loc, "module", values(moduleName, decls)) +fun mkImportName(this: @MyAstBuilder, loc: @Location, alias: StringRef, toImport, decls: Node) \ + = createNode(loc, "importName", values(toImport, decls), alias) +fun mkUsing(this: @MyAstBuilder, loc: @Location, alias: StringRef, usingNode: Node) \ + = createNode(loc, "using", repeat(usingNode, 1), alias) +fun mkPackage(this: @MyAstBuilder, loc: @Location, name: StringRef, children, params, ifClause: Node) \ + = createNode(loc, "package", repeat(children, 1), name) +fun mkDatatype(this: @MyAstBuilder, loc: @Location, name: StringRef, params, underlyingData, ifClause, children: Node) \ + = createNode(loc, "datatype", values(params, underlyingData, ifClause, children), name) +fun mkField(this: @MyAstBuilder, loc: @Location, name: StringRef, typeNode, init: Node): Node \ + = createNode(loc, "field", values(typeNode, init), name) +fun mkConcept(this: @MyAstBuilder, loc: @Location, name, paramName: StringRef, baseConcept, ifClause: Node) \ + = createNode(loc, "concept", values(baseConcept, ifClause), name) +fun mkVar(this: @MyAstBuilder, loc: @Location, name: StringRef, typeNode, init: Node) \ + = createNode(loc, "var", values(typeNode, init), name) +fun mkParameter(this: @MyAstBuilder, loc: @Location, name: StringRef, typeNode, init: Node) \ + = createNode(loc, "param", values(typeNode, init), name) +fun mkFun(this: @MyAstBuilder, loc: @Location, name: StringRef, formals, retType, body, bodyExp, ifClause: Node) \ + = createNode(loc, "fun", values(formals, retType, body, bodyExp, ifClause), name) + +fun mkParenthesisExpr(this: @MyAstBuilder, expr: Node) \ + = createNode((expr toImpl).loc, "paren", repeat(expr, 1)) +fun mkPostfixOp(this: @MyAstBuilder, loc: @Location, base: Node, op: StringRef) \ + = createNode(loc, "postfix", values(base, createNode(loc, op))) +fun mkInfixOp(this: @MyAstBuilder, loc: @Location, lhs: Node, op: StringRef, rhs: Node) \ + = createNode(loc, "infix", values(lhs, createNode(loc, op), rhs)) +fun mkPrefixOp(this: @MyAstBuilder, loc: @Location, op: StringRef, base: Node) \ + = createNode(loc, "prefix", values(createNode(loc, op), base)) +fun mkIdentifier(this: @MyAstBuilder, loc: @Location, id: StringRef) \ + = createNode(loc, id) +fun mkCompoundExpr(this: @MyAstBuilder, loc: @Location, base: Node, id: StringRef) \ + = createNode(loc, "compoundExpr", values(base, createNode(loc, id))) +fun mkStarExpr(this: @MyAstBuilder, loc: @Location, base: Node, id: StringRef) \ + = createNode(loc, "starExpr", values(base, createNode(loc, id))) +fun mkDotExpr(this: @MyAstBuilder, loc: @Location, base: Node, id: StringRef) \ + = createNode(loc, "dotExpr", values(base, createNode(loc, id))) +fun mkFunAppExpr(this: @MyAstBuilder, loc: @Location, base, args: Node) \ + = createNode(loc, "funApp", values(base, args)) +fun mkLambdaExpr(this: @MyAstBuilder, loc: @Location, closureParams, formals, retType, body, bodyExpr: Node) \ + = createNode(loc, "lambda", values(closureParams, formals, retType, body, bodyExpr)) +fun mkNullLiteral(this: @MyAstBuilder, loc: @Location) \ + = createNode(loc, "null") +fun mkBoolLiteral(this: @MyAstBuilder, loc: @Location, val: Bool) \ + = createNode(loc, "boolLit") +fun mkIntLiteral(this: @MyAstBuilder, loc: @Location, val: Int) \ + = createNode(loc, "intLit") +fun mkUIntLiteral(this: @MyAstBuilder, loc: @Location, val: UInt) \ + = createNode(loc, "uintLit") +fun mkLongLiteral(this: @MyAstBuilder, loc: @Location, val: Long) \ + = createNode(loc, "longLit") +fun mkULongLiteral(this: @MyAstBuilder, loc: @Location, val: ULong) \ + = createNode(loc, "ulongLit") +fun mkFloatLiteral(this: @MyAstBuilder, loc: @Location, val: Float) \ + = createNode(loc, "floatLit") +fun mkDoubleLiteral(this: @MyAstBuilder, loc: @Location, val: Double) \ + = createNode(loc, "doubleLit") +fun mkCharLiteral(this: @MyAstBuilder, loc: @Location, val: Char) \ + = createNode(loc, "charLit") +fun mkStringLiteral(this: @MyAstBuilder, loc: @Location, data: StringRef) \ + = createNode(loc, "stringLit") + +fun mkBlockStmt(this: @MyAstBuilder, loc: @Location, stmts: Node) \ + = createNode(loc, "block", repeat(stmts, 1)) +fun mkIfStmt(this: @MyAstBuilder, loc: @Location, expr, thenClause, elseClause: Node) \ + = createNode(loc, "if", values(expr, thenClause, elseClause)) +fun mkForStmt(this: @MyAstBuilder, loc: @Location, id: StringRef, typeNode, range, action: Node) \ + = createNode(loc, "for", values(createNode(loc, id), typeNode, range, action)) +fun mkWhileStmt(this: @MyAstBuilder, loc: @Location, expr, stepAction, body: Node) \ + = createNode(loc, "while", values(expr, stepAction, body)) +fun mkBreakStmt(this: @MyAstBuilder, loc: @Location) \ + = createNode(loc, "break") +fun mkContinueStmt(this: @MyAstBuilder, loc: @Location) \ + = createNode(loc, "continue") +fun mkReturnStmt(this: @MyAstBuilder, loc: @Location, expr: Node) \ + = createNode(loc, "return", repeat(expr, 1)) + +fun sprMain + if programArgs.size() < 2 + return + var n = programArgs(1) asInt + + 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() + else if n == 5 ; test5() + else if n == 6 ; test6() + else if n == 7 ; test7() + +fun doScan(charSource: CharSource) + var loc = mkLocation() + var errorReporter: ConsoleErrorReporter + var scanner = SparrowScanner(charSource, mkErrorReporter(errorReporter), loc) + + var token: Token + while true + token = (scanner++) + cout << token.type.data << " - '" << token.data << "' - " << token.loc << endl + if token.type == tkEND + break + +fun doParse(charSource: CharSource) + var loc = mkLocation() + var astBuilder: MyAstBuilder + var errorReporter: ConsoleErrorReporter + var parser: @ParserContext = createParser(charSource, loc, mkAstBuilder(astBuilder), mkErrorReporter(errorReporter)) + + var rootNode = parser parseModule + cout << (rootNode toImpl) << endl + + parser destroyParser + +fun test2 + 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 + 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 + var code = ". .. ... !!! .* # !@#$%^&*-+=" + doScan(mkCharSource(StringCharSource(code))) +/*<<>>*/ + +fun test5 + var code = "\"abcd\" 'a' <{abc\\nop}>" + doScan(mkCharSource(StringCharSource(code))) +/*<<>>*/ + +//<<) +>>>*/ + +fun test7 + 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))))) +>>>*/ + +//<<"; 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..cae9d08f 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,13 @@ 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 @@ -103,20 +83,15 @@ Found person: leda 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..7756f9f1 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,27 @@ 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..4d98c55c 100644 --- a/tests/Logic/Solar.spr +++ b/tests/Logic/Solar.spr @@ -1,8 +1,7 @@ //!! -import logic.predicates; +import logic.predicates //import assert; - fun orbits(a, b: @LStr) = ( a /=/ "Mercury" && b /=/ "Sun" || a /=/ "Venus" && b /=/ "Sun" @@ -11,38 +10,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/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 24d1618d..4897633d 100644 --- a/tests/PerfTests/FibRanges/fib_op.spr +++ b/tests/PerfTests/FibRanges/fib_op.spr @@ -1,27 +1,23 @@ // !! -O2 -import std.algorithms; -import std.rMath; -import std.tuple; +import std.algorithms +import std.rMath +import std.tuple -fun fib(n: Int): Int { - var p: Int*Int = 0 ~ 1; // Last 2 entries +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; - + p = p.v2 ~ (p.v1 + p.v2) + return p.v2 +fun isOdd x = x%2 != 0 fun sprMain -{ if ( programArgs.size() < 2 ) - return; - var n = programArgs(1) asInt; + return + var n = programArgs(1) asInt - var res = 1...n map \fib filter \isOdd map \sqr sum; - cout << res << endl; -} + var res = 1...n map \fib filter \isOdd map \sqr sum + cout << res << endl /*-<<>>*/ diff --git a/tests/PerfTests/FibRanges/fib_op_base.spr b/tests/PerfTests/FibRanges/fib_op_base.spr index 5957d714..0e95ae80 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/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 9348dc35..8455c906 100644 --- a/tests/PerfTests/Hash/TestHashPerf.spr +++ b/tests/PerfTests/Hash/TestHashPerf.spr @@ -1,199 +1,157 @@ //! ! -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 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) + ; /*-<<>>*/ diff --git a/tests/PerfTests/LazyRanges/lazy_ranges.spr b/tests/PerfTests/LazyRanges/lazy_ranges.spr index 7e296094..a3889607 100644 --- a/tests/PerfTests/LazyRanges/lazy_ranges.spr +++ b/tests/PerfTests/LazyRanges/lazy_ranges.spr @@ -1,21 +1,19 @@ //!! -O2 -import std.algorithms; -import std.ranges; -import std.rMath; +import std.algorithms +import std.ranges +import std.rMath -fun nextCollatz n = ife(n%2==0, n/2, n*3+1); -fun collatzSeq(n: ULong) = generate1(n, \nextCollatz) takeUntil (fun n = n==1); +fun nextCollatz n = ife(n%2==0, n/2, n*3+1) +fun collatzSeq(n: ULong) = generate1(n, \nextCollatz) takeUntil (fun n = n==1) fun sprMain -{ if ( programArgs.size() < 2 ) - return; - var n = programArgs(1) asInt; + return + var n = programArgs(1) asInt - var res = (1..) map \collatzSeq map \rangeSize takeWhile (fun.{n} s = s < n) rootMeanSquare; - cout << res << endl; -} + var res = (1..) map \collatzSeq map \rangeSize takeWhile (fun.{n} s = s < n) rootMeanSquare + cout << res << endl /*<< 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 ()(this: Greater, x: Int, y: Int): Bool { return x > 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; - - while i < size ; i = i + 1; - ptr.advance(i).value() = i; + var ptr = allocRawPtr(Int, size) + var ptrEnd = ptr.advance(DiffType(size)) + var i = 0 - return ContiguousMemoryRange(Int)(ptr, ptrEnd); -} + while i < size ; i = i + 1 + ptr.advance(i).value() = i + 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 +179,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 +207,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,107 @@ 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..31c43955 100644 --- a/tests/StdLib/AlgorithmsTest4.spr +++ b/tests/StdLib/AlgorithmsTest4.spr @@ -1,134 +1,116 @@ //!! -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..9ba1dbad 100644 --- a/tests/StdLib/CheckTest.spr +++ b/tests/StdLib/CheckTest.spr @@ -1,62 +1,57 @@ //!! -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 +250,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..2b4dda7c 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 test10() -{ - var li: List(MyObj) = createRangeAscending(4); + var li: List(MyObj) = createRangeAscending(4) - li.clear(); - printSizeInfo(li); - li.pushBack(MyObj(42)); - li.pushBack(MyObj(43)); - printSizeInfo(li); - printList(li); + li.clear() + printSizeInfo(li) + li.pushBack(MyObj(42)) + li.pushBack(MyObj(43)) + printSizeInfo(li) + printList(li) - var lili: List(MyObj); + var lili: List(MyObj) - lili.clear(); - printSizeInfo(lili); -} + lili.clear() + printSizeInfo(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 test13() -{ - var li: List(MyObj) = createRangeAscending(4); - var r = li.all(); - - li.insertBefore(createRangeAscending(2), li.all()); - printSizeInfo(li); - printList(li); - li.insertAfter(createRangeAscending(2), li.all()); - printSizeInfo(li); - printList(li); - li.insertBefore(createRangeAscending(1), li.all()); - printSizeInfo(li); - printList(li); - li.insertAfter(createRangeAscending(1), li.all()); - printSizeInfo(li); - printList(li); - li.insertBefore(createRangeAscending(0), li.all()); - printSizeInfo(li); - printList(li); - li.insertAfter(createRangeAscending(0), li.all()); - printSizeInfo(li); - printList(li); - r = li.all(); - r.popFront(); - r.popFront(); - li.insertBefore(createRangeAscending(2), r); - printSizeInfo(li); - printList(li); - r = li.all(); - r.popBack(); - r.popBack(); - li.insertAfter(createRangeAscending(2), r); - printSizeInfo(li); - printList(li); - r = li.all(); - r.popFront(); - r.popFront(); - li.insertBefore(createRangeAscending(1), r); - printSizeInfo(li); - printList(li); - r = li.all(); - r.popBack(); - r.popBack(); - li.insertAfter(createRangeAscending(1), r); - printSizeInfo(li); - printList(li); - r = li.all(); - r.popFront(); - r.popFront(); - li.insertBefore(createRangeAscending(0), r); - printSizeInfo(li); - printList(li); - r = li.all(); - r.popBack(); - r.popBack(); - li.insertAfter(createRangeAscending(0), r); - printSizeInfo(li); - printList(li); -} + var li: List(MyObj) = createRangeAscending(4) + var r = li.all() + + li.insertBefore(createRangeAscending(2), li.all()) + printSizeInfo(li) + printList(li) + li.insertAfter(createRangeAscending(2), li.all()) + printSizeInfo(li) + printList(li) + li.insertBefore(createRangeAscending(1), li.all()) + printSizeInfo(li) + printList(li) + li.insertAfter(createRangeAscending(1), li.all()) + printSizeInfo(li) + printList(li) + li.insertBefore(createRangeAscending(0), li.all()) + printSizeInfo(li) + printList(li) + li.insertAfter(createRangeAscending(0), li.all()) + printSizeInfo(li) + printList(li) + r = li.all() + r.popFront() + r.popFront() + li.insertBefore(createRangeAscending(2), r) + printSizeInfo(li) + printList(li) + r = li.all() + r.popBack() + r.popBack() + li.insertAfter(createRangeAscending(2), r) + printSizeInfo(li) + printList(li) + r = li.all() + r.popFront() + r.popFront() + li.insertBefore(createRangeAscending(1), r) + printSizeInfo(li) + printList(li) + r = li.all() + r.popBack() + r.popBack() + li.insertAfter(createRangeAscending(1), r) + printSizeInfo(li) + printList(li) + r = li.all() + r.popFront() + r.popFront() + li.insertBefore(createRangeAscending(0), r) + printSizeInfo(li) + printList(li) + r = li.all() + r.popBack() + r.popBack() + li.insertAfter(createRangeAscending(0), 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 test15() -{ - var li: List(MyObj); - - li.remove(MyObj(42)); - printSizeInfo(li); - li.pushBack(MyObj(42)); - li.remove(MyObj(42)); - printSizeInfo(li); - li.pushBack(MyObj(42)); - li.pushBack(MyObj(42)); - li.pushBack(MyObj(42)); - li.remove(MyObj(42)); - printSizeInfo(li); - li.assign(createRangeAscending(6)); - li.remove(MyObj(42)); - printSizeInfo(li); - printList(li); - li.clear(); - li.pushBack(MyObj(0)); - li.pushBack(MyObj(1)); - li.pushBack(MyObj(42)); - li.pushBack(MyObj(3)); - li.pushBack(MyObj(42)); - li.pushBack(MyObj(5)); - li.remove(MyObj(42)); - printSizeInfo(li); - printList(li); - li.clear(); - li.pushBack(MyObj(0)); - li.pushBack(MyObj(42)); - li.pushBack(MyObj(42)); - li.pushBack(MyObj(3)); - li.pushBack(MyObj(42)); - li.pushBack(MyObj(42)); - li.pushBack(MyObj(6)); - li.pushBack(MyObj(42)); - li.remove(MyObj(42)); - printSizeInfo(li); - printList(li); -} + var li: List(MyObj) + + li.remove(MyObj(42)) + printSizeInfo(li) + li.pushBack(MyObj(42)) + li.remove(MyObj(42)) + printSizeInfo(li) + li.pushBack(MyObj(42)) + li.pushBack(MyObj(42)) + li.pushBack(MyObj(42)) + li.remove(MyObj(42)) + printSizeInfo(li) + li.assign(createRangeAscending(6)) + li.remove(MyObj(42)) + printSizeInfo(li) + printList(li) + li.clear() + li.pushBack(MyObj(0)) + li.pushBack(MyObj(1)) + li.pushBack(MyObj(42)) + li.pushBack(MyObj(3)) + li.pushBack(MyObj(42)) + li.pushBack(MyObj(5)) + li.remove(MyObj(42)) + printSizeInfo(li) + printList(li) + li.clear() + li.pushBack(MyObj(0)) + li.pushBack(MyObj(42)) + li.pushBack(MyObj(42)) + li.pushBack(MyObj(3)) + li.pushBack(MyObj(42)) + li.pushBack(MyObj(42)) + li.pushBack(MyObj(6)) + li.pushBack(MyObj(42)) + li.remove(MyObj(42)) + 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 test20() { // var li1: List(MyObj); @@ -958,29 +908,27 @@ true >>>*/ 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 test5() -{ - var obj: @MyObj = newObj(42); - var p = Ptr(MyObj)(obj); - var sp = SharedPtr(MyObj)(obj); + var obj: @MyObj = newObj(42) + var p = Ptr(MyObj)(obj) + var sp = SharedPtr(MyObj)(obj) - cout << p.x << endl; - cout << sp.x << endl; + cout << p.x << endl + cout << sp.x << endl - p.print(); - p.print("some argument"); + p.print() + p.print("some argument") - var pp: Ptr(Foo) = new(Foo, 13); - cout << pp.obj.x << endl; + var pp: Ptr(Foo) = new(Foo, 13) + cout << pp.obj.x << endl -} /*<<>>*/ - fun test6() -{ - var obj: @MyObj = newObj(42); - var p = Ptr(MyObj)(obj); - cout << p.x << endl; - p delete; - - var obj2: @MyObj = newObj(55); - var sp = SharedPtr(MyObj)(obj2); - cout << sp.x << endl; - sp delete; - cout << "---" << endl; -} + var obj: @MyObj = newObj(42) + var p = Ptr(MyObj)(obj) + cout << p.x << endl + p delete + + var obj2: @MyObj = newObj(55) + var sp = SharedPtr(MyObj)(obj2) + cout << sp.x << endl + sp delete + cout << "---" << 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; - - return ContiguousMemoryRange(Int)(ptr, ptrEnd); -} + ptr.advance(i).value() = i + 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 +44,263 @@ 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 +308,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 +325,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
 
@@ -364,7 +345,6 @@ datatype Data
 fun >>(this: @Data, os: @OutStream)
     os << 'Data(' << x << ')\n'
 
-
 fun ctor(this: @Data, other: Data)
     copyCtorCnt++
 
@@ -376,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/tests/tests.in b/tests/tests.in
index 836c624b..caa22fb2 100644
--- a/tests/tests.in
+++ b/tests/tests.in
@@ -165,5 +165,7 @@ Frontend/Identifiers.spr:               Frontend - identifiers
 Frontend/Operators.spr:                 Frontend - operators
 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
 
-# ../src/SparrowFrontend/Grammar/parserTest.spr:  Sparrow parser test
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/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/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()
+
diff --git a/tools/formatDetails/astNodes.spr b/tools/formatDetails/astNodes.spr
new file mode 100644
index 00000000..f925dd3c
--- /dev/null
+++ b/tools/formatDetails/astNodes.spr
@@ -0,0 +1,164 @@
+//! 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
+
+// from SparrowFrontend/Grammar
+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
+    loc: Location
+    name: String
+    children: Vector(Node)
+    parent: Node = Node()
+
+fun ctor(this: @AstNodeImpl)
+    this.kind ctor nkNULL
+fun ctor(this: @AstNodeImpl, l: Location, kind: NodeKind)
+    this.kind ctor kind
+    this.loc ctor l
+    // cout << "Parsed: " << kind << endl
+fun ctor(this: @AstNodeImpl, l: Location, kind: NodeKind, r: Range)
+    this.kind ctor kind
+    this.loc ctor l
+    this.children ctor r
+    // cout << "Parsed: " << kind << endl
+fun ctor(this: @AstNodeImpl, l: Location, kind: NodeKind, r: Range, name: StringRef)
+    this.kind ctor kind
+    this.loc ctor l
+    this.name ctor name
+    this.children ctor r
+    // cout << "Parsed: " << kind << endl
+fun ctor(this: @AstNodeImpl, l: Location, kind: NodeKind, name: StringRef)
+    this.kind ctor kind
+    this.loc ctor l
+    this.name ctor name
+    // cout << "Parsed: " << kind << endl
+
+fun _toImpl(n: Node): @AstNodeImpl = ife(n.data.data !== null, reinterpretCast(@AstNodeImpl, n.data.data), _nullAstNodeImpl)
+fun _toNode(impl: @AstNodeImpl)    = Node(UntypedPtr(reinterpretCast(@Byte, impl)))
+
+fun isSet(this: Node)                   = this.data.data !== null
+fun isNull(this: Node)                  = this.data.data === null
+fun kind(this: Node): NodeKind          = _toImpl(this).kind
+fun location(this: Node): Location      = _toImpl(this).loc
+fun name(this: Node): StringRef         = _toImpl(this).name.all
+fun parent(this: Node): Node            = _toImpl(this).parent
+fun setParent(this: Node, parent: Node) { _toImpl(this).parent = parent }
+fun children(this: Node)                = _toImpl(this).children.all
+
+fun >> (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/consoleErrorReporter.spr b/tools/formatDetails/consoleErrorReporter.spr
new file mode 100644
index 00000000..3df3b9aa
--- /dev/null
+++ b/tools/formatDetails/consoleErrorReporter.spr
@@ -0,0 +1,44 @@
+//! 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 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 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/formatDetails/fileCharSourceKeepContent.spr b/tools/formatDetails/fileCharSourceKeepContent.spr
new file mode 100644
index 00000000..63a54515
--- /dev/null
+++ b/tools/formatDetails/fileCharSourceKeepContent.spr
@@ -0,0 +1,84 @@
+//! 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 consoleErrorReporter
+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
+    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)
+    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..f5397191
--- /dev/null
+++ b/tools/formatDetails/nodeKinds.spr
@@ -0,0 +1,100 @@
+//! Defines the node kinds we extract from Sparrow parser.
+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..e7a34458
--- /dev/null
+++ b/tools/formatDetails/sourceData.spr
@@ -0,0 +1,98 @@
+//! Defines the SourceData datatype and a method for loading it from a given source file.
+module formatTool.formatDetails.sourceData
+
+import tokenData, tokenDataSource, astNodes, consoleErrorReporter
+import node
+import std.string, std.sharedPtr
+
+//! 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
+
+    //! 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
+fun load(res: @SourceData, filename: StringRef)
+    res.filename = filename
+
+    // Open the source filename & read the tokens
+    res._src = mkShared(TokenDataSource, filename)
+    res.tokens assign res._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
+        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
+        // 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..cac39691
--- /dev/null
+++ b/tools/formatDetails/tokenData.spr
@@ -0,0 +1,19 @@
+//! Defines the TokenData and TokenVector datatypes
+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
+    canFormat: Bool = true
+
+//! 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..2b02f750
--- /dev/null
+++ b/tools/formatDetails/tokenDataSource.spr
@@ -0,0 +1,64 @@
+//! Defines the TokenDataSource datatype, used in loading source content
+module formatTool.formatDetails.tokenDataSource
+
+import consoleErrorReporter, 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: ConsoleErrorReporter
+
+    //! 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: ConsoleErrorReporter
+    var fileCharSource = FileCharSource(filename)
+    var parser: @ParserContext = createParser(mkCharSource(fileCharSource), loc, mkAstBuilder(astBuilder), mkErrorReporter(errorReporter))
+
+    var rootNode = parser parseModule
+    return rootNode
diff --git a/tools/formatTool.spr b/tools/formatTool.spr
new file mode 100644
index 00000000..d356fd59
--- /dev/null
+++ b/tools/formatTool.spr
@@ -0,0 +1,133 @@
+//!! -I../src/SparrowFrontend/Grammar
+import formatDetails.sourceData
+import transforms.emptyTransform, transforms.defaultFormat, transforms.refToMut
+import transforms.useLayout, transforms.removeEolSemicolons, transforms.removeExtraSpaces
+import checks.returnStmt, checks.moduleName
+
+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
+        _printArgsError('not enough arguments')
+    var filename = ''
+
+    var inPlace = false
+    var doPrintAst = false
+    var transforms, checks: Transforms
+
+    for i=1..programArgs.size
+        var arg = programArgs(i)
+
+        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'
+            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
+            _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')
+
+    // Load the source data
+    var sourceData: SourceData
+    sourceData load filename
+
+    // 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)
+
+    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
+    cout << 'Usage:\n'
+    cout << '  ' << programArgs(0) << ' -i -format \n\n'
+    exit(1)
+
+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
+        reportError(Location(), toString('cannot open output file: ', filename).asStringRef)
+
+    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
+
+// << 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..c6514c65
--- /dev/null
+++ b/tools/transforms/removeEolSemicolons.spr
@@ -0,0 +1,46 @@
+//! Transformation that removes semicolons at the end of the line
+module formatTool.transforms.removeEolSemicolons
+
+import utils
+import formatDetails.sourceData
+
+//! Remove end-of-line semicolons that we don't need
+fun removeEolSemicolons(src: @SourceData)
+    src _removePass1
+    src _removePass2
+
+//! Remove all the semicolons at the end of line, if:
+//!     - indent of prev line is the same as cur line
+fun _removePass1(src: @SourceData)
+    var layout: LayoutHelper
+    for i = 0..Int(src.tokens.size)
+        var tok: @TokenData = src.tokens(i)
+        var remaining = src.tokens.subrange(i+1)
+
+        layout onToken tok
+
+        var canDelete = tok.canFormat && tok.type == tkSEMICOLON && nextIsNewline(remaining)
+
+        canDelete = canDelete && layout.prevLineIndent == layout.curLineIndent
+
+        if canDelete
+            clearTokenLine(i, src.tokens)
+
+//! Remove all the semicolons at the end of line, if:
+//!     - indent of next line is the same as cur line
+//! This pass is used to clear any semicolons that are followed by a non-semicolon line of the same
+//! indent
+fun _removePass2(src: @SourceData)
+    var layout: LayoutHelper
+    for i = 0..Int(src.tokens.size)
+        var tok: @TokenData = src.tokens(i)
+        var remaining = src.tokens.subrange(i+1)
+
+        layout onToken tok
+
+        var canDelete = tok.canFormat && tok.type == tkSEMICOLON && nextIsNewline(remaining)
+
+        canDelete = canDelete && layout.nextLineIndent(remaining) == layout.curLineIndent
+
+        if canDelete
+            clearTokenLine(i, src.tokens)
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/useLayout.spr b/tools/transforms/useLayout.spr
new file mode 100644
index 00000000..088c5dd2
--- /dev/null
+++ b/tools/transforms/useLayout.spr
@@ -0,0 +1,60 @@
+//! 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 layout: LayoutHelper
+
+    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
+        layout onToken tok
+
+        // 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) \
+                && layout.nextLineIndent(remaining) > layout.curLineIndent
+            curlyStack += OpenCurlyInfo(i, layout.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) \
+                && layout.prevLineIndent > layout.curLineIndent
+            if canRemove
+                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.
+[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..9095246a
--- /dev/null
+++ b/tools/transforms/utils.spr
@@ -0,0 +1,83 @@
+//! 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, ignoreComment: Bool = true): Bool
+    for tok: @TokenData = remaining
+        var tk = tok.type
+        if tk == tkEOL || tk == tkEND
+            return true
+        if tk == tkWHITESPACE
+            continue
+        else if ignoreComment && tk == tkCOMMENT
+            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
+