# HG changeset patch # User Michael Pavone # Date 1429164204 25200 # Node ID 3b023e5a0b42adb7e04afb6fefd0e5d0101d055c # Parent 0b4d4f06bf91610da579bde0613cea85f100a882 llcompile almost working well enough for fib sample diff -r 0b4d4f06bf91 -r 3b023e5a0b42 modules/il.tp --- a/modules/il.tp Wed Apr 15 21:14:44 2015 -0700 +++ b/modules/il.tp Wed Apr 15 23:03:24 2015 -0700 @@ -452,7 +452,7 @@ } skipIf:else <- :_cond _toskip :_else { #{ - opcode <- { _skipif } + opcode <- { _skipifelse } toskip <- { _toskip } else <- { _else } cond <- { _cond } @@ -743,6 +743,15 @@ backend label } outprog <- #[] + //translate main first so it's at the start of the output + prepped ifget: "main" :instarr { + outprog append: (labels get: "main" else: { false }) + foreach: instarr :_ inst { + print: "Translating: " . inst . "\n" + backend convertIL: inst to: outprog withLabels: labels + } + } else: {} + foreach: prepped :name instarr { outprog append: (labels get: name else: { false }) foreach: instarr :_ inst { diff -r 0b4d4f06bf91 -r 3b023e5a0b42 modules/llcompile.tp --- a/modules/llcompile.tp Wed Apr 15 21:14:44 2015 -0700 +++ b/modules/llcompile.tp Wed Apr 15 23:03:24 2015 -0700 @@ -221,7 +221,7 @@ _compileExpr: expr syms: syms ilfun: ilf dest: asn } block <- ilf popBlock - ilf add: (il skipIf: (il neq) block) + ilf add: (il skipIf: (il eq) block) dest value: :d { d } none: { _compileError: "Something went wrong" } } } @@ -273,7 +273,7 @@ _compileExpr: expr syms: syms ilfun: ilf dest: (option none) } elseblock <- ilf popBlock - ilf add: (il skipIf: (il neq) block else: elseblock) + ilf add: (il skipIf: (il eq) block else: elseblock) dest value: :d { d } none: { _compileError: "Something went wrong" } } }