Created
May 3, 2018 17:08
-
-
Save vollmerm/b2a0a22dd65832466871149dd33edcf6 to your computer and use it in GitHub Desktop.
This file has been truncated, but you can view the full file.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
! Responding to env Var: DEBUG=5 | |
! We set DEBUG based on command-line verbose arg: 5 | |
Parsing text: "#lang gibbon\n\n(data Tree\n (Null)\n (Leaf Int)\n (Node Int Tree Tree))\n\n;; (define (buildtree (n : Int)) : Tree\n;; (helper 0 (- n 1)))\n\n(define (helper (s : Int) (e : Int)) : Tree\n (if (< e s)\n (Null)\n (if (= s e)\n (Leaf s)\n (let ((m : Int (+ (div (- e s) 2) s)))\n (Node m (helper s (- m 1))\n (helper (+ m 1) e))))))\n\n(define (copy-tree (tr : Tree)) : Tree\n (case tr\n ((Null) (Null))\n ((Leaf n) (Leaf n))\n ((Node n1 l r) (Node n1 (copy-tree l) (copy-tree r)))))\n\n(define (sum-tree (tr : Tree)) : Int\n (case tr\n ((Null) 0)\n ((Leaf n) n)\n ((Node n l r) (+ n (+ (sum-tree l) (sum-tree r))))))\n\n(define (tree-insert (tr : Tree) (n : Int)) : Tree\n (case tr\n ((Null) (Leaf n))\n ((Leaf n1) (if (< n n1)\n (Node n1 (Leaf n) (Null))\n (Node n1 (Null) (Leaf n))))\n ((Node n1 l r) (if (> n1 n)\n (Node n1 (copy-tree l) (tree-insert r n))\n (Node n1 (tree-insert l n) (copy-tree r))))))\n\n(let ((m : Int 25))\n (let((tr0 : Tree (helper 1 2)))\n (let ((tr1 : Tree (time (tree-insert tr0 1))))\n (sum-tree tr1))))\n" | |
Result of parsing: | |
[compiler] pipeline starting, parsed program: | |
================================================================================ | |
Prog {ddefs = [("Tree", | |
DDef {tyName = "Tree", | |
dataCons = [("Null", []),("Leaf", [(False, IntTy)]), | |
("Node", | |
[(False, IntTy),(False, PackedTy "Tree" ()), | |
(False, PackedTy "Tree" ())])]})], | |
fundefs = [("tree-insert", | |
FunDef {funName = "tree-insert", | |
funArg = ("tr_n1", ProdTy [PackedTy "Tree" (),IntTy]), | |
funRetTy = PackedTy "Tree" (), | |
funBody = CaseE (ProjE 0 (VarE "tr_n1")) | |
[("Null", | |
[], | |
DataConE () "Leaf" [ProjE 1 (VarE "tr_n1")]), | |
("Leaf", | |
[("n1", ())], | |
IfE (PrimAppE LtP [ProjE 1 (VarE "tr_n1"),VarE "n1"]) | |
(DataConE () | |
"Node" | |
[VarE "n1", | |
DataConE () | |
"Leaf" | |
[ProjE 1 (VarE "tr_n1")], | |
DataConE () "Null" []]) | |
(DataConE () | |
"Node" | |
[VarE "n1",DataConE () "Null" [], | |
DataConE () | |
"Leaf" | |
[ProjE 1 (VarE "tr_n1")]])), | |
("Node", | |
[("n1", ()),("l", ()),("r", ())], | |
IfE (PrimAppE GtP [VarE "n1",ProjE 1 (VarE "tr_n1")]) | |
(DataConE () | |
"Node" | |
[VarE "n1",AppE "copy-tree" [] (VarE "l"), | |
AppE "tree-insert" | |
[] | |
(MkProdE [VarE "r", | |
ProjE 1 (VarE "tr_n1")])]) | |
(DataConE () | |
"Node" | |
[VarE "n1", | |
AppE "tree-insert" | |
[] | |
(MkProdE [VarE "l", | |
ProjE 1 (VarE "tr_n1")]), | |
AppE "copy-tree" [] (VarE "r")]))]}), | |
("sum-tree", | |
FunDef {funName = "sum-tree", | |
funArg = ("tr", PackedTy "Tree" ()), | |
funRetTy = IntTy, | |
funBody = CaseE (VarE "tr") | |
[("Null", [], LitE 0),("Leaf", [("n", ())], VarE "n"), | |
("Node", | |
[("n", ()),("l", ()),("r", ())], | |
PrimAppE AddP | |
[VarE "n", | |
PrimAppE AddP | |
[AppE "sum-tree" [] (VarE "l"), | |
AppE "sum-tree" [] (VarE "r")]])]}), | |
("copy-tree", | |
FunDef {funName = "copy-tree", | |
funArg = ("tr", PackedTy "Tree" ()), | |
funRetTy = PackedTy "Tree" (), | |
funBody = CaseE (VarE "tr") | |
[("Null", [], DataConE () "Null" []), | |
("Leaf", [("n", ())], DataConE () "Leaf" [VarE "n"]), | |
("Node", | |
[("n1", ()),("l", ()),("r", ())], | |
DataConE () | |
"Node" | |
[VarE "n1",AppE "copy-tree" [] (VarE "l"), | |
AppE "copy-tree" [] (VarE "r")])]}), | |
("helper", | |
FunDef {funName = "helper", | |
funArg = ("s_e0", ProdTy [IntTy,IntTy]), | |
funRetTy = PackedTy "Tree" (), | |
funBody = IfE (PrimAppE LtP | |
[ProjE 1 (VarE "s_e0"),ProjE 0 (VarE "s_e0")]) | |
(DataConE () "Null" []) | |
(IfE (PrimAppE EqIntP | |
[ProjE 0 (VarE "s_e0"), | |
ProjE 1 (VarE "s_e0")]) | |
(DataConE () "Leaf" [ProjE 0 (VarE "s_e0")]) | |
(LetE ("m", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[PrimAppE DivP | |
[PrimAppE SubP | |
[ProjE 1 | |
(VarE "s_e0"), | |
ProjE 0 | |
(VarE "s_e0")], | |
LitE 2], | |
ProjE 0 (VarE "s_e0")]) | |
(DataConE () | |
"Node" | |
[VarE "m", | |
AppE "helper" | |
[] | |
(MkProdE [ProjE 0 (VarE "s_e0"), | |
PrimAppE SubP | |
[VarE "m", | |
LitE 1]]), | |
AppE "helper" | |
[] | |
(MkProdE [PrimAppE AddP | |
[VarE "m", | |
LitE 1], | |
ProjE 1 | |
(VarE "s_e0")])])))})], | |
mainExp = Just LetE ("m", [], IntTy, LitE 25) | |
(LetE ("tr0", | |
[], | |
PackedTy "Tree" (), | |
AppE "helper" [] (MkProdE [LitE 1,LitE 2])) | |
(LetE ("tr1", | |
[], | |
PackedTy "Tree" (), | |
TimeIt (AppE "tree-insert" [] (MkProdE [VarE "tr0",LitE 1])) | |
(PackedTy "DUMMY_TY" ()) | |
False) | |
(AppE "sum-tree" [] (VarE "tr1"))))} | |
[eval] Init prog evaluated to: 4 | |
[compiler] Running pass, typecheck | |
Pass output: | |
================================================================================ | |
Prog {ddefs = [("Tree", | |
DDef {tyName = "Tree", | |
dataCons = [("Null", []),("Leaf", [(False, IntTy)]), | |
("Node", | |
[(False, IntTy),(False, PackedTy "Tree" ()), | |
(False, PackedTy "Tree" ())])]})], | |
fundefs = [("tree-insert", | |
FunDef {funName = "tree-insert", | |
funArg = ("tr_n1", ProdTy [PackedTy "Tree" (),IntTy]), | |
funRetTy = PackedTy "Tree" (), | |
funBody = CaseE (ProjE 0 (VarE "tr_n1")) | |
[("Null", | |
[], | |
DataConE () "Leaf" [ProjE 1 (VarE "tr_n1")]), | |
("Leaf", | |
[("n1", ())], | |
IfE (PrimAppE LtP [ProjE 1 (VarE "tr_n1"),VarE "n1"]) | |
(DataConE () | |
"Node" | |
[VarE "n1", | |
DataConE () | |
"Leaf" | |
[ProjE 1 (VarE "tr_n1")], | |
DataConE () "Null" []]) | |
(DataConE () | |
"Node" | |
[VarE "n1",DataConE () "Null" [], | |
DataConE () | |
"Leaf" | |
[ProjE 1 (VarE "tr_n1")]])), | |
("Node", | |
[("n1", ()),("l", ()),("r", ())], | |
IfE (PrimAppE GtP [VarE "n1",ProjE 1 (VarE "tr_n1")]) | |
(DataConE () | |
"Node" | |
[VarE "n1",AppE "copy-tree" [] (VarE "l"), | |
AppE "tree-insert" | |
[] | |
(MkProdE [VarE "r", | |
ProjE 1 (VarE "tr_n1")])]) | |
(DataConE () | |
"Node" | |
[VarE "n1", | |
AppE "tree-insert" | |
[] | |
(MkProdE [VarE "l", | |
ProjE 1 (VarE "tr_n1")]), | |
AppE "copy-tree" [] (VarE "r")]))]}), | |
("sum-tree", | |
FunDef {funName = "sum-tree", | |
funArg = ("tr", PackedTy "Tree" ()), | |
funRetTy = IntTy, | |
funBody = CaseE (VarE "tr") | |
[("Null", [], LitE 0),("Leaf", [("n", ())], VarE "n"), | |
("Node", | |
[("n", ()),("l", ()),("r", ())], | |
PrimAppE AddP | |
[VarE "n", | |
PrimAppE AddP | |
[AppE "sum-tree" [] (VarE "l"), | |
AppE "sum-tree" [] (VarE "r")]])]}), | |
("copy-tree", | |
FunDef {funName = "copy-tree", | |
funArg = ("tr", PackedTy "Tree" ()), | |
funRetTy = PackedTy "Tree" (), | |
funBody = CaseE (VarE "tr") | |
[("Null", [], DataConE () "Null" []), | |
("Leaf", [("n", ())], DataConE () "Leaf" [VarE "n"]), | |
("Node", | |
[("n1", ()),("l", ()),("r", ())], | |
DataConE () | |
"Node" | |
[VarE "n1",AppE "copy-tree" [] (VarE "l"), | |
AppE "copy-tree" [] (VarE "r")])]}), | |
("helper", | |
FunDef {funName = "helper", | |
funArg = ("s_e0", ProdTy [IntTy,IntTy]), | |
funRetTy = PackedTy "Tree" (), | |
funBody = IfE (PrimAppE LtP | |
[ProjE 1 (VarE "s_e0"),ProjE 0 (VarE "s_e0")]) | |
(DataConE () "Null" []) | |
(IfE (PrimAppE EqIntP | |
[ProjE 0 (VarE "s_e0"), | |
ProjE 1 (VarE "s_e0")]) | |
(DataConE () "Leaf" [ProjE 0 (VarE "s_e0")]) | |
(LetE ("m", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[PrimAppE DivP | |
[PrimAppE SubP | |
[ProjE 1 | |
(VarE "s_e0"), | |
ProjE 0 | |
(VarE "s_e0")], | |
LitE 2], | |
ProjE 0 (VarE "s_e0")]) | |
(DataConE () | |
"Node" | |
[VarE "m", | |
AppE "helper" | |
[] | |
(MkProdE [ProjE 0 (VarE "s_e0"), | |
PrimAppE SubP | |
[VarE "m", | |
LitE 1]]), | |
AppE "helper" | |
[] | |
(MkProdE [PrimAppE AddP | |
[VarE "m", | |
LitE 1], | |
ProjE 1 | |
(VarE "s_e0")])])))})], | |
mainExp = Just LetE ("m", [], IntTy, LitE 25) | |
(LetE ("tr0", | |
[], | |
PackedTy "Tree" (), | |
AppE "helper" [] (MkProdE [LitE 1,LitE 2])) | |
(LetE ("tr1", | |
[], | |
PackedTy "Tree" (), | |
TimeIt (AppE "tree-insert" [] (MkProdE [VarE "tr0",LitE 1])) | |
(PackedTy "DUMMY_TY" ()) | |
False) | |
(AppE "sum-tree" [] (VarE "tr1"))))} | |
[interp] answer was: "4" | |
[compiler] Running pass, freshNames | |
Pass output: | |
================================================================================ | |
Prog {ddefs = [("Tree", | |
DDef {tyName = "Tree", | |
dataCons = [("Null", []),("Leaf", [(False, IntTy)]), | |
("Node", | |
[(False, IntTy),(False, PackedTy "Tree" ()), | |
(False, PackedTy "Tree" ())])]})], | |
fundefs = [("helper", | |
FunDef {funName = "helper", | |
funArg = ("s_e020", ProdTy [IntTy,IntTy]), | |
funRetTy = PackedTy "Tree" (), | |
funBody = IfE (PrimAppE LtP | |
[ProjE 1 (VarE "s_e020"),ProjE 0 (VarE "s_e020")]) | |
(DataConE () "Null" []) | |
(IfE (PrimAppE EqIntP | |
[ProjE 0 (VarE "s_e020"), | |
ProjE 1 (VarE "s_e020")]) | |
(DataConE () "Leaf" [ProjE 0 (VarE "s_e020")]) | |
(LetE ("m21", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[PrimAppE DivP | |
[PrimAppE SubP | |
[ProjE 1 | |
(VarE "s_e020"), | |
ProjE 0 | |
(VarE "s_e020")], | |
LitE 2], | |
ProjE 0 (VarE "s_e020")]) | |
(DataConE () | |
"Node" | |
[VarE "m21", | |
AppE "helper" | |
[] | |
(MkProdE [ProjE 0 | |
(VarE "s_e020"), | |
PrimAppE SubP | |
[VarE "m21", | |
LitE 1]]), | |
AppE "helper" | |
[] | |
(MkProdE [PrimAppE AddP | |
[VarE "m21", | |
LitE 1], | |
ProjE 1 | |
(VarE "s_e020")])])))}), | |
("tree_insert", | |
FunDef {funName = "tree_insert", | |
funArg = ("tr_n15", ProdTy [PackedTy "Tree" (),IntTy]), | |
funRetTy = PackedTy "Tree" (), | |
funBody = CaseE (ProjE 0 (VarE "tr_n15")) | |
[("Null", | |
[], | |
DataConE () "Leaf" [ProjE 1 (VarE "tr_n15")]), | |
("Leaf", | |
[("n16", ())], | |
IfE (PrimAppE LtP [ProjE 1 (VarE "tr_n15"),VarE "n16"]) | |
(DataConE () | |
"Node" | |
[VarE "n16", | |
DataConE () | |
"Leaf" | |
[ProjE 1 (VarE "tr_n15")], | |
DataConE () "Null" []]) | |
(DataConE () | |
"Node" | |
[VarE "n16",DataConE () "Null" [], | |
DataConE () | |
"Leaf" | |
[ProjE 1 (VarE "tr_n15")]])), | |
("Node", | |
[("n17", ()),("l8", ()),("r9", ())], | |
IfE (PrimAppE GtP [VarE "n17",ProjE 1 (VarE "tr_n15")]) | |
(DataConE () | |
"Node" | |
[VarE "n17", | |
AppE "copy_tree" [] (VarE "l8"), | |
AppE "tree_insert" | |
[] | |
(MkProdE [VarE "r9", | |
ProjE 1 | |
(VarE "tr_n15")])]) | |
(DataConE () | |
"Node" | |
[VarE "n17", | |
AppE "tree_insert" | |
[] | |
(MkProdE [VarE "l8", | |
ProjE 1 (VarE "tr_n15")]), | |
AppE "copy_tree" [] (VarE "r9")]))]}), | |
("sum_tree", | |
FunDef {funName = "sum_tree", | |
funArg = ("tr10", PackedTy "Tree" ()), | |
funRetTy = IntTy, | |
funBody = CaseE (VarE "tr10") | |
[("Null", [], LitE 0),("Leaf", [("n11", ())], VarE "n11"), | |
("Node", | |
[("n12", ()),("l13", ()),("r14", ())], | |
PrimAppE AddP | |
[VarE "n12", | |
PrimAppE AddP | |
[AppE "sum_tree" [] (VarE "l13"), | |
AppE "sum_tree" | |
[] | |
(VarE "r14")]])]}), | |
("copy_tree", | |
FunDef {funName = "copy_tree", | |
funArg = ("tr15", PackedTy "Tree" ()), | |
funRetTy = PackedTy "Tree" (), | |
funBody = CaseE (VarE "tr15") | |
[("Null", [], DataConE () "Null" []), | |
("Leaf", [("n16", ())], DataConE () "Leaf" [VarE "n16"]), | |
("Node", | |
[("n117", ()),("l18", ()),("r19", ())], | |
DataConE () | |
"Node" | |
[VarE "n117",AppE "copy_tree" [] (VarE "l18"), | |
AppE "copy_tree" [] (VarE "r19")])]})], | |
mainExp = Just LetE ("m2", [], IntTy, LitE 25) | |
(LetE ("tr03", | |
[], | |
PackedTy "Tree" (), | |
AppE "helper" [] (MkProdE [LitE 1,LitE 2])) | |
(LetE ("tr14", | |
[], | |
PackedTy "Tree" (), | |
TimeIt (AppE "tree_insert" [] (MkProdE [VarE "tr03",LitE 1])) | |
(PackedTy "DUMMY_TY" ()) | |
False) | |
(AppE "sum_tree" [] (VarE "tr14"))))} | |
[interp] answer was: "4" | |
[compiler] Running pass, flatten | |
Pass output: | |
================================================================================ | |
Prog {ddefs = [("Tree", | |
DDef {tyName = "Tree", | |
dataCons = [("Null", []),("Leaf", [(False, IntTy)]), | |
("Node", | |
[(False, IntTy),(False, PackedTy "Tree" ()), | |
(False, PackedTy "Tree" ())])]})], | |
fundefs = [("helper", | |
FunDef {funName = "helper", | |
funArg = ("s_e020", ProdTy [IntTy,IntTy]), | |
funRetTy = PackedTy "Tree" (), | |
funBody = LetE ("fltPrm23", [], IntTy, ProjE 1 (VarE "s_e020")) | |
(LetE ("fltPrm24", [], IntTy, ProjE 0 (VarE "s_e020")) | |
(LetE ("fltIf22", | |
[], | |
BoolTy, | |
PrimAppE LtP | |
[VarE "fltPrm23",VarE "fltPrm24"]) | |
(IfE (VarE "fltIf22") | |
(DataConE () "Null" []) | |
(LetE ("fltPrm26", | |
[], | |
IntTy, | |
ProjE 0 (VarE "s_e020")) | |
(LetE ("fltPrm27", | |
[], | |
IntTy, | |
ProjE 1 (VarE "s_e020")) | |
(LetE ("fltIf25", | |
[], | |
BoolTy, | |
PrimAppE EqIntP | |
[VarE "fltPrm26", | |
VarE "fltPrm27"]) | |
(IfE (VarE "fltIf25") | |
(LetE ("fltPkd28", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(DataConE () | |
"Leaf" | |
[VarE "fltPkd28"])) | |
(LetE ("fltPrm31", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltPrm32", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltPrm30", | |
[], | |
IntTy, | |
PrimAppE SubP | |
[VarE "fltPrm31", | |
VarE "fltPrm32"]) | |
(LetE ("fltPrm29", | |
[], | |
IntTy, | |
PrimAppE DivP | |
[VarE "fltPrm30", | |
LitE 2]) | |
(LetE ("fltPrm33", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("m21", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[VarE "fltPrm29", | |
VarE "fltPrm33"]) | |
(LetE ("fltPrd36", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltPrd37", | |
[], | |
IntTy, | |
PrimAppE SubP | |
[VarE "m21", | |
LitE 1]) | |
(LetE ("fltAp35", | |
[], | |
ProdTy [IntTy, | |
IntTy], | |
MkProdE [VarE "fltPrd36", | |
VarE "fltPrd37"]) | |
(LetE ("fltPkd34", | |
[], | |
PackedTy "Tree" | |
(), | |
AppE "helper" | |
[] | |
(VarE "fltAp35")) | |
(LetE ("fltPrd40", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[VarE "m21", | |
LitE 1]) | |
(LetE ("fltPrd41", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltAp39", | |
[], | |
ProdTy [IntTy, | |
IntTy], | |
MkProdE [VarE "fltPrd40", | |
VarE "fltPrd41"]) | |
(LetE ("fltPkd38", | |
[], | |
PackedTy "Tree" | |
(), | |
AppE "helper" | |
[] | |
(VarE "fltAp39")) | |
(DataConE () | |
"Node" | |
[VarE "m21", | |
VarE "fltPkd34", | |
VarE "fltPkd38"]))))))))))))))))))))))}), | |
("tree_insert", | |
FunDef {funName = "tree_insert", | |
funArg = ("tr_n15", ProdTy [PackedTy "Tree" (),IntTy]), | |
funRetTy = PackedTy "Tree" (), | |
funBody = LetE ("fltCse42", | |
[], | |
PackedTy "Tree" (), | |
ProjE 0 (VarE "tr_n15")) | |
(CaseE (VarE "fltCse42") | |
[("Null", | |
[], | |
LetE ("fltPkd43", | |
[], | |
IntTy, | |
ProjE 1 (VarE "tr_n15")) | |
(DataConE () "Leaf" [VarE "fltPkd43"])), | |
("Leaf", | |
[("n16", ())], | |
LetE ("fltPrm45", | |
[], | |
IntTy, | |
ProjE 1 (VarE "tr_n15")) | |
(LetE ("fltIf44", | |
[], | |
BoolTy, | |
PrimAppE LtP | |
[VarE "fltPrm45",VarE "n16"]) | |
(IfE (VarE "fltIf44") | |
(LetE ("fltPkd47", | |
[], | |
IntTy, | |
ProjE 1 (VarE "tr_n15")) | |
(LetE ("fltPkd46", | |
[], | |
PackedTy "Tree" (), | |
DataConE () | |
"Leaf" | |
[VarE "fltPkd47"]) | |
(LetE ("fltPkd48", | |
[], | |
PackedTy "Tree" | |
(), | |
DataConE () | |
"Null" | |
[]) | |
(DataConE () | |
"Node" | |
[VarE "n16", | |
VarE "fltPkd46", | |
VarE "fltPkd48"])))) | |
(LetE ("fltPkd49", | |
[], | |
PackedTy "Tree" (), | |
DataConE () "Null" []) | |
(LetE ("fltPkd51", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd50", | |
[], | |
PackedTy "Tree" | |
(), | |
DataConE () | |
"Leaf" | |
[VarE "fltPkd51"]) | |
(DataConE () | |
"Node" | |
[VarE "n16", | |
VarE "fltPkd49", | |
VarE "fltPkd50"]))))))), | |
("Node", | |
[("n17", ()),("l8", ()),("r9", ())], | |
LetE ("fltPrm53", | |
[], | |
IntTy, | |
ProjE 1 (VarE "tr_n15")) | |
(LetE ("fltIf52", | |
[], | |
BoolTy, | |
PrimAppE GtP | |
[VarE "n17",VarE "fltPrm53"]) | |
(IfE (VarE "fltIf52") | |
(LetE ("fltPkd54", | |
[], | |
PackedTy "Tree" (), | |
AppE "copy_tree" | |
[] | |
(VarE "l8")) | |
(LetE ("fltPrd57", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltAp56", | |
[], | |
ProdTy [PackedTy "Tree" | |
(), | |
IntTy], | |
MkProdE [VarE "r9", | |
VarE "fltPrd57"]) | |
(LetE ("fltPkd55", | |
[], | |
PackedTy "Tree" | |
(), | |
AppE "tree_insert" | |
[] | |
(VarE "fltAp56")) | |
(DataConE () | |
"Node" | |
[VarE "n17", | |
VarE "fltPkd54", | |
VarE "fltPkd55"]))))) | |
(LetE ("fltPrd60", | |
[], | |
IntTy, | |
ProjE 1 (VarE "tr_n15")) | |
(LetE ("fltAp59", | |
[], | |
ProdTy [PackedTy "Tree" | |
(), | |
IntTy], | |
MkProdE [VarE "l8", | |
VarE "fltPrd60"]) | |
(LetE ("fltPkd58", | |
[], | |
PackedTy "Tree" | |
(), | |
AppE "tree_insert" | |
[] | |
(VarE "fltAp59")) | |
(LetE ("fltPkd61", | |
[], | |
PackedTy "Tree" | |
(), | |
AppE "copy_tree" | |
[] | |
(VarE "r9")) | |
(DataConE () | |
"Node" | |
[VarE "n17", | |
VarE "fltPkd58", | |
VarE "fltPkd61"]))))))))])}), | |
("sum_tree", | |
FunDef {funName = "sum_tree", | |
funArg = ("tr10", PackedTy "Tree" ()), | |
funRetTy = IntTy, | |
funBody = CaseE (VarE "tr10") | |
[("Null", [], LitE 0),("Leaf", [("n11", ())], VarE "n11"), | |
("Node", | |
[("n12", ()),("l13", ()),("r14", ())], | |
LetE ("fltPrm63", | |
[], | |
IntTy, | |
AppE "sum_tree" [] (VarE "l13")) | |
(LetE ("fltPrm64", | |
[], | |
IntTy, | |
AppE "sum_tree" [] (VarE "r14")) | |
(LetE ("fltPrm62", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[VarE "fltPrm63", | |
VarE "fltPrm64"]) | |
(PrimAppE AddP | |
[VarE "n12", | |
VarE "fltPrm62"]))))]}), | |
("copy_tree", | |
FunDef {funName = "copy_tree", | |
funArg = ("tr15", PackedTy "Tree" ()), | |
funRetTy = PackedTy "Tree" (), | |
funBody = CaseE (VarE "tr15") | |
[("Null", [], DataConE () "Null" []), | |
("Leaf", [("n16", ())], DataConE () "Leaf" [VarE "n16"]), | |
("Node", | |
[("n117", ()),("l18", ()),("r19", ())], | |
LetE ("fltPkd65", | |
[], | |
PackedTy "Tree" (), | |
AppE "copy_tree" [] (VarE "l18")) | |
(LetE ("fltPkd66", | |
[], | |
PackedTy "Tree" (), | |
AppE "copy_tree" [] (VarE "r19")) | |
(DataConE () | |
"Node" | |
[VarE "n117",VarE "fltPkd65", | |
VarE "fltPkd66"])))]})], | |
mainExp = Just LetE ("m2", [], IntTy, LitE 25) | |
(LetE ("tr03", | |
[], | |
PackedTy "Tree" (), | |
AppE "helper" [] (MkProdE [LitE 1,LitE 2])) | |
(LetE ("tr14", | |
[], | |
PackedTy "Tree" (), | |
TimeIt (AppE "tree_insert" [] (MkProdE [VarE "tr03",LitE 1])) | |
(PackedTy "Tree" ()) | |
False) | |
(AppE "sum_tree" [] (VarE "tr14"))))} | |
[interp] answer was: "4" | |
[compiler] Running pass, inlineTriv | |
Pass output: | |
================================================================================ | |
Prog {ddefs = [("Tree", | |
DDef {tyName = "Tree", | |
dataCons = [("Null", []),("Leaf", [(False, IntTy)]), | |
("Node", | |
[(False, IntTy),(False, PackedTy "Tree" ()), | |
(False, PackedTy "Tree" ())])]})], | |
fundefs = [("helper", | |
FunDef {funName = "helper", | |
funArg = ("s_e020", ProdTy [IntTy,IntTy]), | |
funRetTy = PackedTy "Tree" (), | |
funBody = LetE ("fltPrm23", [], IntTy, ProjE 1 (VarE "s_e020")) | |
(LetE ("fltPrm24", [], IntTy, ProjE 0 (VarE "s_e020")) | |
(LetE ("fltIf22", | |
[], | |
BoolTy, | |
PrimAppE LtP | |
[VarE "fltPrm23",VarE "fltPrm24"]) | |
(IfE (VarE "fltIf22") | |
(DataConE () "Null" []) | |
(LetE ("fltPrm26", | |
[], | |
IntTy, | |
ProjE 0 (VarE "s_e020")) | |
(LetE ("fltPrm27", | |
[], | |
IntTy, | |
ProjE 1 (VarE "s_e020")) | |
(LetE ("fltIf25", | |
[], | |
BoolTy, | |
PrimAppE EqIntP | |
[VarE "fltPrm26", | |
VarE "fltPrm27"]) | |
(IfE (VarE "fltIf25") | |
(LetE ("fltPkd28", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(DataConE () | |
"Leaf" | |
[VarE "fltPkd28"])) | |
(LetE ("fltPrm31", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltPrm32", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltPrm30", | |
[], | |
IntTy, | |
PrimAppE SubP | |
[VarE "fltPrm31", | |
VarE "fltPrm32"]) | |
(LetE ("fltPrm29", | |
[], | |
IntTy, | |
PrimAppE DivP | |
[VarE "fltPrm30", | |
LitE 2]) | |
(LetE ("fltPrm33", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("m21", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[VarE "fltPrm29", | |
VarE "fltPrm33"]) | |
(LetE ("fltPrd36", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltPrd37", | |
[], | |
IntTy, | |
PrimAppE SubP | |
[VarE "m21", | |
LitE 1]) | |
(LetE ("fltPkd34", | |
[], | |
PackedTy "Tree" | |
(), | |
AppE "helper" | |
[] | |
(MkProdE [VarE "fltPrd36", | |
VarE "fltPrd37"])) | |
(LetE ("fltPrd40", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[VarE "m21", | |
LitE 1]) | |
(LetE ("fltPrd41", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltPkd38", | |
[], | |
PackedTy "Tree" | |
(), | |
AppE "helper" | |
[] | |
(MkProdE [VarE "fltPrd40", | |
VarE "fltPrd41"])) | |
(DataConE () | |
"Node" | |
[VarE "m21", | |
VarE "fltPkd34", | |
VarE "fltPkd38"]))))))))))))))))))))}), | |
("tree_insert", | |
FunDef {funName = "tree_insert", | |
funArg = ("tr_n15", ProdTy [PackedTy "Tree" (),IntTy]), | |
funRetTy = PackedTy "Tree" (), | |
funBody = LetE ("fltCse42", | |
[], | |
PackedTy "Tree" (), | |
ProjE 0 (VarE "tr_n15")) | |
(CaseE (VarE "fltCse42") | |
[("Null", | |
[], | |
LetE ("fltPkd43", | |
[], | |
IntTy, | |
ProjE 1 (VarE "tr_n15")) | |
(DataConE () "Leaf" [VarE "fltPkd43"])), | |
("Leaf", | |
[("n16", ())], | |
LetE ("fltPrm45", | |
[], | |
IntTy, | |
ProjE 1 (VarE "tr_n15")) | |
(LetE ("fltIf44", | |
[], | |
BoolTy, | |
PrimAppE LtP | |
[VarE "fltPrm45",VarE "n16"]) | |
(IfE (VarE "fltIf44") | |
(LetE ("fltPkd47", | |
[], | |
IntTy, | |
ProjE 1 (VarE "tr_n15")) | |
(LetE ("fltPkd46", | |
[], | |
PackedTy "Tree" (), | |
DataConE () | |
"Leaf" | |
[VarE "fltPkd47"]) | |
(LetE ("fltPkd48", | |
[], | |
PackedTy "Tree" | |
(), | |
DataConE () | |
"Null" | |
[]) | |
(DataConE () | |
"Node" | |
[VarE "n16", | |
VarE "fltPkd46", | |
VarE "fltPkd48"])))) | |
(LetE ("fltPkd49", | |
[], | |
PackedTy "Tree" (), | |
DataConE () "Null" []) | |
(LetE ("fltPkd51", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd50", | |
[], | |
PackedTy "Tree" | |
(), | |
DataConE () | |
"Leaf" | |
[VarE "fltPkd51"]) | |
(DataConE () | |
"Node" | |
[VarE "n16", | |
VarE "fltPkd49", | |
VarE "fltPkd50"]))))))), | |
("Node", | |
[("n17", ()),("l8", ()),("r9", ())], | |
LetE ("fltPrm53", | |
[], | |
IntTy, | |
ProjE 1 (VarE "tr_n15")) | |
(LetE ("fltIf52", | |
[], | |
BoolTy, | |
PrimAppE GtP | |
[VarE "n17",VarE "fltPrm53"]) | |
(IfE (VarE "fltIf52") | |
(LetE ("fltPkd54", | |
[], | |
PackedTy "Tree" (), | |
AppE "copy_tree" | |
[] | |
(VarE "l8")) | |
(LetE ("fltPrd57", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd55", | |
[], | |
PackedTy "Tree" | |
(), | |
AppE "tree_insert" | |
[] | |
(MkProdE [VarE "r9", | |
VarE "fltPrd57"])) | |
(DataConE () | |
"Node" | |
[VarE "n17", | |
VarE "fltPkd54", | |
VarE "fltPkd55"])))) | |
(LetE ("fltPrd60", | |
[], | |
IntTy, | |
ProjE 1 (VarE "tr_n15")) | |
(LetE ("fltPkd58", | |
[], | |
PackedTy "Tree" (), | |
AppE "tree_insert" | |
[] | |
(MkProdE [VarE "l8", | |
VarE "fltPrd60"])) | |
(LetE ("fltPkd61", | |
[], | |
PackedTy "Tree" | |
(), | |
AppE "copy_tree" | |
[] | |
(VarE "r9")) | |
(DataConE () | |
"Node" | |
[VarE "n17", | |
VarE "fltPkd58", | |
VarE "fltPkd61"])))))))])}), | |
("sum_tree", | |
FunDef {funName = "sum_tree", | |
funArg = ("tr10", PackedTy "Tree" ()), | |
funRetTy = IntTy, | |
funBody = CaseE (VarE "tr10") | |
[("Null", [], LitE 0),("Leaf", [("n11", ())], VarE "n11"), | |
("Node", | |
[("n12", ()),("l13", ()),("r14", ())], | |
LetE ("fltPrm63", | |
[], | |
IntTy, | |
AppE "sum_tree" [] (VarE "l13")) | |
(LetE ("fltPrm64", | |
[], | |
IntTy, | |
AppE "sum_tree" [] (VarE "r14")) | |
(LetE ("fltPrm62", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[VarE "fltPrm63", | |
VarE "fltPrm64"]) | |
(PrimAppE AddP | |
[VarE "n12", | |
VarE "fltPrm62"]))))]}), | |
("copy_tree", | |
FunDef {funName = "copy_tree", | |
funArg = ("tr15", PackedTy "Tree" ()), | |
funRetTy = PackedTy "Tree" (), | |
funBody = CaseE (VarE "tr15") | |
[("Null", [], DataConE () "Null" []), | |
("Leaf", [("n16", ())], DataConE () "Leaf" [VarE "n16"]), | |
("Node", | |
[("n117", ()),("l18", ()),("r19", ())], | |
LetE ("fltPkd65", | |
[], | |
PackedTy "Tree" (), | |
AppE "copy_tree" [] (VarE "l18")) | |
(LetE ("fltPkd66", | |
[], | |
PackedTy "Tree" (), | |
AppE "copy_tree" [] (VarE "r19")) | |
(DataConE () | |
"Node" | |
[VarE "n117",VarE "fltPkd65", | |
VarE "fltPkd66"])))]})], | |
mainExp = Just LetE ("tr03", | |
[], | |
PackedTy "Tree" (), | |
AppE "helper" [] (MkProdE [LitE 1,LitE 2])) | |
(LetE ("tr14", | |
[], | |
PackedTy "Tree" (), | |
TimeIt (AppE "tree_insert" [] (MkProdE [VarE "tr03",LitE 1])) | |
(PackedTy "Tree" ()) | |
False) | |
(AppE "sum_tree" [] (VarE "tr14")))} | |
[interp] answer was: "4" | |
[compiler] Running pass, inferLocations | |
Pass output: | |
================================================================================ | |
Prog {ddefs = [("Tree", | |
DDef {tyName = "Tree", | |
dataCons = [("Null", []),("Leaf", [(False, IntTy)]), | |
("Node", | |
[(False, IntTy),(False, PackedTy "Tree" "loc76"), | |
(False, PackedTy "Tree" "loc77")])]})], | |
fundefs = [("helper", | |
FunDef {funname = "helper", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc78", | |
lrmReg = VarR "r79", | |
lrmMode = Output}], | |
arrIn = ProdTy [IntTy,IntTy], | |
arrEffs = [], | |
arrOut = PackedTy "Tree" "loc78", | |
locRets = []}, | |
funarg = "s_e020", | |
funbod = Ext (LetLocE "loc111" | |
(AfterConstantLE 1 "loc78") | |
(Ext (LetLocE "loc112" | |
(AfterConstantLE 8 "loc111") | |
(LetE ("fltPrm23", | |
[], | |
IntTy, | |
ProjE 1 (VarE "s_e020")) | |
(LetE ("fltPrm24", | |
[], | |
IntTy, | |
ProjE 0 (VarE "s_e020")) | |
(LetE ("fltIf22", | |
[], | |
BoolTy, | |
PrimAppE LtP | |
[VarE "fltPrm23", | |
VarE "fltPrm24"]) | |
(IfE (VarE "fltIf22") | |
(DataConE "loc78" | |
"Null" | |
[]) | |
(LetE ("fltPrm26", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltPrm27", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltIf25", | |
[], | |
BoolTy, | |
PrimAppE EqIntP | |
[VarE "fltPrm26", | |
VarE "fltPrm27"]) | |
(IfE (VarE "fltIf25") | |
(LetE ("fltPkd28", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(DataConE "loc78" | |
"Leaf" | |
[VarE "fltPkd28"])) | |
(LetE ("fltPrm31", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltPrm32", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltPrm30", | |
[], | |
IntTy, | |
PrimAppE SubP | |
[VarE "fltPrm31", | |
VarE "fltPrm32"]) | |
(LetE ("fltPrm29", | |
[], | |
IntTy, | |
PrimAppE DivP | |
[VarE "fltPrm30", | |
LitE 2]) | |
(LetE ("fltPrm33", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("m21", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[VarE "fltPrm29", | |
VarE "fltPrm33"]) | |
(LetE ("fltPrd36", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltPrd37", | |
[], | |
IntTy, | |
PrimAppE SubP | |
[VarE "m21", | |
LitE 1]) | |
(LetE ("fltPkd34", | |
[], | |
PackedTy "Tree" | |
"loc112", | |
AppE "helper" | |
["loc112"] | |
(MkProdE [VarE "fltPrd36", | |
VarE "fltPrd37"])) | |
(Ext (LetLocE "loc113" | |
(AfterVariableLE "fltPkd34" | |
"loc112") | |
(LetE ("fltPrd40", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[VarE "m21", | |
LitE 1]) | |
(LetE ("fltPrd41", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltPkd38", | |
[], | |
PackedTy "Tree" | |
"loc113", | |
AppE "helper" | |
["loc113"] | |
(MkProdE [VarE "fltPrd40", | |
VarE "fltPrd41"])) | |
(DataConE "loc78" | |
"Node" | |
[VarE "m21", | |
VarE "fltPkd34", | |
VarE "fltPkd38"]))))))))))))))))))))))))))}), | |
("tree_insert", | |
FunDef {funname = "tree_insert", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc80", | |
lrmReg = VarR "r82", | |
lrmMode = Input}, | |
LRM {lrmLoc = "loc81", | |
lrmReg = VarR "r83", | |
lrmMode = Output}], | |
arrIn = ProdTy [PackedTy "Tree" "loc80",IntTy], | |
arrEffs = [], | |
arrOut = PackedTy "Tree" "loc81", | |
locRets = []}, | |
funarg = "tr_n15", | |
funbod = Ext (LetLocE "loc130" | |
(AfterConstantLE 1 "loc81") | |
(Ext (LetLocE "loc131" | |
(AfterConstantLE 8 "loc130") | |
(Ext (LetLocE "loc143" | |
(AfterConstantLE 1 | |
"loc81") | |
(Ext (LetLocE "loc144" | |
(AfterConstantLE 8 | |
"loc143") | |
(Ext (LetLocE "loc159" | |
(AfterConstantLE 1 | |
"loc81") | |
(Ext (LetLocE "loc160" | |
(AfterConstantLE 8 | |
"loc159") | |
(Ext (LetLocE "loc172" | |
(AfterConstantLE 1 | |
"loc81") | |
(Ext (LetLocE "loc173" | |
(AfterConstantLE 8 | |
"loc172") | |
(LetE ("fltCse42", | |
[], | |
PackedTy "Tree" | |
"loc80", | |
ProjE 0 | |
(VarE "tr_n15")) | |
(CaseE (VarE "fltCse42") | |
[("Null", | |
[], | |
LetE ("fltPkd43", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(DataConE "loc81" | |
"Leaf" | |
[VarE "fltPkd43"])), | |
("Leaf", | |
[("n16", | |
"case123")], | |
LetE ("fltPrm45", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltIf44", | |
[], | |
BoolTy, | |
PrimAppE LtP | |
[VarE "fltPrm45", | |
VarE "n16"]) | |
(IfE (VarE "fltIf44") | |
(LetE ("fltPkd47", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd46", | |
[], | |
PackedTy "Tree" | |
"loc131", | |
DataConE "loc131" | |
"Leaf" | |
[VarE "fltPkd47"]) | |
(Ext (LetLocE "loc132" | |
(AfterVariableLE "fltPkd46" | |
"loc131") | |
(LetE ("fltPkd48", | |
[], | |
PackedTy "Tree" | |
"loc132", | |
DataConE "loc132" | |
"Null" | |
[]) | |
(DataConE "loc81" | |
"Node" | |
[VarE "n16", | |
VarE "fltPkd46", | |
VarE "fltPkd48"])))))) | |
(LetE ("fltPkd49", | |
[], | |
PackedTy "Tree" | |
"loc144", | |
DataConE "loc144" | |
"Null" | |
[]) | |
(Ext (LetLocE "loc145" | |
(AfterVariableLE "fltPkd49" | |
"loc144") | |
(LetE ("fltPkd51", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd50", | |
[], | |
PackedTy "Tree" | |
"loc145", | |
DataConE "loc145" | |
"Leaf" | |
[VarE "fltPkd51"]) | |
(DataConE "loc81" | |
"Node" | |
[VarE "n16", | |
VarE "fltPkd49", | |
VarE "fltPkd50"]))))))))), | |
("Node", | |
[("n17", | |
"case150"), | |
("l8", | |
"case151"), | |
("r9", | |
"case152")], | |
LetE ("fltPrm53", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltIf52", | |
[], | |
BoolTy, | |
PrimAppE GtP | |
[VarE "n17", | |
VarE "fltPrm53"]) | |
(IfE (VarE "fltIf52") | |
(LetE ("fltPkd54", | |
[], | |
PackedTy "Tree" | |
"loc160", | |
AppE "copy_tree" | |
["case151", | |
"loc160"] | |
(VarE "l8")) | |
(Ext (LetLocE "loc161" | |
(AfterVariableLE "fltPkd54" | |
"loc160") | |
(LetE ("fltPrd57", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd55", | |
[], | |
PackedTy "Tree" | |
"loc161", | |
AppE "tree_insert" | |
["case152", | |
"loc161"] | |
(MkProdE [VarE "r9", | |
VarE "fltPrd57"])) | |
(DataConE "loc81" | |
"Node" | |
[VarE "n17", | |
VarE "fltPkd54", | |
VarE "fltPkd55"])))))) | |
(LetE ("fltPrd60", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd58", | |
[], | |
PackedTy "Tree" | |
"loc173", | |
AppE "tree_insert" | |
["case151", | |
"loc173"] | |
(MkProdE [VarE "l8", | |
VarE "fltPrd60"])) | |
(Ext (LetLocE "loc174" | |
(AfterVariableLE "fltPkd58" | |
"loc173") | |
(LetE ("fltPkd61", | |
[], | |
PackedTy "Tree" | |
"loc174", | |
AppE "copy_tree" | |
["case152", | |
"loc174"] | |
(VarE "r9")) | |
(DataConE "loc81" | |
"Node" | |
[VarE "n17", | |
VarE "fltPkd58", | |
VarE "fltPkd61"])))))))))])))))))))))))))))}), | |
("sum_tree", | |
FunDef {funname = "sum_tree", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc84", | |
lrmReg = VarR "r85", | |
lrmMode = Input}], | |
arrIn = PackedTy "Tree" "loc84", | |
arrEffs = [], | |
arrOut = IntTy, | |
locRets = []}, | |
funarg = "tr10", | |
funbod = CaseE (VarE "tr10") | |
[("Null", [], LitE 0), | |
("Leaf", [("n11", "case181")], VarE "n11"), | |
("Node", | |
[("n12", "case182"),("l13", "case183"), | |
("r14", "case184")], | |
LetE ("fltPrm63", | |
[], | |
IntTy, | |
AppE "sum_tree" ["case183"] (VarE "l13")) | |
(LetE ("fltPrm64", | |
[], | |
IntTy, | |
AppE "sum_tree" ["case184"] (VarE "r14")) | |
(LetE ("fltPrm62", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[VarE "fltPrm63", | |
VarE "fltPrm64"]) | |
(PrimAppE AddP | |
[VarE "n12", | |
VarE "fltPrm62"]))))]}), | |
("copy_tree", | |
FunDef {funname = "copy_tree", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc86", | |
lrmReg = VarR "r88", | |
lrmMode = Input}, | |
LRM {lrmLoc = "loc87", | |
lrmReg = VarR "r89", | |
lrmMode = Output}], | |
arrIn = PackedTy "Tree" "loc86", | |
arrEffs = [], | |
arrOut = PackedTy "Tree" "loc87", | |
locRets = []}, | |
funarg = "tr15", | |
funbod = Ext (LetLocE "loc205" | |
(AfterConstantLE 1 "loc87") | |
(Ext (LetLocE "loc206" | |
(AfterConstantLE 8 "loc205") | |
(CaseE (VarE "tr15") | |
[("Null", | |
[], | |
DataConE "loc87" "Null" []), | |
("Leaf", | |
[("n16", "case192")], | |
DataConE "loc87" | |
"Leaf" | |
[VarE "n16"]), | |
("Node", | |
[("n117", "case196"), | |
("l18", "case197"), | |
("r19", "case198")], | |
LetE ("fltPkd65", | |
[], | |
PackedTy "Tree" | |
"loc206", | |
AppE "copy_tree" | |
["case197", | |
"loc206"] | |
(VarE "l18")) | |
(Ext (LetLocE "loc207" | |
(AfterVariableLE "fltPkd65" | |
"loc206") | |
(LetE ("fltPkd66", | |
[], | |
PackedTy "Tree" | |
"loc207", | |
AppE "copy_tree" | |
["case198", | |
"loc207"] | |
(VarE "r19")) | |
(DataConE "loc87" | |
"Node" | |
[VarE "n117", | |
VarE "fltPkd65", | |
VarE "fltPkd66"])))))]))))}), | |
("copy_Tree", | |
FunDef {funname = "copy_Tree", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc90", | |
lrmReg = VarR "r92", | |
lrmMode = Input}, | |
LRM {lrmLoc = "loc91", | |
lrmReg = VarR "r93", | |
lrmMode = Output}], | |
arrIn = PackedTy "Tree" "loc90", | |
arrEffs = [], | |
arrOut = PackedTy "Tree" "loc91", | |
locRets = []}, | |
funarg = "arg67", | |
funbod = Ext (LetLocE "loc228" | |
(AfterConstantLE 1 "loc91") | |
(Ext (LetLocE "loc229" | |
(AfterConstantLE 8 "loc228") | |
(CaseE (VarE "arg67") | |
[("Null", | |
[], | |
DataConE "loc91" "Null" []), | |
("Leaf", | |
[("x68", "case215")], | |
DataConE "loc91" | |
"Leaf" | |
[VarE "x68"]), | |
("Node", | |
[("x70", "case219"), | |
("x71", "case220"), | |
("x72", "case221")], | |
LetE ("y74", | |
[], | |
PackedTy "Tree" | |
"loc229", | |
AppE "copy_Tree" | |
["case220", | |
"loc229"] | |
(VarE "x71")) | |
(Ext (LetLocE "loc230" | |
(AfterVariableLE "y74" | |
"loc229") | |
(LetE ("y75", | |
[], | |
PackedTy "Tree" | |
"loc230", | |
AppE "copy_Tree" | |
["case221", | |
"loc230"] | |
(VarE "x72")) | |
(DataConE "loc91" | |
"Node" | |
[VarE "x70", | |
VarE "y74", | |
VarE "y75"])))))]))))})], | |
mainExp = Just (Ext (LetRegionE (VarR "r104") | |
(Ext (LetLocE "loc99" | |
(StartOfLE (VarR "r104")) | |
(LetE ("tr03", | |
[], | |
PackedTy "Tree" "loc99", | |
AppE "helper" | |
["loc99"] | |
(MkProdE [LitE 1,LitE 2])) | |
(Ext (LetRegionE (VarR "r103") | |
(Ext (LetLocE "loc102" | |
(StartOfLE (VarR "r103")) | |
(LetE ("tr14", | |
[], | |
PackedTy "Tree" | |
"loc102", | |
TimeIt (AppE "tree_insert" | |
["loc99", | |
"loc102"] | |
(MkProdE [VarE "tr03", | |
LitE 1])) | |
(PackedTy "Tree" | |
"loc102") | |
False) | |
(AppE "sum_tree" | |
["loc102"] | |
(VarE "tr14"))))))))))), | |
IntTy)} | |
[compiler] Running pass, L2.flatten | |
Pass output: | |
================================================================================ | |
Prog {ddefs = [("Tree", | |
DDef {tyName = "Tree", | |
dataCons = [("Null", []),("Leaf", [(False, IntTy)]), | |
("Node", | |
[(False, IntTy),(False, PackedTy "Tree" "loc76"), | |
(False, PackedTy "Tree" "loc77")])]})], | |
fundefs = [("helper", | |
FunDef {funname = "helper", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc78", | |
lrmReg = VarR "r79", | |
lrmMode = Output}], | |
arrIn = ProdTy [IntTy,IntTy], | |
arrEffs = [], | |
arrOut = PackedTy "Tree" "loc78", | |
locRets = []}, | |
funarg = "s_e020", | |
funbod = Ext (LetLocE "loc111" | |
(AfterConstantLE 1 "loc78") | |
(Ext (LetLocE "loc112" | |
(AfterConstantLE 8 "loc111") | |
(LetE ("fltPrm23", | |
[], | |
IntTy, | |
ProjE 1 (VarE "s_e020")) | |
(LetE ("fltPrm24", | |
[], | |
IntTy, | |
ProjE 0 (VarE "s_e020")) | |
(LetE ("fltIf22", | |
[], | |
BoolTy, | |
PrimAppE LtP | |
[VarE "fltPrm23", | |
VarE "fltPrm24"]) | |
(IfE (VarE "fltIf22") | |
(DataConE "loc78" | |
"Null" | |
[]) | |
(LetE ("fltPrm26", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltPrm27", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltIf25", | |
[], | |
BoolTy, | |
PrimAppE EqIntP | |
[VarE "fltPrm26", | |
VarE "fltPrm27"]) | |
(IfE (VarE "fltIf25") | |
(LetE ("fltPkd28", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(DataConE "loc78" | |
"Leaf" | |
[VarE "fltPkd28"])) | |
(LetE ("fltPrm31", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltPrm32", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltPrm30", | |
[], | |
IntTy, | |
PrimAppE SubP | |
[VarE "fltPrm31", | |
VarE "fltPrm32"]) | |
(LetE ("fltPrm29", | |
[], | |
IntTy, | |
PrimAppE DivP | |
[VarE "fltPrm30", | |
LitE 2]) | |
(LetE ("fltPrm33", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("m21", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[VarE "fltPrm29", | |
VarE "fltPrm33"]) | |
(LetE ("fltPrd36", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltPrd37", | |
[], | |
IntTy, | |
PrimAppE SubP | |
[VarE "m21", | |
LitE 1]) | |
(LetE ("fltPkd34", | |
[], | |
PackedTy "Tree" | |
"loc112", | |
AppE "helper" | |
["loc112"] | |
(MkProdE [VarE "fltPrd36", | |
VarE "fltPrd37"])) | |
(Ext (LetLocE "loc113" | |
(AfterVariableLE "fltPkd34" | |
"loc112") | |
(LetE ("fltPrd40", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[VarE "m21", | |
LitE 1]) | |
(LetE ("fltPrd41", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltPkd38", | |
[], | |
PackedTy "Tree" | |
"loc113", | |
AppE "helper" | |
["loc113"] | |
(MkProdE [VarE "fltPrd40", | |
VarE "fltPrd41"])) | |
(DataConE "loc78" | |
"Node" | |
[VarE "m21", | |
VarE "fltPkd34", | |
VarE "fltPkd38"]))))))))))))))))))))))))))}), | |
("tree_insert", | |
FunDef {funname = "tree_insert", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc80", | |
lrmReg = VarR "r82", | |
lrmMode = Input}, | |
LRM {lrmLoc = "loc81", | |
lrmReg = VarR "r83", | |
lrmMode = Output}], | |
arrIn = ProdTy [PackedTy "Tree" "loc80",IntTy], | |
arrEffs = [], | |
arrOut = PackedTy "Tree" "loc81", | |
locRets = []}, | |
funarg = "tr_n15", | |
funbod = Ext (LetLocE "loc130" | |
(AfterConstantLE 1 "loc81") | |
(Ext (LetLocE "loc131" | |
(AfterConstantLE 8 "loc130") | |
(Ext (LetLocE "loc143" | |
(AfterConstantLE 1 | |
"loc81") | |
(Ext (LetLocE "loc144" | |
(AfterConstantLE 8 | |
"loc143") | |
(Ext (LetLocE "loc159" | |
(AfterConstantLE 1 | |
"loc81") | |
(Ext (LetLocE "loc160" | |
(AfterConstantLE 8 | |
"loc159") | |
(Ext (LetLocE "loc172" | |
(AfterConstantLE 1 | |
"loc81") | |
(Ext (LetLocE "loc173" | |
(AfterConstantLE 8 | |
"loc172") | |
(LetE ("fltCse42", | |
[], | |
PackedTy "Tree" | |
"loc80", | |
ProjE 0 | |
(VarE "tr_n15")) | |
(CaseE (VarE "fltCse42") | |
[("Null", | |
[], | |
LetE ("fltPkd43", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(DataConE "loc81" | |
"Leaf" | |
[VarE "fltPkd43"])), | |
("Leaf", | |
[("n16", | |
"case123")], | |
LetE ("fltPrm45", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltIf44", | |
[], | |
BoolTy, | |
PrimAppE LtP | |
[VarE "fltPrm45", | |
VarE "n16"]) | |
(IfE (VarE "fltIf44") | |
(LetE ("fltPkd47", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd46", | |
[], | |
PackedTy "Tree" | |
"loc131", | |
DataConE "loc131" | |
"Leaf" | |
[VarE "fltPkd47"]) | |
(Ext (LetLocE "loc132" | |
(AfterVariableLE "fltPkd46" | |
"loc131") | |
(LetE ("fltPkd48", | |
[], | |
PackedTy "Tree" | |
"loc132", | |
DataConE "loc132" | |
"Null" | |
[]) | |
(DataConE "loc81" | |
"Node" | |
[VarE "n16", | |
VarE "fltPkd46", | |
VarE "fltPkd48"])))))) | |
(LetE ("fltPkd49", | |
[], | |
PackedTy "Tree" | |
"loc144", | |
DataConE "loc144" | |
"Null" | |
[]) | |
(Ext (LetLocE "loc145" | |
(AfterVariableLE "fltPkd49" | |
"loc144") | |
(LetE ("fltPkd51", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd50", | |
[], | |
PackedTy "Tree" | |
"loc145", | |
DataConE "loc145" | |
"Leaf" | |
[VarE "fltPkd51"]) | |
(DataConE "loc81" | |
"Node" | |
[VarE "n16", | |
VarE "fltPkd49", | |
VarE "fltPkd50"]))))))))), | |
("Node", | |
[("n17", | |
"case150"), | |
("l8", | |
"case151"), | |
("r9", | |
"case152")], | |
LetE ("fltPrm53", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltIf52", | |
[], | |
BoolTy, | |
PrimAppE GtP | |
[VarE "n17", | |
VarE "fltPrm53"]) | |
(IfE (VarE "fltIf52") | |
(LetE ("fltPkd54", | |
[], | |
PackedTy "Tree" | |
"loc160", | |
AppE "copy_tree" | |
["case151", | |
"loc160"] | |
(VarE "l8")) | |
(Ext (LetLocE "loc161" | |
(AfterVariableLE "fltPkd54" | |
"loc160") | |
(LetE ("fltPrd57", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd55", | |
[], | |
PackedTy "Tree" | |
"loc161", | |
AppE "tree_insert" | |
["case152", | |
"loc161"] | |
(MkProdE [VarE "r9", | |
VarE "fltPrd57"])) | |
(DataConE "loc81" | |
"Node" | |
[VarE "n17", | |
VarE "fltPkd54", | |
VarE "fltPkd55"])))))) | |
(LetE ("fltPrd60", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd58", | |
[], | |
PackedTy "Tree" | |
"loc173", | |
AppE "tree_insert" | |
["case151", | |
"loc173"] | |
(MkProdE [VarE "l8", | |
VarE "fltPrd60"])) | |
(Ext (LetLocE "loc174" | |
(AfterVariableLE "fltPkd58" | |
"loc173") | |
(LetE ("fltPkd61", | |
[], | |
PackedTy "Tree" | |
"loc174", | |
AppE "copy_tree" | |
["case152", | |
"loc174"] | |
(VarE "r9")) | |
(DataConE "loc81" | |
"Node" | |
[VarE "n17", | |
VarE "fltPkd58", | |
VarE "fltPkd61"])))))))))])))))))))))))))))}), | |
("sum_tree", | |
FunDef {funname = "sum_tree", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc84", | |
lrmReg = VarR "r85", | |
lrmMode = Input}], | |
arrIn = PackedTy "Tree" "loc84", | |
arrEffs = [], | |
arrOut = IntTy, | |
locRets = []}, | |
funarg = "tr10", | |
funbod = CaseE (VarE "tr10") | |
[("Null", [], LitE 0), | |
("Leaf", [("n11", "case181")], VarE "n11"), | |
("Node", | |
[("n12", "case182"),("l13", "case183"), | |
("r14", "case184")], | |
LetE ("fltPrm63", | |
[], | |
IntTy, | |
AppE "sum_tree" ["case183"] (VarE "l13")) | |
(LetE ("fltPrm64", | |
[], | |
IntTy, | |
AppE "sum_tree" ["case184"] (VarE "r14")) | |
(LetE ("fltPrm62", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[VarE "fltPrm63", | |
VarE "fltPrm64"]) | |
(PrimAppE AddP | |
[VarE "n12", | |
VarE "fltPrm62"]))))]}), | |
("copy_tree", | |
FunDef {funname = "copy_tree", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc86", | |
lrmReg = VarR "r88", | |
lrmMode = Input}, | |
LRM {lrmLoc = "loc87", | |
lrmReg = VarR "r89", | |
lrmMode = Output}], | |
arrIn = PackedTy "Tree" "loc86", | |
arrEffs = [], | |
arrOut = PackedTy "Tree" "loc87", | |
locRets = []}, | |
funarg = "tr15", | |
funbod = Ext (LetLocE "loc205" | |
(AfterConstantLE 1 "loc87") | |
(Ext (LetLocE "loc206" | |
(AfterConstantLE 8 "loc205") | |
(CaseE (VarE "tr15") | |
[("Null", | |
[], | |
DataConE "loc87" "Null" []), | |
("Leaf", | |
[("n16", "case192")], | |
DataConE "loc87" | |
"Leaf" | |
[VarE "n16"]), | |
("Node", | |
[("n117", "case196"), | |
("l18", "case197"), | |
("r19", "case198")], | |
LetE ("fltPkd65", | |
[], | |
PackedTy "Tree" | |
"loc206", | |
AppE "copy_tree" | |
["case197", | |
"loc206"] | |
(VarE "l18")) | |
(Ext (LetLocE "loc207" | |
(AfterVariableLE "fltPkd65" | |
"loc206") | |
(LetE ("fltPkd66", | |
[], | |
PackedTy "Tree" | |
"loc207", | |
AppE "copy_tree" | |
["case198", | |
"loc207"] | |
(VarE "r19")) | |
(DataConE "loc87" | |
"Node" | |
[VarE "n117", | |
VarE "fltPkd65", | |
VarE "fltPkd66"])))))]))))}), | |
("copy_Tree", | |
FunDef {funname = "copy_Tree", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc90", | |
lrmReg = VarR "r92", | |
lrmMode = Input}, | |
LRM {lrmLoc = "loc91", | |
lrmReg = VarR "r93", | |
lrmMode = Output}], | |
arrIn = PackedTy "Tree" "loc90", | |
arrEffs = [], | |
arrOut = PackedTy "Tree" "loc91", | |
locRets = []}, | |
funarg = "arg67", | |
funbod = Ext (LetLocE "loc228" | |
(AfterConstantLE 1 "loc91") | |
(Ext (LetLocE "loc229" | |
(AfterConstantLE 8 "loc228") | |
(CaseE (VarE "arg67") | |
[("Null", | |
[], | |
DataConE "loc91" "Null" []), | |
("Leaf", | |
[("x68", "case215")], | |
DataConE "loc91" | |
"Leaf" | |
[VarE "x68"]), | |
("Node", | |
[("x70", "case219"), | |
("x71", "case220"), | |
("x72", "case221")], | |
LetE ("y74", | |
[], | |
PackedTy "Tree" | |
"loc229", | |
AppE "copy_Tree" | |
["case220", | |
"loc229"] | |
(VarE "x71")) | |
(Ext (LetLocE "loc230" | |
(AfterVariableLE "y74" | |
"loc229") | |
(LetE ("y75", | |
[], | |
PackedTy "Tree" | |
"loc230", | |
AppE "copy_Tree" | |
["case221", | |
"loc230"] | |
(VarE "x72")) | |
(DataConE "loc91" | |
"Node" | |
[VarE "x70", | |
VarE "y74", | |
VarE "y75"])))))]))))})], | |
mainExp = Just (Ext (LetRegionE (VarR "r104") | |
(Ext (LetLocE "loc99" | |
(StartOfLE (VarR "r104")) | |
(LetE ("tr03", | |
[], | |
PackedTy "Tree" "loc99", | |
AppE "helper" | |
["loc99"] | |
(MkProdE [LitE 1,LitE 2])) | |
(Ext (LetRegionE (VarR "r103") | |
(Ext (LetLocE "loc102" | |
(StartOfLE (VarR "r103")) | |
(LetE ("tr14", | |
[], | |
PackedTy "Tree" | |
"loc102", | |
TimeIt (AppE "tree_insert" | |
["loc99", | |
"loc102"] | |
(MkProdE [VarE "tr03", | |
LitE 1])) | |
(PackedTy "Tree" | |
"loc81") | |
False) | |
(AppE "sum_tree" | |
["loc102"] | |
(VarE "tr14"))))))))))), | |
IntTy)} | |
[compiler] Running pass, removeCopies | |
Pass output: | |
================================================================================ | |
Prog {ddefs = [("Tree", | |
DDef {tyName = "Tree", | |
dataCons = [("Null", []),("Leaf", [(False, IntTy)]), | |
("Node", | |
[(False, IntTy),(False, PackedTy "Tree" "loc76"), | |
(False, PackedTy "Tree" "loc77")]), | |
("INDIRECTION235", [(False, CursorTy)])]})], | |
fundefs = [("helper", | |
FunDef {funname = "helper", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc78", | |
lrmReg = VarR "r79", | |
lrmMode = Output}], | |
arrIn = ProdTy [IntTy,IntTy], | |
arrEffs = [], | |
arrOut = PackedTy "Tree" "loc78", | |
locRets = []}, | |
funarg = "s_e020", | |
funbod = Ext (LetLocE "loc111" | |
(AfterConstantLE 1 "loc78") | |
(Ext (LetLocE "loc112" | |
(AfterConstantLE 8 "loc111") | |
(LetE ("fltPrm23", | |
[], | |
IntTy, | |
ProjE 1 (VarE "s_e020")) | |
(LetE ("fltPrm24", | |
[], | |
IntTy, | |
ProjE 0 (VarE "s_e020")) | |
(LetE ("fltIf22", | |
[], | |
BoolTy, | |
PrimAppE LtP | |
[VarE "fltPrm23", | |
VarE "fltPrm24"]) | |
(IfE (VarE "fltIf22") | |
(DataConE "loc78" | |
"Null" | |
[]) | |
(LetE ("fltPrm26", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltPrm27", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltIf25", | |
[], | |
BoolTy, | |
PrimAppE EqIntP | |
[VarE "fltPrm26", | |
VarE "fltPrm27"]) | |
(IfE (VarE "fltIf25") | |
(LetE ("fltPkd28", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(DataConE "loc78" | |
"Leaf" | |
[VarE "fltPkd28"])) | |
(LetE ("fltPrm31", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltPrm32", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltPrm30", | |
[], | |
IntTy, | |
PrimAppE SubP | |
[VarE "fltPrm31", | |
VarE "fltPrm32"]) | |
(LetE ("fltPrm29", | |
[], | |
IntTy, | |
PrimAppE DivP | |
[VarE "fltPrm30", | |
LitE 2]) | |
(LetE ("fltPrm33", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("m21", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[VarE "fltPrm29", | |
VarE "fltPrm33"]) | |
(LetE ("fltPrd36", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltPrd37", | |
[], | |
IntTy, | |
PrimAppE SubP | |
[VarE "m21", | |
LitE 1]) | |
(LetE ("fltPkd34", | |
[], | |
PackedTy "Tree" | |
"loc112", | |
AppE "helper" | |
["loc112"] | |
(MkProdE [VarE "fltPrd36", | |
VarE "fltPrd37"])) | |
(Ext (LetLocE "loc113" | |
(AfterVariableLE "fltPkd34" | |
"loc112") | |
(LetE ("fltPrd40", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[VarE "m21", | |
LitE 1]) | |
(LetE ("fltPrd41", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltPkd38", | |
[], | |
PackedTy "Tree" | |
"loc113", | |
AppE "helper" | |
["loc113"] | |
(MkProdE [VarE "fltPrd40", | |
VarE "fltPrd41"])) | |
(DataConE "loc78" | |
"Node" | |
[VarE "m21", | |
VarE "fltPkd34", | |
VarE "fltPkd38"]))))))))))))))))))))))))))}), | |
("tree_insert", | |
FunDef {funname = "tree_insert", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc80", | |
lrmReg = VarR "r82", | |
lrmMode = Input}, | |
LRM {lrmLoc = "loc81", | |
lrmReg = VarR "r83", | |
lrmMode = Output}], | |
arrIn = ProdTy [PackedTy "Tree" "loc80",IntTy], | |
arrEffs = [], | |
arrOut = PackedTy "Tree" "loc81", | |
locRets = []}, | |
funarg = "tr_n15", | |
funbod = Ext (LetLocE "loc130" | |
(AfterConstantLE 1 "loc81") | |
(Ext (LetLocE "loc131" | |
(AfterConstantLE 8 "loc130") | |
(Ext (LetLocE "loc143" | |
(AfterConstantLE 1 | |
"loc81") | |
(Ext (LetLocE "loc144" | |
(AfterConstantLE 8 | |
"loc143") | |
(Ext (LetLocE "loc159" | |
(AfterConstantLE 1 | |
"loc81") | |
(Ext (LetLocE "loc160" | |
(AfterConstantLE 8 | |
"loc159") | |
(Ext (LetLocE "loc172" | |
(AfterConstantLE 1 | |
"loc81") | |
(Ext (LetLocE "loc173" | |
(AfterConstantLE 8 | |
"loc172") | |
(LetE ("fltCse42", | |
[], | |
PackedTy "Tree" | |
"loc80", | |
ProjE 0 | |
(VarE "tr_n15")) | |
(CaseE (VarE "fltCse42") | |
[("Null", | |
[], | |
LetE ("fltPkd43", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(DataConE "loc81" | |
"Leaf" | |
[VarE "fltPkd43"])), | |
("Leaf", | |
[("n16", | |
"case123")], | |
LetE ("fltPrm45", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltIf44", | |
[], | |
BoolTy, | |
PrimAppE LtP | |
[VarE "fltPrm45", | |
VarE "n16"]) | |
(IfE (VarE "fltIf44") | |
(LetE ("fltPkd47", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd46", | |
[], | |
PackedTy "Tree" | |
"loc131", | |
DataConE "loc131" | |
"Leaf" | |
[VarE "fltPkd47"]) | |
(Ext (LetLocE "loc132" | |
(AfterVariableLE "fltPkd46" | |
"loc131") | |
(LetE ("fltPkd48", | |
[], | |
PackedTy "Tree" | |
"loc132", | |
DataConE "loc132" | |
"Null" | |
[]) | |
(DataConE "loc81" | |
"Node" | |
[VarE "n16", | |
VarE "fltPkd46", | |
VarE "fltPkd48"])))))) | |
(LetE ("fltPkd49", | |
[], | |
PackedTy "Tree" | |
"loc144", | |
DataConE "loc144" | |
"Null" | |
[]) | |
(Ext (LetLocE "loc145" | |
(AfterVariableLE "fltPkd49" | |
"loc144") | |
(LetE ("fltPkd51", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd50", | |
[], | |
PackedTy "Tree" | |
"loc145", | |
DataConE "loc145" | |
"Leaf" | |
[VarE "fltPkd51"]) | |
(DataConE "loc81" | |
"Node" | |
[VarE "n16", | |
VarE "fltPkd49", | |
VarE "fltPkd50"]))))))))), | |
("Node", | |
[("n17", | |
"case150"), | |
("l8", | |
"case151"), | |
("r9", | |
"case152")], | |
LetE ("fltPrm53", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltIf52", | |
[], | |
BoolTy, | |
PrimAppE GtP | |
[VarE "n17", | |
VarE "fltPrm53"]) | |
(IfE (VarE "fltIf52") | |
(LetE ("fltPkd54", | |
[], | |
PackedTy "Tree" | |
"loc160", | |
Ext (IndirectionE "Tree" | |
"INDIRECTION235" | |
("loc160", | |
"r83") | |
("case151", | |
"r82") | |
(VarE "l8"))) | |
(Ext (LetLocE "loc161" | |
(AfterVariableLE "fltPkd54" | |
"loc160") | |
(LetE ("fltPrd57", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd55", | |
[], | |
PackedTy "Tree" | |
"loc161", | |
AppE "tree_insert" | |
["case152", | |
"loc161"] | |
(MkProdE [VarE "r9", | |
VarE "fltPrd57"])) | |
(DataConE "loc81" | |
"Node" | |
[VarE "n17", | |
VarE "fltPkd54", | |
VarE "fltPkd55"])))))) | |
(LetE ("fltPrd60", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd58", | |
[], | |
PackedTy "Tree" | |
"loc173", | |
AppE "tree_insert" | |
["case151", | |
"loc173"] | |
(MkProdE [VarE "l8", | |
VarE "fltPrd60"])) | |
(Ext (LetLocE "loc174" | |
(AfterVariableLE "fltPkd58" | |
"loc173") | |
(LetE ("fltPkd61", | |
[], | |
PackedTy "Tree" | |
"loc174", | |
Ext (IndirectionE "Tree" | |
"INDIRECTION235" | |
("loc174", | |
"r83") | |
("case152", | |
"r82") | |
(VarE "r9"))) | |
(DataConE "loc81" | |
"Node" | |
[VarE "n17", | |
VarE "fltPkd58", | |
VarE "fltPkd61"])))))))))])))))))))))))))))}), | |
("sum_tree", | |
FunDef {funname = "sum_tree", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc84", | |
lrmReg = VarR "r85", | |
lrmMode = Input}], | |
arrIn = PackedTy "Tree" "loc84", | |
arrEffs = [], | |
arrOut = IntTy, | |
locRets = []}, | |
funarg = "tr10", | |
funbod = CaseE (VarE "tr10") | |
[("Null", [], LitE 0), | |
("Leaf", [("n11", "case181")], VarE "n11"), | |
("Node", | |
[("n12", "case182"),("l13", "case183"), | |
("r14", "case184")], | |
LetE ("fltPrm63", | |
[], | |
IntTy, | |
AppE "sum_tree" ["case183"] (VarE "l13")) | |
(LetE ("fltPrm64", | |
[], | |
IntTy, | |
AppE "sum_tree" ["case184"] (VarE "r14")) | |
(LetE ("fltPrm62", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[VarE "fltPrm63", | |
VarE "fltPrm64"]) | |
(PrimAppE AddP | |
[VarE "n12", | |
VarE "fltPrm62"]))))]}), | |
("copy_tree", | |
FunDef {funname = "copy_tree", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc86", | |
lrmReg = VarR "r88", | |
lrmMode = Input}, | |
LRM {lrmLoc = "loc87", | |
lrmReg = VarR "r89", | |
lrmMode = Output}], | |
arrIn = PackedTy "Tree" "loc86", | |
arrEffs = [], | |
arrOut = PackedTy "Tree" "loc87", | |
locRets = []}, | |
funarg = "tr15", | |
funbod = Ext (LetLocE "loc205" | |
(AfterConstantLE 1 "loc87") | |
(Ext (LetLocE "loc206" | |
(AfterConstantLE 8 "loc205") | |
(CaseE (VarE "tr15") | |
[("Null", | |
[], | |
DataConE "loc87" "Null" []), | |
("Leaf", | |
[("n16", "case192")], | |
DataConE "loc87" | |
"Leaf" | |
[VarE "n16"]), | |
("Node", | |
[("n117", "case196"), | |
("l18", "case197"), | |
("r19", "case198")], | |
LetE ("fltPkd65", | |
[], | |
PackedTy "Tree" | |
"loc206", | |
AppE "copy_tree" | |
["case197", | |
"loc206"] | |
(VarE "l18")) | |
(Ext (LetLocE "loc207" | |
(AfterVariableLE "fltPkd65" | |
"loc206") | |
(LetE ("fltPkd66", | |
[], | |
PackedTy "Tree" | |
"loc207", | |
AppE "copy_tree" | |
["case198", | |
"loc207"] | |
(VarE "r19")) | |
(DataConE "loc87" | |
"Node" | |
[VarE "n117", | |
VarE "fltPkd65", | |
VarE "fltPkd66"])))))]))))}), | |
("copy_Tree", | |
FunDef {funname = "copy_Tree", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc90", | |
lrmReg = VarR "r92", | |
lrmMode = Input}, | |
LRM {lrmLoc = "loc91", | |
lrmReg = VarR "r93", | |
lrmMode = Output}], | |
arrIn = PackedTy "Tree" "loc90", | |
arrEffs = [], | |
arrOut = PackedTy "Tree" "loc91", | |
locRets = []}, | |
funarg = "arg67", | |
funbod = Ext (LetLocE "loc228" | |
(AfterConstantLE 1 "loc91") | |
(Ext (LetLocE "loc229" | |
(AfterConstantLE 8 "loc228") | |
(CaseE (VarE "arg67") | |
[("Null", | |
[], | |
DataConE "loc91" "Null" []), | |
("Leaf", | |
[("x68", "case215")], | |
DataConE "loc91" | |
"Leaf" | |
[VarE "x68"]), | |
("Node", | |
[("x70", "case219"), | |
("x71", "case220"), | |
("x72", "case221")], | |
LetE ("y74", | |
[], | |
PackedTy "Tree" | |
"loc229", | |
AppE "copy_Tree" | |
["case220", | |
"loc229"] | |
(VarE "x71")) | |
(Ext (LetLocE "loc230" | |
(AfterVariableLE "y74" | |
"loc229") | |
(LetE ("y75", | |
[], | |
PackedTy "Tree" | |
"loc230", | |
AppE "copy_Tree" | |
["case221", | |
"loc230"] | |
(VarE "x72")) | |
(DataConE "loc91" | |
"Node" | |
[VarE "x70", | |
VarE "y74", | |
VarE "y75"])))))]))))})], | |
mainExp = Just (Ext (LetRegionE (VarR "r104") | |
(Ext (LetLocE "loc99" | |
(StartOfLE (VarR "r104")) | |
(LetE ("tr03", | |
[], | |
PackedTy "Tree" "loc99", | |
AppE "helper" | |
["loc99"] | |
(MkProdE [LitE 1,LitE 2])) | |
(Ext (LetRegionE (VarR "r103") | |
(Ext (LetLocE "loc102" | |
(StartOfLE (VarR "r103")) | |
(LetE ("tr14", | |
[], | |
PackedTy "Tree" | |
"loc102", | |
TimeIt (AppE "tree_insert" | |
["loc99", | |
"loc102"] | |
(MkProdE [VarE "tr03", | |
LitE 1])) | |
(PackedTy "Tree" | |
"loc81") | |
False) | |
(AppE "sum_tree" | |
["loc102"] | |
(VarE "tr14"))))))))))), | |
IntTy)} | |
[compiler] Running pass, inferEffects | |
Inside caserhs, for ("Leaf",[(Var "n16",Var "case123")],[IntTy]) | |
Inside caserhs, for ("Node",[(Var "n17",Var "case150"),(Var "l8",Var "case151"),(Var "r9",Var "case152")],[IntTy,PackedTy "Tree" (Var "loc76"),PackedTy "Tree" (Var "loc77")]) | |
Substituting in effects (fromList [(Var "loc80",Var "case152"),(Var "loc81",Var "loc161")],fromList [Traverse (Var "loc80"),Traverse (Var "loc81")]) | |
Substituting in effects (fromList [(Var "loc80",Var "case151"),(Var "loc81",Var "loc173")],fromList [Traverse (Var "loc80"),Traverse (Var "loc81")]) | |
Inside caserhs, for ("Leaf",[(Var "n16",Var "case123")],[IntTy]) | |
Inside caserhs, for ("Node",[(Var "n17",Var "case150"),(Var "l8",Var "case151"),(Var "r9",Var "case152")],[IntTy,PackedTy "Tree" (Var "loc76"),PackedTy "Tree" (Var "loc77")]) | |
Substituting in effects (fromList [(Var "loc80",Var "case152"),(Var "loc81",Var "loc161")],fromList []) | |
Inside caserhs, for ("Leaf",[(Var "n11",Var "case181")],[IntTy]) | |
Inside caserhs, for ("Node",[(Var "n12",Var "case182"),(Var "l13",Var "case183"),(Var "r14",Var "case184")],[IntTy,PackedTy "Tree" (Var "loc76"),PackedTy "Tree" (Var "loc77")]) | |
Substituting in effects (fromList [(Var "loc84",Var "case183")],fromList [Traverse (Var "loc84")]) | |
Substituting in effects (fromList [(Var "loc84",Var "case184")],fromList [Traverse (Var "loc84")]) | |
Inside caserhs, for ("Leaf",[(Var "n11",Var "case181")],[IntTy]) | |
Inside caserhs, for ("Node",[(Var "n12",Var "case182"),(Var "l13",Var "case183"),(Var "r14",Var "case184")],[IntTy,PackedTy "Tree" (Var "loc76"),PackedTy "Tree" (Var "loc77")]) | |
Substituting in effects (fromList [(Var "loc84",Var "case183")],fromList [Traverse (Var "loc84")]) | |
Substituting in effects (fromList [(Var "loc84",Var "case184")],fromList [Traverse (Var "loc84")]) | |
Inside caserhs, for ("Leaf",[(Var "n16",Var "case192")],[IntTy]) | |
Inside caserhs, for ("Node",[(Var "n117",Var "case196"),(Var "l18",Var "case197"),(Var "r19",Var "case198")],[IntTy,PackedTy "Tree" (Var "loc76"),PackedTy "Tree" (Var "loc77")]) | |
Substituting in effects (fromList [(Var "loc86",Var "case197"),(Var "loc87",Var "loc206")],fromList [Traverse (Var "loc86"),Traverse (Var "loc87")]) | |
Substituting in effects (fromList [(Var "loc86",Var "case198"),(Var "loc87",Var "loc207")],fromList [Traverse (Var "loc86"),Traverse (Var "loc87")]) | |
Inside caserhs, for ("Leaf",[(Var "n16",Var "case192")],[IntTy]) | |
Inside caserhs, for ("Node",[(Var "n117",Var "case196"),(Var "l18",Var "case197"),(Var "r19",Var "case198")],[IntTy,PackedTy "Tree" (Var "loc76"),PackedTy "Tree" (Var "loc77")]) | |
Substituting in effects (fromList [(Var "loc86",Var "case197"),(Var "loc87",Var "loc206")],fromList [Traverse (Var "loc86")]) | |
Substituting in effects (fromList [(Var "loc86",Var "case198"),(Var "loc87",Var "loc207")],fromList [Traverse (Var "loc86")]) | |
Inside caserhs, for ("Leaf",[(Var "x68",Var "case215")],[IntTy]) | |
Inside caserhs, for ("Node",[(Var "x70",Var "case219"),(Var "x71",Var "case220"),(Var "x72",Var "case221")],[IntTy,PackedTy "Tree" (Var "loc76"),PackedTy "Tree" (Var "loc77")]) | |
Substituting in effects (fromList [(Var "loc90",Var "case220"),(Var "loc91",Var "loc229")],fromList [Traverse (Var "loc90"),Traverse (Var "loc91")]) | |
Substituting in effects (fromList [(Var "loc90",Var "case221"),(Var "loc91",Var "loc230")],fromList [Traverse (Var "loc90"),Traverse (Var "loc91")]) | |
Inside caserhs, for ("Leaf",[(Var "x68",Var "case215")],[IntTy]) | |
Inside caserhs, for ("Node",[(Var "x70",Var "case219"),(Var "x71",Var "case220"),(Var "x72",Var "case221")],[IntTy,PackedTy "Tree" (Var "loc76"),PackedTy "Tree" (Var "loc77")]) | |
Substituting in effects (fromList [(Var "loc90",Var "case220"),(Var "loc91",Var "loc229")],fromList [Traverse (Var "loc90")]) | |
Substituting in effects (fromList [(Var "loc90",Var "case221"),(Var "loc91",Var "loc230")],fromList [Traverse (Var "loc90")]) | |
<== Fixpoint completed after iteration 2 ==> | |
Pass output: | |
================================================================================ | |
Prog {ddefs = [("Tree", | |
DDef {tyName = "Tree", | |
dataCons = [("Null", []),("Leaf", [(False, IntTy)]), | |
("Node", | |
[(False, IntTy),(False, PackedTy "Tree" "loc76"), | |
(False, PackedTy "Tree" "loc77")]), | |
("INDIRECTION235", [(False, CursorTy)])]})], | |
fundefs = [("helper", | |
FunDef {funname = "helper", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc78", | |
lrmReg = VarR "r79", | |
lrmMode = Output}], | |
arrIn = ProdTy [IntTy,IntTy], | |
arrEffs = [], | |
arrOut = PackedTy "Tree" "loc78", | |
locRets = []}, | |
funarg = "s_e020", | |
funbod = Ext (LetLocE "loc111" | |
(AfterConstantLE 1 "loc78") | |
(Ext (LetLocE "loc112" | |
(AfterConstantLE 8 "loc111") | |
(LetE ("fltPrm23", | |
[], | |
IntTy, | |
ProjE 1 (VarE "s_e020")) | |
(LetE ("fltPrm24", | |
[], | |
IntTy, | |
ProjE 0 (VarE "s_e020")) | |
(LetE ("fltIf22", | |
[], | |
BoolTy, | |
PrimAppE LtP | |
[VarE "fltPrm23", | |
VarE "fltPrm24"]) | |
(IfE (VarE "fltIf22") | |
(DataConE "loc78" | |
"Null" | |
[]) | |
(LetE ("fltPrm26", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltPrm27", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltIf25", | |
[], | |
BoolTy, | |
PrimAppE EqIntP | |
[VarE "fltPrm26", | |
VarE "fltPrm27"]) | |
(IfE (VarE "fltIf25") | |
(LetE ("fltPkd28", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(DataConE "loc78" | |
"Leaf" | |
[VarE "fltPkd28"])) | |
(LetE ("fltPrm31", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltPrm32", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltPrm30", | |
[], | |
IntTy, | |
PrimAppE SubP | |
[VarE "fltPrm31", | |
VarE "fltPrm32"]) | |
(LetE ("fltPrm29", | |
[], | |
IntTy, | |
PrimAppE DivP | |
[VarE "fltPrm30", | |
LitE 2]) | |
(LetE ("fltPrm33", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("m21", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[VarE "fltPrm29", | |
VarE "fltPrm33"]) | |
(LetE ("fltPrd36", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltPrd37", | |
[], | |
IntTy, | |
PrimAppE SubP | |
[VarE "m21", | |
LitE 1]) | |
(LetE ("fltPkd34", | |
[], | |
PackedTy "Tree" | |
"loc112", | |
AppE "helper" | |
["loc112"] | |
(MkProdE [VarE "fltPrd36", | |
VarE "fltPrd37"])) | |
(Ext (LetLocE "loc113" | |
(AfterVariableLE "fltPkd34" | |
"loc112") | |
(LetE ("fltPrd40", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[VarE "m21", | |
LitE 1]) | |
(LetE ("fltPrd41", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltPkd38", | |
[], | |
PackedTy "Tree" | |
"loc113", | |
AppE "helper" | |
["loc113"] | |
(MkProdE [VarE "fltPrd40", | |
VarE "fltPrd41"])) | |
(DataConE "loc78" | |
"Node" | |
[VarE "m21", | |
VarE "fltPkd34", | |
VarE "fltPkd38"]))))))))))))))))))))))))))}), | |
("tree_insert", | |
FunDef {funname = "tree_insert", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc80", | |
lrmReg = VarR "r82", | |
lrmMode = Input}, | |
LRM {lrmLoc = "loc81", | |
lrmReg = VarR "r83", | |
lrmMode = Output}], | |
arrIn = ProdTy [PackedTy "Tree" "loc80",IntTy], | |
arrEffs = [], | |
arrOut = PackedTy "Tree" "loc81", | |
locRets = []}, | |
funarg = "tr_n15", | |
funbod = Ext (LetLocE "loc130" | |
(AfterConstantLE 1 "loc81") | |
(Ext (LetLocE "loc131" | |
(AfterConstantLE 8 "loc130") | |
(Ext (LetLocE "loc143" | |
(AfterConstantLE 1 | |
"loc81") | |
(Ext (LetLocE "loc144" | |
(AfterConstantLE 8 | |
"loc143") | |
(Ext (LetLocE "loc159" | |
(AfterConstantLE 1 | |
"loc81") | |
(Ext (LetLocE "loc160" | |
(AfterConstantLE 8 | |
"loc159") | |
(Ext (LetLocE "loc172" | |
(AfterConstantLE 1 | |
"loc81") | |
(Ext (LetLocE "loc173" | |
(AfterConstantLE 8 | |
"loc172") | |
(LetE ("fltCse42", | |
[], | |
PackedTy "Tree" | |
"loc80", | |
ProjE 0 | |
(VarE "tr_n15")) | |
(CaseE (VarE "fltCse42") | |
[("Null", | |
[], | |
LetE ("fltPkd43", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(DataConE "loc81" | |
"Leaf" | |
[VarE "fltPkd43"])), | |
("Leaf", | |
[("n16", | |
"case123")], | |
LetE ("fltPrm45", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltIf44", | |
[], | |
BoolTy, | |
PrimAppE LtP | |
[VarE "fltPrm45", | |
VarE "n16"]) | |
(IfE (VarE "fltIf44") | |
(LetE ("fltPkd47", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd46", | |
[], | |
PackedTy "Tree" | |
"loc131", | |
DataConE "loc131" | |
"Leaf" | |
[VarE "fltPkd47"]) | |
(Ext (LetLocE "loc132" | |
(AfterVariableLE "fltPkd46" | |
"loc131") | |
(LetE ("fltPkd48", | |
[], | |
PackedTy "Tree" | |
"loc132", | |
DataConE "loc132" | |
"Null" | |
[]) | |
(DataConE "loc81" | |
"Node" | |
[VarE "n16", | |
VarE "fltPkd46", | |
VarE "fltPkd48"])))))) | |
(LetE ("fltPkd49", | |
[], | |
PackedTy "Tree" | |
"loc144", | |
DataConE "loc144" | |
"Null" | |
[]) | |
(Ext (LetLocE "loc145" | |
(AfterVariableLE "fltPkd49" | |
"loc144") | |
(LetE ("fltPkd51", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd50", | |
[], | |
PackedTy "Tree" | |
"loc145", | |
DataConE "loc145" | |
"Leaf" | |
[VarE "fltPkd51"]) | |
(DataConE "loc81" | |
"Node" | |
[VarE "n16", | |
VarE "fltPkd49", | |
VarE "fltPkd50"]))))))))), | |
("Node", | |
[("n17", | |
"case150"), | |
("l8", | |
"case151"), | |
("r9", | |
"case152")], | |
LetE ("fltPrm53", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltIf52", | |
[], | |
BoolTy, | |
PrimAppE GtP | |
[VarE "n17", | |
VarE "fltPrm53"]) | |
(IfE (VarE "fltIf52") | |
(LetE ("fltPkd54", | |
[], | |
PackedTy "Tree" | |
"loc160", | |
Ext (IndirectionE "Tree" | |
"INDIRECTION235" | |
("loc160", | |
"r83") | |
("case151", | |
"r82") | |
(VarE "l8"))) | |
(Ext (LetLocE "loc161" | |
(AfterVariableLE "fltPkd54" | |
"loc160") | |
(LetE ("fltPrd57", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd55", | |
[], | |
PackedTy "Tree" | |
"loc161", | |
AppE "tree_insert" | |
["case152", | |
"loc161"] | |
(MkProdE [VarE "r9", | |
VarE "fltPrd57"])) | |
(DataConE "loc81" | |
"Node" | |
[VarE "n17", | |
VarE "fltPkd54", | |
VarE "fltPkd55"])))))) | |
(LetE ("fltPrd60", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd58", | |
[], | |
PackedTy "Tree" | |
"loc173", | |
AppE "tree_insert" | |
["case151", | |
"loc173"] | |
(MkProdE [VarE "l8", | |
VarE "fltPrd60"])) | |
(Ext (LetLocE "loc174" | |
(AfterVariableLE "fltPkd58" | |
"loc173") | |
(LetE ("fltPkd61", | |
[], | |
PackedTy "Tree" | |
"loc174", | |
Ext (IndirectionE "Tree" | |
"INDIRECTION235" | |
("loc174", | |
"r83") | |
("case152", | |
"r82") | |
(VarE "r9"))) | |
(DataConE "loc81" | |
"Node" | |
[VarE "n17", | |
VarE "fltPkd58", | |
VarE "fltPkd61"])))))))))])))))))))))))))))}), | |
("sum_tree", | |
FunDef {funname = "sum_tree", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc84", | |
lrmReg = VarR "r85", | |
lrmMode = Input}], | |
arrIn = PackedTy "Tree" "loc84", | |
arrEffs = [Traverse "loc84"], | |
arrOut = IntTy, | |
locRets = []}, | |
funarg = "tr10", | |
funbod = CaseE (VarE "tr10") | |
[("Null", [], LitE 0), | |
("Leaf", [("n11", "case181")], VarE "n11"), | |
("Node", | |
[("n12", "case182"),("l13", "case183"), | |
("r14", "case184")], | |
LetE ("fltPrm63", | |
[], | |
IntTy, | |
AppE "sum_tree" ["case183"] (VarE "l13")) | |
(LetE ("fltPrm64", | |
[], | |
IntTy, | |
AppE "sum_tree" ["case184"] (VarE "r14")) | |
(LetE ("fltPrm62", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[VarE "fltPrm63", | |
VarE "fltPrm64"]) | |
(PrimAppE AddP | |
[VarE "n12", | |
VarE "fltPrm62"]))))]}), | |
("copy_tree", | |
FunDef {funname = "copy_tree", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc86", | |
lrmReg = VarR "r88", | |
lrmMode = Input}, | |
LRM {lrmLoc = "loc87", | |
lrmReg = VarR "r89", | |
lrmMode = Output}], | |
arrIn = PackedTy "Tree" "loc86", | |
arrEffs = [Traverse "loc86"], | |
arrOut = PackedTy "Tree" "loc87", | |
locRets = []}, | |
funarg = "tr15", | |
funbod = Ext (LetLocE "loc205" | |
(AfterConstantLE 1 "loc87") | |
(Ext (LetLocE "loc206" | |
(AfterConstantLE 8 "loc205") | |
(CaseE (VarE "tr15") | |
[("Null", | |
[], | |
DataConE "loc87" "Null" []), | |
("Leaf", | |
[("n16", "case192")], | |
DataConE "loc87" | |
"Leaf" | |
[VarE "n16"]), | |
("Node", | |
[("n117", "case196"), | |
("l18", "case197"), | |
("r19", "case198")], | |
LetE ("fltPkd65", | |
[], | |
PackedTy "Tree" | |
"loc206", | |
AppE "copy_tree" | |
["case197", | |
"loc206"] | |
(VarE "l18")) | |
(Ext (LetLocE "loc207" | |
(AfterVariableLE "fltPkd65" | |
"loc206") | |
(LetE ("fltPkd66", | |
[], | |
PackedTy "Tree" | |
"loc207", | |
AppE "copy_tree" | |
["case198", | |
"loc207"] | |
(VarE "r19")) | |
(DataConE "loc87" | |
"Node" | |
[VarE "n117", | |
VarE "fltPkd65", | |
VarE "fltPkd66"])))))]))))}), | |
("copy_Tree", | |
FunDef {funname = "copy_Tree", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc90", | |
lrmReg = VarR "r92", | |
lrmMode = Input}, | |
LRM {lrmLoc = "loc91", | |
lrmReg = VarR "r93", | |
lrmMode = Output}], | |
arrIn = PackedTy "Tree" "loc90", | |
arrEffs = [Traverse "loc90"], | |
arrOut = PackedTy "Tree" "loc91", | |
locRets = []}, | |
funarg = "arg67", | |
funbod = Ext (LetLocE "loc228" | |
(AfterConstantLE 1 "loc91") | |
(Ext (LetLocE "loc229" | |
(AfterConstantLE 8 "loc228") | |
(CaseE (VarE "arg67") | |
[("Null", | |
[], | |
DataConE "loc91" "Null" []), | |
("Leaf", | |
[("x68", "case215")], | |
DataConE "loc91" | |
"Leaf" | |
[VarE "x68"]), | |
("Node", | |
[("x70", "case219"), | |
("x71", "case220"), | |
("x72", "case221")], | |
LetE ("y74", | |
[], | |
PackedTy "Tree" | |
"loc229", | |
AppE "copy_Tree" | |
["case220", | |
"loc229"] | |
(VarE "x71")) | |
(Ext (LetLocE "loc230" | |
(AfterVariableLE "y74" | |
"loc229") | |
(LetE ("y75", | |
[], | |
PackedTy "Tree" | |
"loc230", | |
AppE "copy_Tree" | |
["case221", | |
"loc230"] | |
(VarE "x72")) | |
(DataConE "loc91" | |
"Node" | |
[VarE "x70", | |
VarE "y74", | |
VarE "y75"])))))]))))})], | |
mainExp = Just (Ext (LetRegionE (VarR "r104") | |
(Ext (LetLocE "loc99" | |
(StartOfLE (VarR "r104")) | |
(LetE ("tr03", | |
[], | |
PackedTy "Tree" "loc99", | |
AppE "helper" | |
["loc99"] | |
(MkProdE [LitE 1,LitE 2])) | |
(Ext (LetRegionE (VarR "r103") | |
(Ext (LetLocE "loc102" | |
(StartOfLE (VarR "r103")) | |
(LetE ("tr14", | |
[], | |
PackedTy "Tree" | |
"loc102", | |
TimeIt (AppE "tree_insert" | |
["loc99", | |
"loc102"] | |
(MkProdE [VarE "tr03", | |
LitE 1])) | |
(PackedTy "Tree" | |
"loc81") | |
False) | |
(AppE "sum_tree" | |
["loc102"] | |
(VarE "tr14"))))))))))), | |
IntTy)} | |
[compiler] Running pass, repairProgram | |
Substituting in effects (fromList [(Var "loc80",Var "loc99")],fromList []) | |
Running AddLayout | |
Inside caserhs, for ("Leaf",[(Var "n16",Var "case314")],[IntTy]) | |
Inside caserhs, for ("Node^",[(Var "sz239",Var "case347"),(Var "n17",Var "case348"),(Var "l8",Var "case349"),(Var "r9",Var "case350")],[CursorTy,IntTy,PackedTy "Tree" (Var "loc264"),PackedTy "Tree" (Var "loc265")]) | |
Substituting in effects (fromList [(Var "loc268",Var "case350"),(Var "loc269",Var "loc360")],fromList [Traverse (Var "loc268"),Traverse (Var "loc269")]) | |
Substituting in effects (fromList [(Var "loc268",Var "case349"),(Var "loc269",Var "loc375")],fromList [Traverse (Var "loc268"),Traverse (Var "loc269")]) | |
Inside caserhs, for ("Leaf",[(Var "n16",Var "case314")],[IntTy]) | |
Inside caserhs, for ("Node^",[(Var "sz239",Var "case347"),(Var "n17",Var "case348"),(Var "l8",Var "case349"),(Var "r9",Var "case350")],[CursorTy,IntTy,PackedTy "Tree" (Var "loc264"),PackedTy "Tree" (Var "loc265")]) | |
Substituting in effects (fromList [(Var "loc268",Var "case350"),(Var "loc269",Var "loc360")],fromList []) | |
Inside caserhs, for ("Leaf",[(Var "n11",Var "case385")],[IntTy]) | |
Inside caserhs, for ("Node^",[(Var "sz242",Var "case386"),(Var "n12",Var "case387"),(Var "l13",Var "case388"),(Var "r14",Var "case389")],[CursorTy,IntTy,PackedTy "Tree" (Var "loc264"),PackedTy "Tree" (Var "loc265")]) | |
Substituting in effects (fromList [(Var "loc272",Var "case388")],fromList [Traverse (Var "loc272")]) | |
Substituting in effects (fromList [(Var "loc272",Var "case389")],fromList [Traverse (Var "loc272")]) | |
Inside caserhs, for ("Leaf",[(Var "n11",Var "case385")],[IntTy]) | |
Inside caserhs, for ("Node^",[(Var "sz242",Var "case386"),(Var "n12",Var "case387"),(Var "l13",Var "case388"),(Var "r14",Var "case389")],[CursorTy,IntTy,PackedTy "Tree" (Var "loc264"),PackedTy "Tree" (Var "loc265")]) | |
Substituting in effects (fromList [(Var "loc272",Var "case388")],fromList [Traverse (Var "loc272")]) | |
Substituting in effects (fromList [(Var "loc272",Var "case389")],fromList [Traverse (Var "loc272")]) | |
Inside caserhs, for ("Leaf",[(Var "n16",Var "case397")],[IntTy]) | |
Inside caserhs, for ("Node^",[(Var "sz243",Var "case401"),(Var "n117",Var "case402"),(Var "l18",Var "case403"),(Var "r19",Var "case404")],[CursorTy,IntTy,PackedTy "Tree" (Var "loc264"),PackedTy "Tree" (Var "loc265")]) | |
Substituting in effects (fromList [(Var "loc274",Var "case403"),(Var "loc275",Var "loc413")],fromList [Traverse (Var "loc274"),Traverse (Var "loc275")]) | |
Substituting in effects (fromList [(Var "loc274",Var "case404"),(Var "loc275",Var "loc414")],fromList [Traverse (Var "loc274"),Traverse (Var "loc275")]) | |
Inside caserhs, for ("Leaf",[(Var "n16",Var "case397")],[IntTy]) | |
Inside caserhs, for ("Node^",[(Var "sz243",Var "case401"),(Var "n117",Var "case402"),(Var "l18",Var "case403"),(Var "r19",Var "case404")],[CursorTy,IntTy,PackedTy "Tree" (Var "loc264"),PackedTy "Tree" (Var "loc265")]) | |
Substituting in effects (fromList [(Var "loc274",Var "case403"),(Var "loc275",Var "loc413")],fromList [Traverse (Var "loc274")]) | |
Substituting in effects (fromList [(Var "loc274",Var "case404"),(Var "loc275",Var "loc414")],fromList [Traverse (Var "loc274")]) | |
Inside caserhs, for ("Leaf",[(Var "x246",Var "case424")],[IntTy]) | |
Inside caserhs, for ("Node",[(Var "x248",Var "case428"),(Var "x249",Var "case429"),(Var "x250",Var "case430")],[IntTy,PackedTy "Tree" (Var "loc262"),PackedTy "Tree" (Var "loc263")]) | |
Substituting in effects (fromList [(Var "loc278",Var "case429"),(Var "loc279",Var "loc438")],fromList [Traverse (Var "loc278"),Traverse (Var "loc279")]) | |
Substituting in effects (fromList [(Var "loc278",Var "case430"),(Var "loc279",Var "loc439")],fromList [Traverse (Var "loc278"),Traverse (Var "loc279")]) | |
Inside caserhs, for ("Node^",[(Var "x254",Var "case444"),(Var "x255",Var "case445"),(Var "x256",Var "case446"),(Var "x257",Var "case447")],[CursorTy,IntTy,PackedTy "Tree" (Var "loc264"),PackedTy "Tree" (Var "loc265")]) | |
Substituting in effects (fromList [(Var "loc278",Var "case446"),(Var "loc279",Var "loc456")],fromList [Traverse (Var "loc278"),Traverse (Var "loc279")]) | |
Substituting in effects (fromList [(Var "loc278",Var "case447"),(Var "loc279",Var "loc457")],fromList [Traverse (Var "loc278"),Traverse (Var "loc279")]) | |
Inside caserhs, for ("Leaf",[(Var "x246",Var "case424")],[IntTy]) | |
Inside caserhs, for ("Node",[(Var "x248",Var "case428"),(Var "x249",Var "case429"),(Var "x250",Var "case430")],[IntTy,PackedTy "Tree" (Var "loc262"),PackedTy "Tree" (Var "loc263")]) | |
Substituting in effects (fromList [(Var "loc278",Var "case429"),(Var "loc279",Var "loc438")],fromList [Traverse (Var "loc278")]) | |
Substituting in effects (fromList [(Var "loc278",Var "case430"),(Var "loc279",Var "loc439")],fromList [Traverse (Var "loc278")]) | |
Inside caserhs, for ("Node^",[(Var "x254",Var "case444"),(Var "x255",Var "case445"),(Var "x256",Var "case446"),(Var "x257",Var "case447")],[CursorTy,IntTy,PackedTy "Tree" (Var "loc264"),PackedTy "Tree" (Var "loc265")]) | |
Substituting in effects (fromList [(Var "loc278",Var "case446"),(Var "loc279",Var "loc456")],fromList [Traverse (Var "loc278")]) | |
Substituting in effects (fromList [(Var "loc278",Var "case447"),(Var "loc279",Var "loc457")],fromList [Traverse (Var "loc278")]) | |
<== Fixpoint completed after iteration 2 ==> | |
Pass output: | |
================================================================================ | |
Prog {ddefs = [("Tree", | |
DDef {tyName = "Tree", | |
dataCons = [("Null", []),("Leaf", [(False, IntTy)]), | |
("Node", | |
[(False, IntTy),(False, PackedTy "Tree" "loc262"), | |
(False, PackedTy "Tree" "loc263")]), | |
("Node^", | |
[(False, CursorTy),(False, IntTy), | |
(False, PackedTy "Tree" "loc264"), | |
(False, PackedTy "Tree" "loc265")]), | |
("INDIRECTION464", [(False, CursorTy)])]})], | |
fundefs = [("helper", | |
FunDef {funname = "helper", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc266", | |
lrmReg = VarR "r267", | |
lrmMode = Output}], | |
arrIn = ProdTy [IntTy,IntTy], | |
arrEffs = [], | |
arrOut = PackedTy "Tree" "loc266", | |
locRets = []}, | |
funarg = "s_e020", | |
funbod = Ext (LetLocE "loc299" | |
(AfterConstantLE 1 "loc266") | |
(Ext (LetLocE "loc300" | |
(AfterConstantLE 8 "loc299") | |
(Ext (LetLocE "loc301" | |
(AfterConstantLE 8 | |
"loc300") | |
(LetE ("fltPrm23", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltPrm24", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltIf22", | |
[], | |
BoolTy, | |
PrimAppE LtP | |
[VarE "fltPrm23", | |
VarE "fltPrm24"]) | |
(IfE (VarE "fltIf22") | |
(DataConE "loc266" | |
"Null" | |
[]) | |
(LetE ("fltPrm26", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltPrm27", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltIf25", | |
[], | |
BoolTy, | |
PrimAppE EqIntP | |
[VarE "fltPrm26", | |
VarE "fltPrm27"]) | |
(IfE (VarE "fltIf25") | |
(LetE ("fltPkd28", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(DataConE "loc266" | |
"Leaf" | |
[VarE "fltPkd28"])) | |
(LetE ("fltPrm31", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltPrm32", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltPrm30", | |
[], | |
IntTy, | |
PrimAppE SubP | |
[VarE "fltPrm31", | |
VarE "fltPrm32"]) | |
(LetE ("fltPrm29", | |
[], | |
IntTy, | |
PrimAppE DivP | |
[VarE "fltPrm30", | |
LitE 2]) | |
(LetE ("fltPrm33", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("m21", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[VarE "fltPrm29", | |
VarE "fltPrm33"]) | |
(LetE ("fltPrd36", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltPrd37", | |
[], | |
IntTy, | |
PrimAppE SubP | |
[VarE "m21", | |
LitE 1]) | |
(LetE ("fltPkd34", | |
[], | |
PackedTy "Tree" | |
"loc301", | |
AppE "helper" | |
["loc301"] | |
(MkProdE [VarE "fltPrd36", | |
VarE "fltPrd37"])) | |
(Ext (LetLocE "loc302" | |
(AfterVariableLE "fltPkd34" | |
"loc301") | |
(LetE ("fltPrd40", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[VarE "m21", | |
LitE 1]) | |
(LetE ("fltPrd41", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltPkd38", | |
[], | |
PackedTy "Tree" | |
"loc302", | |
AppE "helper" | |
["loc302"] | |
(MkProdE [VarE "fltPrd40", | |
VarE "fltPrd41"])) | |
(LetE ("indr236", | |
[], | |
CursorTy, | |
PrimAppE PEndOf | |
[VarE "fltPkd34"]) | |
(DataConE "loc266" | |
"Node^" | |
[VarE "indr236", | |
VarE "m21", | |
VarE "fltPkd34", | |
VarE "fltPkd38"])))))))))))))))))))))))))))))}), | |
("tree_insert", | |
FunDef {funname = "tree_insert", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc268", | |
lrmReg = VarR "r270", | |
lrmMode = Input}, | |
LRM {lrmLoc = "loc269", | |
lrmReg = VarR "r271", | |
lrmMode = Output}], | |
arrIn = ProdTy [PackedTy "Tree" "loc268",IntTy], | |
arrEffs = [], | |
arrOut = PackedTy "Tree" "loc269", | |
locRets = []}, | |
funarg = "tr_n15", | |
funbod = Ext (LetLocE "loc321" | |
(AfterConstantLE 1 "loc269") | |
(Ext (LetLocE "loc322" | |
(AfterConstantLE 8 "loc321") | |
(Ext (LetLocE "loc323" | |
(AfterConstantLE 8 | |
"loc322") | |
(Ext (LetLocE "loc337" | |
(AfterConstantLE 1 | |
"loc269") | |
(Ext (LetLocE "loc338" | |
(AfterConstantLE 8 | |
"loc337") | |
(Ext (LetLocE "loc339" | |
(AfterConstantLE 8 | |
"loc338") | |
(Ext (LetLocE "loc357" | |
(AfterConstantLE 1 | |
"loc269") | |
(Ext (LetLocE "loc358" | |
(AfterConstantLE 8 | |
"loc357") | |
(Ext (LetLocE "loc359" | |
(AfterConstantLE 8 | |
"loc358") | |
(Ext (LetLocE "loc373" | |
(AfterConstantLE 1 | |
"loc269") | |
(Ext (LetLocE "loc374" | |
(AfterConstantLE 8 | |
"loc373") | |
(Ext (LetLocE "loc375" | |
(AfterConstantLE 8 | |
"loc374") | |
(LetE ("fltCse42", | |
[], | |
PackedTy "Tree" | |
"loc268", | |
ProjE 0 | |
(VarE "tr_n15")) | |
(CaseE (VarE "fltCse42") | |
[("Null", | |
[], | |
LetE ("fltPkd43", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(DataConE "loc269" | |
"Leaf" | |
[VarE "fltPkd43"])), | |
("Leaf", | |
[("n16", | |
"case314")], | |
LetE ("fltPrm45", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltIf44", | |
[], | |
BoolTy, | |
PrimAppE LtP | |
[VarE "fltPrm45", | |
VarE "n16"]) | |
(IfE (VarE "fltIf44") | |
(LetE ("fltPkd47", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd46", | |
[], | |
PackedTy "Tree" | |
"loc323", | |
DataConE "loc323" | |
"Leaf" | |
[VarE "fltPkd47"]) | |
(Ext (LetLocE "loc324" | |
(AfterVariableLE "fltPkd46" | |
"loc323") | |
(LetE ("fltPkd48", | |
[], | |
PackedTy "Tree" | |
"loc324", | |
DataConE "loc324" | |
"Null" | |
[]) | |
(LetE ("indr237", | |
[], | |
CursorTy, | |
PrimAppE PEndOf | |
[VarE "fltPkd46"]) | |
(DataConE "loc269" | |
"Node^" | |
[VarE "indr237", | |
VarE "n16", | |
VarE "fltPkd46", | |
VarE "fltPkd48"]))))))) | |
(LetE ("fltPkd49", | |
[], | |
PackedTy "Tree" | |
"loc339", | |
DataConE "loc339" | |
"Null" | |
[]) | |
(Ext (LetLocE "loc340" | |
(AfterVariableLE "fltPkd49" | |
"loc339") | |
(LetE ("fltPkd51", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd50", | |
[], | |
PackedTy "Tree" | |
"loc340", | |
DataConE "loc340" | |
"Leaf" | |
[VarE "fltPkd51"]) | |
(LetE ("indr238", | |
[], | |
CursorTy, | |
PrimAppE PEndOf | |
[VarE "fltPkd49"]) | |
(DataConE "loc269" | |
"Node^" | |
[VarE "indr238", | |
VarE "n16", | |
VarE "fltPkd49", | |
VarE "fltPkd50"])))))))))), | |
("Node^", | |
[("sz239", | |
"case347"), | |
("n17", | |
"case348"), | |
("l8", | |
"case349"), | |
("r9", | |
"case350")], | |
LetE ("fltPrm53", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltIf52", | |
[], | |
BoolTy, | |
PrimAppE GtP | |
[VarE "n17", | |
VarE "fltPrm53"]) | |
(IfE (VarE "fltIf52") | |
(LetE ("fltPkd54", | |
[], | |
PackedTy "Tree" | |
"loc359", | |
Ext (IndirectionE "Tree" | |
"INDIRECTION464" | |
("loc359", | |
"r271") | |
("case349", | |
"r270") | |
(VarE "l8"))) | |
(Ext (LetLocE "loc360" | |
(AfterVariableLE "fltPkd54" | |
"loc359") | |
(LetE ("fltPrd57", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd55", | |
[], | |
PackedTy "Tree" | |
"loc360", | |
AppE "tree_insert" | |
["case350", | |
"loc360"] | |
(MkProdE [VarE "r9", | |
VarE "fltPrd57"])) | |
(LetE ("indr240", | |
[], | |
CursorTy, | |
PrimAppE PEndOf | |
[VarE "fltPkd54"]) | |
(DataConE "loc269" | |
"Node^" | |
[VarE "indr240", | |
VarE "n17", | |
VarE "fltPkd54", | |
VarE "fltPkd55"]))))))) | |
(LetE ("fltPrd60", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd58", | |
[], | |
PackedTy "Tree" | |
"loc375", | |
AppE "tree_insert" | |
["case349", | |
"loc375"] | |
(MkProdE [VarE "l8", | |
VarE "fltPrd60"])) | |
(Ext (LetLocE "loc376" | |
(AfterVariableLE "fltPkd58" | |
"loc375") | |
(LetE ("fltPkd61", | |
[], | |
PackedTy "Tree" | |
"loc376", | |
Ext (IndirectionE "Tree" | |
"INDIRECTION464" | |
("loc376", | |
"r271") | |
("case350", | |
"r270") | |
(VarE "r9"))) | |
(LetE ("indr241", | |
[], | |
CursorTy, | |
PrimAppE PEndOf | |
[VarE "fltPkd58"]) | |
(DataConE "loc269" | |
"Node^" | |
[VarE "indr241", | |
VarE "n17", | |
VarE "fltPkd58", | |
VarE "fltPkd61"]))))))))))])))))))))))))))))))))))))}), | |
("sum_tree", | |
FunDef {funname = "sum_tree", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc272", | |
lrmReg = VarR "r273", | |
lrmMode = Input}], | |
arrIn = PackedTy "Tree" "loc272", | |
arrEffs = [Traverse "loc272"], | |
arrOut = IntTy, | |
locRets = []}, | |
funarg = "tr10", | |
funbod = CaseE (VarE "tr10") | |
[("Null", [], LitE 0), | |
("Leaf", [("n11", "case385")], VarE "n11"), | |
("Node^", | |
[("sz242", "case386"),("n12", "case387"), | |
("l13", "case388"),("r14", "case389")], | |
LetE ("fltPrm63", | |
[], | |
IntTy, | |
AppE "sum_tree" ["case388"] (VarE "l13")) | |
(LetE ("fltPrm64", | |
[], | |
IntTy, | |
AppE "sum_tree" ["case389"] (VarE "r14")) | |
(LetE ("fltPrm62", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[VarE "fltPrm63", | |
VarE "fltPrm64"]) | |
(PrimAppE AddP | |
[VarE "n12", | |
VarE "fltPrm62"]))))]}), | |
("copy_tree", | |
FunDef {funname = "copy_tree", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc274", | |
lrmReg = VarR "r276", | |
lrmMode = Input}, | |
LRM {lrmLoc = "loc275", | |
lrmReg = VarR "r277", | |
lrmMode = Output}], | |
arrIn = PackedTy "Tree" "loc274", | |
arrEffs = [Traverse "loc274"], | |
arrOut = PackedTy "Tree" "loc275", | |
locRets = []}, | |
funarg = "tr15", | |
funbod = Ext (LetLocE "loc411" | |
(AfterConstantLE 1 "loc275") | |
(Ext (LetLocE "loc412" | |
(AfterConstantLE 8 "loc411") | |
(Ext (LetLocE "loc413" | |
(AfterConstantLE 8 | |
"loc412") | |
(CaseE (VarE "tr15") | |
[("Null", | |
[], | |
DataConE "loc275" | |
"Null" | |
[]), | |
("Leaf", | |
[("n16", | |
"case397")], | |
DataConE "loc275" | |
"Leaf" | |
[VarE "n16"]), | |
("Node^", | |
[("sz243", | |
"case401"), | |
("n117", | |
"case402"), | |
("l18", | |
"case403"), | |
("r19", | |
"case404")], | |
LetE ("fltPkd65", | |
[], | |
PackedTy "Tree" | |
"loc413", | |
AppE "copy_tree" | |
["case403", | |
"loc413"] | |
(VarE "l18")) | |
(Ext (LetLocE "loc414" | |
(AfterVariableLE "fltPkd65" | |
"loc413") | |
(LetE ("fltPkd66", | |
[], | |
PackedTy "Tree" | |
"loc414", | |
AppE "copy_tree" | |
["case404", | |
"loc414"] | |
(VarE "r19")) | |
(LetE ("indr244", | |
[], | |
CursorTy, | |
PrimAppE PEndOf | |
[VarE "fltPkd65"]) | |
(DataConE "loc275" | |
"Node^" | |
[VarE "indr244", | |
VarE "n117", | |
VarE "fltPkd65", | |
VarE "fltPkd66"]))))))]))))))}), | |
("copy_Tree", | |
FunDef {funname = "copy_Tree", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc278", | |
lrmReg = VarR "r280", | |
lrmMode = Input}, | |
LRM {lrmLoc = "loc279", | |
lrmReg = VarR "r281", | |
lrmMode = Output}], | |
arrIn = PackedTy "Tree" "loc278", | |
arrEffs = [Traverse "loc278"], | |
arrOut = PackedTy "Tree" "loc279", | |
locRets = []}, | |
funarg = "arg245", | |
funbod = Ext (LetLocE "loc437" | |
(AfterConstantLE 1 "loc279") | |
(Ext (LetLocE "loc438" | |
(AfterConstantLE 8 "loc437") | |
(Ext (LetLocE "loc454" | |
(AfterConstantLE 1 | |
"loc279") | |
(Ext (LetLocE "loc455" | |
(AfterConstantLE 8 | |
"loc454") | |
(Ext (LetLocE "loc456" | |
(AfterConstantLE 8 | |
"loc455") | |
(CaseE (VarE "arg245") | |
[("Null", | |
[], | |
DataConE "loc279" | |
"Null" | |
[]), | |
("Leaf", | |
[("x246", | |
"case424")], | |
DataConE "loc279" | |
"Leaf" | |
[VarE "x246"]), | |
("Node", | |
[("x248", | |
"case428"), | |
("x249", | |
"case429"), | |
("x250", | |
"case430")], | |
LetE ("y252", | |
[], | |
PackedTy "Tree" | |
"loc438", | |
AppE "copy_Tree" | |
["case429", | |
"loc438"] | |
(VarE "x249")) | |
(Ext (LetLocE "loc439" | |
(AfterVariableLE "y252" | |
"loc438") | |
(LetE ("y253", | |
[], | |
PackedTy "Tree" | |
"loc439", | |
AppE "copy_Tree" | |
["case430", | |
"loc439"] | |
(VarE "x250")) | |
(DataConE "loc279" | |
"Node" | |
[VarE "x248", | |
VarE "y252", | |
VarE "y253"]))))), | |
("Node^", | |
[("x254", | |
"case444"), | |
("x255", | |
"case445"), | |
("x256", | |
"case446"), | |
("x257", | |
"case447")], | |
LetE ("y260", | |
[], | |
PackedTy "Tree" | |
"loc456", | |
AppE "copy_Tree" | |
["case446", | |
"loc456"] | |
(VarE "x256")) | |
(Ext (LetLocE "loc457" | |
(AfterVariableLE "y260" | |
"loc456") | |
(LetE ("y261", | |
[], | |
PackedTy "Tree" | |
"loc457", | |
AppE "copy_Tree" | |
["case447", | |
"loc457"] | |
(VarE "x257")) | |
(DataConE "loc279" | |
"Node^" | |
[VarE "x254", | |
VarE "x255", | |
VarE "y260", | |
VarE "y261"])))))]))))))))))})], | |
mainExp = Just (Ext (LetRegionE (VarR "r292") | |
(Ext (LetLocE "loc287" | |
(StartOfLE (VarR "r292")) | |
(LetE ("tr03", | |
[], | |
PackedTy "Tree" "loc287", | |
AppE "helper" | |
["loc287"] | |
(MkProdE [LitE 1,LitE 2])) | |
(Ext (LetRegionE (VarR "r291") | |
(Ext (LetLocE "loc290" | |
(StartOfLE (VarR "r291")) | |
(LetE ("tr14", | |
[], | |
PackedTy "Tree" | |
"loc290", | |
TimeIt (AppE "tree_insert" | |
["loc287", | |
"loc290"] | |
(MkProdE [VarE "tr03", | |
LitE 1])) | |
(PackedTy "Tree" | |
"loc269") | |
False) | |
(AppE "sum_tree" | |
["loc290"] | |
(VarE "tr14"))))))))))), | |
IntTy)} | |
[compiler] Running pass, inferRegScope | |
Pass output: | |
================================================================================ | |
Prog {ddefs = [("Tree", | |
DDef {tyName = "Tree", | |
dataCons = [("Null", []),("Leaf", [(False, IntTy)]), | |
("Node", | |
[(False, IntTy),(False, PackedTy "Tree" "loc262"), | |
(False, PackedTy "Tree" "loc263")]), | |
("Node^", | |
[(False, CursorTy),(False, IntTy), | |
(False, PackedTy "Tree" "loc264"), | |
(False, PackedTy "Tree" "loc265")]), | |
("INDIRECTION464", [(False, CursorTy)])]})], | |
fundefs = [("helper", | |
FunDef {funname = "helper", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc266", | |
lrmReg = VarR "r267", | |
lrmMode = Output}], | |
arrIn = ProdTy [IntTy,IntTy], | |
arrEffs = [], | |
arrOut = PackedTy "Tree" "loc266", | |
locRets = []}, | |
funarg = "s_e020", | |
funbod = Ext (LetLocE "loc299" | |
(AfterConstantLE 1 "loc266") | |
(Ext (LetLocE "loc300" | |
(AfterConstantLE 8 "loc299") | |
(Ext (LetLocE "loc301" | |
(AfterConstantLE 8 | |
"loc300") | |
(LetE ("fltPrm23", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltPrm24", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltIf22", | |
[], | |
BoolTy, | |
PrimAppE LtP | |
[VarE "fltPrm23", | |
VarE "fltPrm24"]) | |
(IfE (VarE "fltIf22") | |
(DataConE "loc266" | |
"Null" | |
[]) | |
(LetE ("fltPrm26", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltPrm27", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltIf25", | |
[], | |
BoolTy, | |
PrimAppE EqIntP | |
[VarE "fltPrm26", | |
VarE "fltPrm27"]) | |
(IfE (VarE "fltIf25") | |
(LetE ("fltPkd28", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(DataConE "loc266" | |
"Leaf" | |
[VarE "fltPkd28"])) | |
(LetE ("fltPrm31", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltPrm32", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltPrm30", | |
[], | |
IntTy, | |
PrimAppE SubP | |
[VarE "fltPrm31", | |
VarE "fltPrm32"]) | |
(LetE ("fltPrm29", | |
[], | |
IntTy, | |
PrimAppE DivP | |
[VarE "fltPrm30", | |
LitE 2]) | |
(LetE ("fltPrm33", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("m21", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[VarE "fltPrm29", | |
VarE "fltPrm33"]) | |
(LetE ("fltPrd36", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltPrd37", | |
[], | |
IntTy, | |
PrimAppE SubP | |
[VarE "m21", | |
LitE 1]) | |
(LetE ("fltPkd34", | |
[], | |
PackedTy "Tree" | |
"loc301", | |
AppE "helper" | |
["loc301"] | |
(MkProdE [VarE "fltPrd36", | |
VarE "fltPrd37"])) | |
(Ext (LetLocE "loc302" | |
(AfterVariableLE "fltPkd34" | |
"loc301") | |
(LetE ("fltPrd40", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[VarE "m21", | |
LitE 1]) | |
(LetE ("fltPrd41", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltPkd38", | |
[], | |
PackedTy "Tree" | |
"loc302", | |
AppE "helper" | |
["loc302"] | |
(MkProdE [VarE "fltPrd40", | |
VarE "fltPrd41"])) | |
(LetE ("indr236", | |
[], | |
CursorTy, | |
PrimAppE PEndOf | |
[VarE "fltPkd34"]) | |
(DataConE "loc266" | |
"Node^" | |
[VarE "indr236", | |
VarE "m21", | |
VarE "fltPkd34", | |
VarE "fltPkd38"])))))))))))))))))))))))))))))}), | |
("tree_insert", | |
FunDef {funname = "tree_insert", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc268", | |
lrmReg = VarR "r270", | |
lrmMode = Input}, | |
LRM {lrmLoc = "loc269", | |
lrmReg = VarR "r271", | |
lrmMode = Output}], | |
arrIn = ProdTy [PackedTy "Tree" "loc268",IntTy], | |
arrEffs = [], | |
arrOut = PackedTy "Tree" "loc269", | |
locRets = []}, | |
funarg = "tr_n15", | |
funbod = Ext (LetLocE "loc321" | |
(AfterConstantLE 1 "loc269") | |
(Ext (LetLocE "loc322" | |
(AfterConstantLE 8 "loc321") | |
(Ext (LetLocE "loc323" | |
(AfterConstantLE 8 | |
"loc322") | |
(Ext (LetLocE "loc337" | |
(AfterConstantLE 1 | |
"loc269") | |
(Ext (LetLocE "loc338" | |
(AfterConstantLE 8 | |
"loc337") | |
(Ext (LetLocE "loc339" | |
(AfterConstantLE 8 | |
"loc338") | |
(Ext (LetLocE "loc357" | |
(AfterConstantLE 1 | |
"loc269") | |
(Ext (LetLocE "loc358" | |
(AfterConstantLE 8 | |
"loc357") | |
(Ext (LetLocE "loc359" | |
(AfterConstantLE 8 | |
"loc358") | |
(Ext (LetLocE "loc373" | |
(AfterConstantLE 1 | |
"loc269") | |
(Ext (LetLocE "loc374" | |
(AfterConstantLE 8 | |
"loc373") | |
(Ext (LetLocE "loc375" | |
(AfterConstantLE 8 | |
"loc374") | |
(LetE ("fltCse42", | |
[], | |
PackedTy "Tree" | |
"loc268", | |
ProjE 0 | |
(VarE "tr_n15")) | |
(CaseE (VarE "fltCse42") | |
[("Null", | |
[], | |
LetE ("fltPkd43", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(DataConE "loc269" | |
"Leaf" | |
[VarE "fltPkd43"])), | |
("Leaf", | |
[("n16", | |
"case314")], | |
LetE ("fltPrm45", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltIf44", | |
[], | |
BoolTy, | |
PrimAppE LtP | |
[VarE "fltPrm45", | |
VarE "n16"]) | |
(IfE (VarE "fltIf44") | |
(LetE ("fltPkd47", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd46", | |
[], | |
PackedTy "Tree" | |
"loc323", | |
DataConE "loc323" | |
"Leaf" | |
[VarE "fltPkd47"]) | |
(Ext (LetLocE "loc324" | |
(AfterVariableLE "fltPkd46" | |
"loc323") | |
(LetE ("fltPkd48", | |
[], | |
PackedTy "Tree" | |
"loc324", | |
DataConE "loc324" | |
"Null" | |
[]) | |
(LetE ("indr237", | |
[], | |
CursorTy, | |
PrimAppE PEndOf | |
[VarE "fltPkd46"]) | |
(DataConE "loc269" | |
"Node^" | |
[VarE "indr237", | |
VarE "n16", | |
VarE "fltPkd46", | |
VarE "fltPkd48"]))))))) | |
(LetE ("fltPkd49", | |
[], | |
PackedTy "Tree" | |
"loc339", | |
DataConE "loc339" | |
"Null" | |
[]) | |
(Ext (LetLocE "loc340" | |
(AfterVariableLE "fltPkd49" | |
"loc339") | |
(LetE ("fltPkd51", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd50", | |
[], | |
PackedTy "Tree" | |
"loc340", | |
DataConE "loc340" | |
"Leaf" | |
[VarE "fltPkd51"]) | |
(LetE ("indr238", | |
[], | |
CursorTy, | |
PrimAppE PEndOf | |
[VarE "fltPkd49"]) | |
(DataConE "loc269" | |
"Node^" | |
[VarE "indr238", | |
VarE "n16", | |
VarE "fltPkd49", | |
VarE "fltPkd50"])))))))))), | |
("Node^", | |
[("sz239", | |
"case347"), | |
("n17", | |
"case348"), | |
("l8", | |
"case349"), | |
("r9", | |
"case350")], | |
LetE ("fltPrm53", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltIf52", | |
[], | |
BoolTy, | |
PrimAppE GtP | |
[VarE "n17", | |
VarE "fltPrm53"]) | |
(IfE (VarE "fltIf52") | |
(LetE ("fltPkd54", | |
[], | |
PackedTy "Tree" | |
"loc359", | |
Ext (IndirectionE "Tree" | |
"INDIRECTION464" | |
("loc359", | |
"r271") | |
("case349", | |
"r270") | |
(VarE "l8"))) | |
(Ext (LetLocE "loc360" | |
(AfterVariableLE "fltPkd54" | |
"loc359") | |
(LetE ("fltPrd57", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd55", | |
[], | |
PackedTy "Tree" | |
"loc360", | |
AppE "tree_insert" | |
["case350", | |
"loc360"] | |
(MkProdE [VarE "r9", | |
VarE "fltPrd57"])) | |
(LetE ("indr240", | |
[], | |
CursorTy, | |
PrimAppE PEndOf | |
[VarE "fltPkd54"]) | |
(DataConE "loc269" | |
"Node^" | |
[VarE "indr240", | |
VarE "n17", | |
VarE "fltPkd54", | |
VarE "fltPkd55"]))))))) | |
(LetE ("fltPrd60", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd58", | |
[], | |
PackedTy "Tree" | |
"loc375", | |
AppE "tree_insert" | |
["case349", | |
"loc375"] | |
(MkProdE [VarE "l8", | |
VarE "fltPrd60"])) | |
(Ext (LetLocE "loc376" | |
(AfterVariableLE "fltPkd58" | |
"loc375") | |
(LetE ("fltPkd61", | |
[], | |
PackedTy "Tree" | |
"loc376", | |
Ext (IndirectionE "Tree" | |
"INDIRECTION464" | |
("loc376", | |
"r271") | |
("case350", | |
"r270") | |
(VarE "r9"))) | |
(LetE ("indr241", | |
[], | |
CursorTy, | |
PrimAppE PEndOf | |
[VarE "fltPkd58"]) | |
(DataConE "loc269" | |
"Node^" | |
[VarE "indr241", | |
VarE "n17", | |
VarE "fltPkd58", | |
VarE "fltPkd61"]))))))))))])))))))))))))))))))))))))}), | |
("sum_tree", | |
FunDef {funname = "sum_tree", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc272", | |
lrmReg = VarR "r273", | |
lrmMode = Input}], | |
arrIn = PackedTy "Tree" "loc272", | |
arrEffs = [Traverse "loc272"], | |
arrOut = IntTy, | |
locRets = []}, | |
funarg = "tr10", | |
funbod = CaseE (VarE "tr10") | |
[("Null", [], LitE 0), | |
("Leaf", [("n11", "case385")], VarE "n11"), | |
("Node^", | |
[("sz242", "case386"),("n12", "case387"), | |
("l13", "case388"),("r14", "case389")], | |
LetE ("fltPrm63", | |
[], | |
IntTy, | |
AppE "sum_tree" ["case388"] (VarE "l13")) | |
(LetE ("fltPrm64", | |
[], | |
IntTy, | |
AppE "sum_tree" ["case389"] (VarE "r14")) | |
(LetE ("fltPrm62", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[VarE "fltPrm63", | |
VarE "fltPrm64"]) | |
(PrimAppE AddP | |
[VarE "n12", | |
VarE "fltPrm62"]))))]}), | |
("copy_tree", | |
FunDef {funname = "copy_tree", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc274", | |
lrmReg = VarR "r276", | |
lrmMode = Input}, | |
LRM {lrmLoc = "loc275", | |
lrmReg = VarR "r277", | |
lrmMode = Output}], | |
arrIn = PackedTy "Tree" "loc274", | |
arrEffs = [Traverse "loc274"], | |
arrOut = PackedTy "Tree" "loc275", | |
locRets = []}, | |
funarg = "tr15", | |
funbod = Ext (LetLocE "loc411" | |
(AfterConstantLE 1 "loc275") | |
(Ext (LetLocE "loc412" | |
(AfterConstantLE 8 "loc411") | |
(Ext (LetLocE "loc413" | |
(AfterConstantLE 8 | |
"loc412") | |
(CaseE (VarE "tr15") | |
[("Null", | |
[], | |
DataConE "loc275" | |
"Null" | |
[]), | |
("Leaf", | |
[("n16", | |
"case397")], | |
DataConE "loc275" | |
"Leaf" | |
[VarE "n16"]), | |
("Node^", | |
[("sz243", | |
"case401"), | |
("n117", | |
"case402"), | |
("l18", | |
"case403"), | |
("r19", | |
"case404")], | |
LetE ("fltPkd65", | |
[], | |
PackedTy "Tree" | |
"loc413", | |
AppE "copy_tree" | |
["case403", | |
"loc413"] | |
(VarE "l18")) | |
(Ext (LetLocE "loc414" | |
(AfterVariableLE "fltPkd65" | |
"loc413") | |
(LetE ("fltPkd66", | |
[], | |
PackedTy "Tree" | |
"loc414", | |
AppE "copy_tree" | |
["case404", | |
"loc414"] | |
(VarE "r19")) | |
(LetE ("indr244", | |
[], | |
CursorTy, | |
PrimAppE PEndOf | |
[VarE "fltPkd65"]) | |
(DataConE "loc275" | |
"Node^" | |
[VarE "indr244", | |
VarE "n117", | |
VarE "fltPkd65", | |
VarE "fltPkd66"]))))))]))))))}), | |
("copy_Tree", | |
FunDef {funname = "copy_Tree", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc278", | |
lrmReg = VarR "r280", | |
lrmMode = Input}, | |
LRM {lrmLoc = "loc279", | |
lrmReg = VarR "r281", | |
lrmMode = Output}], | |
arrIn = PackedTy "Tree" "loc278", | |
arrEffs = [Traverse "loc278"], | |
arrOut = PackedTy "Tree" "loc279", | |
locRets = []}, | |
funarg = "arg245", | |
funbod = Ext (LetLocE "loc437" | |
(AfterConstantLE 1 "loc279") | |
(Ext (LetLocE "loc438" | |
(AfterConstantLE 8 "loc437") | |
(Ext (LetLocE "loc454" | |
(AfterConstantLE 1 | |
"loc279") | |
(Ext (LetLocE "loc455" | |
(AfterConstantLE 8 | |
"loc454") | |
(Ext (LetLocE "loc456" | |
(AfterConstantLE 8 | |
"loc455") | |
(CaseE (VarE "arg245") | |
[("Null", | |
[], | |
DataConE "loc279" | |
"Null" | |
[]), | |
("Leaf", | |
[("x246", | |
"case424")], | |
DataConE "loc279" | |
"Leaf" | |
[VarE "x246"]), | |
("Node", | |
[("x248", | |
"case428"), | |
("x249", | |
"case429"), | |
("x250", | |
"case430")], | |
LetE ("y252", | |
[], | |
PackedTy "Tree" | |
"loc438", | |
AppE "copy_Tree" | |
["case429", | |
"loc438"] | |
(VarE "x249")) | |
(Ext (LetLocE "loc439" | |
(AfterVariableLE "y252" | |
"loc438") | |
(LetE ("y253", | |
[], | |
PackedTy "Tree" | |
"loc439", | |
AppE "copy_Tree" | |
["case430", | |
"loc439"] | |
(VarE "x250")) | |
(DataConE "loc279" | |
"Node" | |
[VarE "x248", | |
VarE "y252", | |
VarE "y253"]))))), | |
("Node^", | |
[("x254", | |
"case444"), | |
("x255", | |
"case445"), | |
("x256", | |
"case446"), | |
("x257", | |
"case447")], | |
LetE ("y260", | |
[], | |
PackedTy "Tree" | |
"loc456", | |
AppE "copy_Tree" | |
["case446", | |
"loc456"] | |
(VarE "x256")) | |
(Ext (LetLocE "loc457" | |
(AfterVariableLE "y260" | |
"loc456") | |
(LetE ("y261", | |
[], | |
PackedTy "Tree" | |
"loc457", | |
AppE "copy_Tree" | |
["case447", | |
"loc457"] | |
(VarE "x257")) | |
(DataConE "loc279" | |
"Node^" | |
[VarE "x254", | |
VarE "x255", | |
VarE "y260", | |
VarE "y261"])))))]))))))))))})], | |
mainExp = Just (Ext (LetRegionE (GlobR "r292" Infinite) | |
(Ext (LetLocE "loc287" | |
(StartOfLE (VarR "r292")) | |
(LetE ("tr03", | |
[], | |
PackedTy "Tree" "loc287", | |
AppE "helper" | |
["loc287"] | |
(MkProdE [LitE 1,LitE 2])) | |
(Ext (LetRegionE (GlobR "r291" Infinite) | |
(Ext (LetLocE "loc290" | |
(StartOfLE (VarR "r291")) | |
(LetE ("tr14", | |
[], | |
PackedTy "Tree" | |
"loc290", | |
TimeIt (AppE "tree_insert" | |
["loc287", | |
"loc290"] | |
(MkProdE [VarE "tr03", | |
LitE 1])) | |
(PackedTy "Tree" | |
"loc269") | |
False) | |
(AppE "sum_tree" | |
["loc290"] | |
(VarE "tr14"))))))))))), | |
IntTy)} | |
[compiler] Running pass, L2.typecheck | |
Pass output: | |
================================================================================ | |
Prog {ddefs = [("Tree", | |
DDef {tyName = "Tree", | |
dataCons = [("Null", []),("Leaf", [(False, IntTy)]), | |
("Node", | |
[(False, IntTy),(False, PackedTy "Tree" "loc262"), | |
(False, PackedTy "Tree" "loc263")]), | |
("Node^", | |
[(False, CursorTy),(False, IntTy), | |
(False, PackedTy "Tree" "loc264"), | |
(False, PackedTy "Tree" "loc265")]), | |
("INDIRECTION464", [(False, CursorTy)])]})], | |
fundefs = [("helper", | |
FunDef {funname = "helper", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc266", | |
lrmReg = VarR "r267", | |
lrmMode = Output}], | |
arrIn = ProdTy [IntTy,IntTy], | |
arrEffs = [], | |
arrOut = PackedTy "Tree" "loc266", | |
locRets = []}, | |
funarg = "s_e020", | |
funbod = Ext (LetLocE "loc299" | |
(AfterConstantLE 1 "loc266") | |
(Ext (LetLocE "loc300" | |
(AfterConstantLE 8 "loc299") | |
(Ext (LetLocE "loc301" | |
(AfterConstantLE 8 | |
"loc300") | |
(LetE ("fltPrm23", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltPrm24", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltIf22", | |
[], | |
BoolTy, | |
PrimAppE LtP | |
[VarE "fltPrm23", | |
VarE "fltPrm24"]) | |
(IfE (VarE "fltIf22") | |
(DataConE "loc266" | |
"Null" | |
[]) | |
(LetE ("fltPrm26", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltPrm27", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltIf25", | |
[], | |
BoolTy, | |
PrimAppE EqIntP | |
[VarE "fltPrm26", | |
VarE "fltPrm27"]) | |
(IfE (VarE "fltIf25") | |
(LetE ("fltPkd28", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(DataConE "loc266" | |
"Leaf" | |
[VarE "fltPkd28"])) | |
(LetE ("fltPrm31", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltPrm32", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltPrm30", | |
[], | |
IntTy, | |
PrimAppE SubP | |
[VarE "fltPrm31", | |
VarE "fltPrm32"]) | |
(LetE ("fltPrm29", | |
[], | |
IntTy, | |
PrimAppE DivP | |
[VarE "fltPrm30", | |
LitE 2]) | |
(LetE ("fltPrm33", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("m21", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[VarE "fltPrm29", | |
VarE "fltPrm33"]) | |
(LetE ("fltPrd36", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltPrd37", | |
[], | |
IntTy, | |
PrimAppE SubP | |
[VarE "m21", | |
LitE 1]) | |
(LetE ("fltPkd34", | |
[], | |
PackedTy "Tree" | |
"loc301", | |
AppE "helper" | |
["loc301"] | |
(MkProdE [VarE "fltPrd36", | |
VarE "fltPrd37"])) | |
(Ext (LetLocE "loc302" | |
(AfterVariableLE "fltPkd34" | |
"loc301") | |
(LetE ("fltPrd40", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[VarE "m21", | |
LitE 1]) | |
(LetE ("fltPrd41", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltPkd38", | |
[], | |
PackedTy "Tree" | |
"loc302", | |
AppE "helper" | |
["loc302"] | |
(MkProdE [VarE "fltPrd40", | |
VarE "fltPrd41"])) | |
(LetE ("indr236", | |
[], | |
CursorTy, | |
PrimAppE PEndOf | |
[VarE "fltPkd34"]) | |
(DataConE "loc266" | |
"Node^" | |
[VarE "indr236", | |
VarE "m21", | |
VarE "fltPkd34", | |
VarE "fltPkd38"])))))))))))))))))))))))))))))}), | |
("tree_insert", | |
FunDef {funname = "tree_insert", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc268", | |
lrmReg = VarR "r270", | |
lrmMode = Input}, | |
LRM {lrmLoc = "loc269", | |
lrmReg = VarR "r271", | |
lrmMode = Output}], | |
arrIn = ProdTy [PackedTy "Tree" "loc268",IntTy], | |
arrEffs = [], | |
arrOut = PackedTy "Tree" "loc269", | |
locRets = []}, | |
funarg = "tr_n15", | |
funbod = Ext (LetLocE "loc321" | |
(AfterConstantLE 1 "loc269") | |
(Ext (LetLocE "loc322" | |
(AfterConstantLE 8 "loc321") | |
(Ext (LetLocE "loc323" | |
(AfterConstantLE 8 | |
"loc322") | |
(Ext (LetLocE "loc337" | |
(AfterConstantLE 1 | |
"loc269") | |
(Ext (LetLocE "loc338" | |
(AfterConstantLE 8 | |
"loc337") | |
(Ext (LetLocE "loc339" | |
(AfterConstantLE 8 | |
"loc338") | |
(Ext (LetLocE "loc357" | |
(AfterConstantLE 1 | |
"loc269") | |
(Ext (LetLocE "loc358" | |
(AfterConstantLE 8 | |
"loc357") | |
(Ext (LetLocE "loc359" | |
(AfterConstantLE 8 | |
"loc358") | |
(Ext (LetLocE "loc373" | |
(AfterConstantLE 1 | |
"loc269") | |
(Ext (LetLocE "loc374" | |
(AfterConstantLE 8 | |
"loc373") | |
(Ext (LetLocE "loc375" | |
(AfterConstantLE 8 | |
"loc374") | |
(LetE ("fltCse42", | |
[], | |
PackedTy "Tree" | |
"loc268", | |
ProjE 0 | |
(VarE "tr_n15")) | |
(CaseE (VarE "fltCse42") | |
[("Null", | |
[], | |
LetE ("fltPkd43", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(DataConE "loc269" | |
"Leaf" | |
[VarE "fltPkd43"])), | |
("Leaf", | |
[("n16", | |
"case314")], | |
LetE ("fltPrm45", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltIf44", | |
[], | |
BoolTy, | |
PrimAppE LtP | |
[VarE "fltPrm45", | |
VarE "n16"]) | |
(IfE (VarE "fltIf44") | |
(LetE ("fltPkd47", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd46", | |
[], | |
PackedTy "Tree" | |
"loc323", | |
DataConE "loc323" | |
"Leaf" | |
[VarE "fltPkd47"]) | |
(Ext (LetLocE "loc324" | |
(AfterVariableLE "fltPkd46" | |
"loc323") | |
(LetE ("fltPkd48", | |
[], | |
PackedTy "Tree" | |
"loc324", | |
DataConE "loc324" | |
"Null" | |
[]) | |
(LetE ("indr237", | |
[], | |
CursorTy, | |
PrimAppE PEndOf | |
[VarE "fltPkd46"]) | |
(DataConE "loc269" | |
"Node^" | |
[VarE "indr237", | |
VarE "n16", | |
VarE "fltPkd46", | |
VarE "fltPkd48"]))))))) | |
(LetE ("fltPkd49", | |
[], | |
PackedTy "Tree" | |
"loc339", | |
DataConE "loc339" | |
"Null" | |
[]) | |
(Ext (LetLocE "loc340" | |
(AfterVariableLE "fltPkd49" | |
"loc339") | |
(LetE ("fltPkd51", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd50", | |
[], | |
PackedTy "Tree" | |
"loc340", | |
DataConE "loc340" | |
"Leaf" | |
[VarE "fltPkd51"]) | |
(LetE ("indr238", | |
[], | |
CursorTy, | |
PrimAppE PEndOf | |
[VarE "fltPkd49"]) | |
(DataConE "loc269" | |
"Node^" | |
[VarE "indr238", | |
VarE "n16", | |
VarE "fltPkd49", | |
VarE "fltPkd50"])))))))))), | |
("Node^", | |
[("sz239", | |
"case347"), | |
("n17", | |
"case348"), | |
("l8", | |
"case349"), | |
("r9", | |
"case350")], | |
LetE ("fltPrm53", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltIf52", | |
[], | |
BoolTy, | |
PrimAppE GtP | |
[VarE "n17", | |
VarE "fltPrm53"]) | |
(IfE (VarE "fltIf52") | |
(LetE ("fltPkd54", | |
[], | |
PackedTy "Tree" | |
"loc359", | |
Ext (IndirectionE "Tree" | |
"INDIRECTION464" | |
("loc359", | |
"r271") | |
("case349", | |
"r270") | |
(VarE "l8"))) | |
(Ext (LetLocE "loc360" | |
(AfterVariableLE "fltPkd54" | |
"loc359") | |
(LetE ("fltPrd57", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd55", | |
[], | |
PackedTy "Tree" | |
"loc360", | |
AppE "tree_insert" | |
["case350", | |
"loc360"] | |
(MkProdE [VarE "r9", | |
VarE "fltPrd57"])) | |
(LetE ("indr240", | |
[], | |
CursorTy, | |
PrimAppE PEndOf | |
[VarE "fltPkd54"]) | |
(DataConE "loc269" | |
"Node^" | |
[VarE "indr240", | |
VarE "n17", | |
VarE "fltPkd54", | |
VarE "fltPkd55"]))))))) | |
(LetE ("fltPrd60", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd58", | |
[], | |
PackedTy "Tree" | |
"loc375", | |
AppE "tree_insert" | |
["case349", | |
"loc375"] | |
(MkProdE [VarE "l8", | |
VarE "fltPrd60"])) | |
(Ext (LetLocE "loc376" | |
(AfterVariableLE "fltPkd58" | |
"loc375") | |
(LetE ("fltPkd61", | |
[], | |
PackedTy "Tree" | |
"loc376", | |
Ext (IndirectionE "Tree" | |
"INDIRECTION464" | |
("loc376", | |
"r271") | |
("case350", | |
"r270") | |
(VarE "r9"))) | |
(LetE ("indr241", | |
[], | |
CursorTy, | |
PrimAppE PEndOf | |
[VarE "fltPkd58"]) | |
(DataConE "loc269" | |
"Node^" | |
[VarE "indr241", | |
VarE "n17", | |
VarE "fltPkd58", | |
VarE "fltPkd61"]))))))))))])))))))))))))))))))))))))}), | |
("sum_tree", | |
FunDef {funname = "sum_tree", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc272", | |
lrmReg = VarR "r273", | |
lrmMode = Input}], | |
arrIn = PackedTy "Tree" "loc272", | |
arrEffs = [Traverse "loc272"], | |
arrOut = IntTy, | |
locRets = []}, | |
funarg = "tr10", | |
funbod = CaseE (VarE "tr10") | |
[("Null", [], LitE 0), | |
("Leaf", [("n11", "case385")], VarE "n11"), | |
("Node^", | |
[("sz242", "case386"),("n12", "case387"), | |
("l13", "case388"),("r14", "case389")], | |
LetE ("fltPrm63", | |
[], | |
IntTy, | |
AppE "sum_tree" ["case388"] (VarE "l13")) | |
(LetE ("fltPrm64", | |
[], | |
IntTy, | |
AppE "sum_tree" ["case389"] (VarE "r14")) | |
(LetE ("fltPrm62", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[VarE "fltPrm63", | |
VarE "fltPrm64"]) | |
(PrimAppE AddP | |
[VarE "n12", | |
VarE "fltPrm62"]))))]}), | |
("copy_tree", | |
FunDef {funname = "copy_tree", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc274", | |
lrmReg = VarR "r276", | |
lrmMode = Input}, | |
LRM {lrmLoc = "loc275", | |
lrmReg = VarR "r277", | |
lrmMode = Output}], | |
arrIn = PackedTy "Tree" "loc274", | |
arrEffs = [Traverse "loc274"], | |
arrOut = PackedTy "Tree" "loc275", | |
locRets = []}, | |
funarg = "tr15", | |
funbod = Ext (LetLocE "loc411" | |
(AfterConstantLE 1 "loc275") | |
(Ext (LetLocE "loc412" | |
(AfterConstantLE 8 "loc411") | |
(Ext (LetLocE "loc413" | |
(AfterConstantLE 8 | |
"loc412") | |
(CaseE (VarE "tr15") | |
[("Null", | |
[], | |
DataConE "loc275" | |
"Null" | |
[]), | |
("Leaf", | |
[("n16", | |
"case397")], | |
DataConE "loc275" | |
"Leaf" | |
[VarE "n16"]), | |
("Node^", | |
[("sz243", | |
"case401"), | |
("n117", | |
"case402"), | |
("l18", | |
"case403"), | |
("r19", | |
"case404")], | |
LetE ("fltPkd65", | |
[], | |
PackedTy "Tree" | |
"loc413", | |
AppE "copy_tree" | |
["case403", | |
"loc413"] | |
(VarE "l18")) | |
(Ext (LetLocE "loc414" | |
(AfterVariableLE "fltPkd65" | |
"loc413") | |
(LetE ("fltPkd66", | |
[], | |
PackedTy "Tree" | |
"loc414", | |
AppE "copy_tree" | |
["case404", | |
"loc414"] | |
(VarE "r19")) | |
(LetE ("indr244", | |
[], | |
CursorTy, | |
PrimAppE PEndOf | |
[VarE "fltPkd65"]) | |
(DataConE "loc275" | |
"Node^" | |
[VarE "indr244", | |
VarE "n117", | |
VarE "fltPkd65", | |
VarE "fltPkd66"]))))))]))))))}), | |
("copy_Tree", | |
FunDef {funname = "copy_Tree", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc278", | |
lrmReg = VarR "r280", | |
lrmMode = Input}, | |
LRM {lrmLoc = "loc279", | |
lrmReg = VarR "r281", | |
lrmMode = Output}], | |
arrIn = PackedTy "Tree" "loc278", | |
arrEffs = [Traverse "loc278"], | |
arrOut = PackedTy "Tree" "loc279", | |
locRets = []}, | |
funarg = "arg245", | |
funbod = Ext (LetLocE "loc437" | |
(AfterConstantLE 1 "loc279") | |
(Ext (LetLocE "loc438" | |
(AfterConstantLE 8 "loc437") | |
(Ext (LetLocE "loc454" | |
(AfterConstantLE 1 | |
"loc279") | |
(Ext (LetLocE "loc455" | |
(AfterConstantLE 8 | |
"loc454") | |
(Ext (LetLocE "loc456" | |
(AfterConstantLE 8 | |
"loc455") | |
(CaseE (VarE "arg245") | |
[("Null", | |
[], | |
DataConE "loc279" | |
"Null" | |
[]), | |
("Leaf", | |
[("x246", | |
"case424")], | |
DataConE "loc279" | |
"Leaf" | |
[VarE "x246"]), | |
("Node", | |
[("x248", | |
"case428"), | |
("x249", | |
"case429"), | |
("x250", | |
"case430")], | |
LetE ("y252", | |
[], | |
PackedTy "Tree" | |
"loc438", | |
AppE "copy_Tree" | |
["case429", | |
"loc438"] | |
(VarE "x249")) | |
(Ext (LetLocE "loc439" | |
(AfterVariableLE "y252" | |
"loc438") | |
(LetE ("y253", | |
[], | |
PackedTy "Tree" | |
"loc439", | |
AppE "copy_Tree" | |
["case430", | |
"loc439"] | |
(VarE "x250")) | |
(DataConE "loc279" | |
"Node" | |
[VarE "x248", | |
VarE "y252", | |
VarE "y253"]))))), | |
("Node^", | |
[("x254", | |
"case444"), | |
("x255", | |
"case445"), | |
("x256", | |
"case446"), | |
("x257", | |
"case447")], | |
LetE ("y260", | |
[], | |
PackedTy "Tree" | |
"loc456", | |
AppE "copy_Tree" | |
["case446", | |
"loc456"] | |
(VarE "x256")) | |
(Ext (LetLocE "loc457" | |
(AfterVariableLE "y260" | |
"loc456") | |
(LetE ("y261", | |
[], | |
PackedTy "Tree" | |
"loc457", | |
AppE "copy_Tree" | |
["case447", | |
"loc457"] | |
(VarE "x257")) | |
(DataConE "loc279" | |
"Node^" | |
[VarE "x254", | |
VarE "x255", | |
VarE "y260", | |
VarE "y261"])))))]))))))))))})], | |
mainExp = Just (Ext (LetRegionE (GlobR "r292" Infinite) | |
(Ext (LetLocE "loc287" | |
(StartOfLE (VarR "r292")) | |
(LetE ("tr03", | |
[], | |
PackedTy "Tree" "loc287", | |
AppE "helper" | |
["loc287"] | |
(MkProdE [LitE 1,LitE 2])) | |
(Ext (LetRegionE (GlobR "r291" Infinite) | |
(Ext (LetLocE "loc290" | |
(StartOfLE (VarR "r291")) | |
(LetE ("tr14", | |
[], | |
PackedTy "Tree" | |
"loc290", | |
TimeIt (AppE "tree_insert" | |
["loc287", | |
"loc290"] | |
(MkProdE [VarE "tr03", | |
LitE 1])) | |
(PackedTy "Tree" | |
"loc269") | |
False) | |
(AppE "sum_tree" | |
["loc290"] | |
(VarE "tr14"))))))))))), | |
IntTy)} | |
[compiler] Running pass, routeEnds | |
Pass output: | |
================================================================================ | |
Prog {ddefs = [("Tree", | |
DDef {tyName = "Tree", | |
dataCons = [("Null", []),("Leaf", [(False, IntTy)]), | |
("Node", | |
[(False, IntTy),(False, PackedTy "Tree" "loc262"), | |
(False, PackedTy "Tree" "loc263")]), | |
("Node^", | |
[(False, CursorTy),(False, IntTy), | |
(False, PackedTy "Tree" "loc264"), | |
(False, PackedTy "Tree" "loc265")]), | |
("INDIRECTION464", [(False, CursorTy)])]})], | |
fundefs = [("helper", | |
FunDef {funname = "helper", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc266", | |
lrmReg = VarR "r267", | |
lrmMode = Output}], | |
arrIn = ProdTy [IntTy,IntTy], | |
arrEffs = [], | |
arrOut = PackedTy "Tree" "loc266", | |
locRets = []}, | |
funarg = "s_e020", | |
funbod = Ext (LetLocE "loc299" | |
(AfterConstantLE 1 "loc266") | |
(Ext (LetLocE "loc300" | |
(AfterConstantLE 8 "loc299") | |
(Ext (LetLocE "loc301" | |
(AfterConstantLE 8 | |
"loc300") | |
(LetE ("fltPrm23", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltPrm24", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltIf22", | |
[], | |
BoolTy, | |
PrimAppE LtP | |
[VarE "fltPrm23", | |
VarE "fltPrm24"]) | |
(IfE (VarE "fltIf22") | |
(LetE ("taildc465", | |
[], | |
PackedTy "Tree" | |
"loc266", | |
DataConE "loc266" | |
"Null" | |
[]) | |
(Ext (RetE [] | |
"taildc465"))) | |
(LetE ("fltPrm26", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltPrm27", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltIf25", | |
[], | |
BoolTy, | |
PrimAppE EqIntP | |
[VarE "fltPrm26", | |
VarE "fltPrm27"]) | |
(IfE (VarE "fltIf25") | |
(LetE ("fltPkd28", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("taildc466", | |
[], | |
PackedTy "Tree" | |
"loc266", | |
DataConE "loc266" | |
"Leaf" | |
[VarE "fltPkd28"]) | |
(Ext (RetE [] | |
"taildc466")))) | |
(LetE ("fltPrm31", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltPrm32", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltPrm30", | |
[], | |
IntTy, | |
PrimAppE SubP | |
[VarE "fltPrm31", | |
VarE "fltPrm32"]) | |
(LetE ("fltPrm29", | |
[], | |
IntTy, | |
PrimAppE DivP | |
[VarE "fltPrm30", | |
LitE 2]) | |
(LetE ("fltPrm33", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("m21", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[VarE "fltPrm29", | |
VarE "fltPrm33"]) | |
(LetE ("fltPrd36", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltPrd37", | |
[], | |
IntTy, | |
PrimAppE SubP | |
[VarE "m21", | |
LitE 1]) | |
(LetE ("fltPkd34", | |
[], | |
PackedTy "Tree" | |
"loc301", | |
AppE "helper" | |
["loc301"] | |
(MkProdE [VarE "fltPrd36", | |
VarE "fltPrd37"])) | |
(Ext (LetLocE "loc302" | |
(AfterVariableLE "fltPkd34" | |
"loc301") | |
(LetE ("fltPrd40", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[VarE "m21", | |
LitE 1]) | |
(LetE ("fltPrd41", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltPkd38", | |
[], | |
PackedTy "Tree" | |
"loc302", | |
AppE "helper" | |
["loc302"] | |
(MkProdE [VarE "fltPrd40", | |
VarE "fltPrd41"])) | |
(LetE ("indr236", | |
[], | |
CursorTy, | |
PrimAppE PEndOf | |
[VarE "fltPkd34"]) | |
(LetE ("taildc467", | |
[], | |
PackedTy "Tree" | |
"loc266", | |
DataConE "loc266" | |
"Node^" | |
[VarE "indr236", | |
VarE "m21", | |
VarE "fltPkd34", | |
VarE "fltPkd38"]) | |
(Ext (RetE [] | |
"taildc467")))))))))))))))))))))))))))))))}), | |
("tree_insert", | |
FunDef {funname = "tree_insert", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc268", | |
lrmReg = VarR "r270", | |
lrmMode = Input}, | |
LRM {lrmLoc = "loc269", | |
lrmReg = VarR "r271", | |
lrmMode = Output}], | |
arrIn = ProdTy [PackedTy "Tree" "loc268",IntTy], | |
arrEffs = [], | |
arrOut = PackedTy "Tree" "loc269", | |
locRets = []}, | |
funarg = "tr_n15", | |
funbod = Ext (LetLocE "loc321" | |
(AfterConstantLE 1 "loc269") | |
(Ext (LetLocE "loc322" | |
(AfterConstantLE 8 "loc321") | |
(Ext (LetLocE "loc323" | |
(AfterConstantLE 8 | |
"loc322") | |
(Ext (LetLocE "loc337" | |
(AfterConstantLE 1 | |
"loc269") | |
(Ext (LetLocE "loc338" | |
(AfterConstantLE 8 | |
"loc337") | |
(Ext (LetLocE "loc339" | |
(AfterConstantLE 8 | |
"loc338") | |
(Ext (LetLocE "loc357" | |
(AfterConstantLE 1 | |
"loc269") | |
(Ext (LetLocE "loc358" | |
(AfterConstantLE 8 | |
"loc357") | |
(Ext (LetLocE "loc359" | |
(AfterConstantLE 8 | |
"loc358") | |
(Ext (LetLocE "loc373" | |
(AfterConstantLE 1 | |
"loc269") | |
(Ext (LetLocE "loc374" | |
(AfterConstantLE 8 | |
"loc373") | |
(Ext (LetLocE "loc375" | |
(AfterConstantLE 8 | |
"loc374") | |
(LetE ("fltCse42", | |
[], | |
PackedTy "Tree" | |
"loc268", | |
ProjE 0 | |
(VarE "tr_n15")) | |
(CaseE (VarE "fltCse42") | |
[("Null", | |
[], | |
Ext (LetLocE "jump468" | |
(AfterConstantLE 1 | |
"loc268") | |
(LetE ("fltPkd43", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("taildc469", | |
[], | |
PackedTy "Tree" | |
"loc269", | |
DataConE "loc269" | |
"Leaf" | |
[VarE "fltPkd43"]) | |
(Ext (RetE [] | |
"taildc469")))))), | |
("Leaf", | |
[("n16", | |
"case314")], | |
Ext (LetLocE "jump470" | |
(AfterConstantLE 8 | |
"case314") | |
(LetE ("fltPrm45", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltIf44", | |
[], | |
BoolTy, | |
PrimAppE LtP | |
[VarE "fltPrm45", | |
VarE "n16"]) | |
(IfE (VarE "fltIf44") | |
(LetE ("fltPkd47", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd46", | |
[], | |
PackedTy "Tree" | |
"loc323", | |
DataConE "loc323" | |
"Leaf" | |
[VarE "fltPkd47"]) | |
(Ext (LetLocE "loc324" | |
(AfterVariableLE "fltPkd46" | |
"loc323") | |
(LetE ("fltPkd48", | |
[], | |
PackedTy "Tree" | |
"loc324", | |
DataConE "loc324" | |
"Null" | |
[]) | |
(LetE ("indr237", | |
[], | |
CursorTy, | |
PrimAppE PEndOf | |
[VarE "fltPkd46"]) | |
(LetE ("taildc471", | |
[], | |
PackedTy "Tree" | |
"loc269", | |
DataConE "loc269" | |
"Node^" | |
[VarE "indr237", | |
VarE "n16", | |
VarE "fltPkd46", | |
VarE "fltPkd48"]) | |
(Ext (RetE [] | |
"taildc471"))))))))) | |
(LetE ("fltPkd49", | |
[], | |
PackedTy "Tree" | |
"loc339", | |
DataConE "loc339" | |
"Null" | |
[]) | |
(Ext (LetLocE "loc340" | |
(AfterVariableLE "fltPkd49" | |
"loc339") | |
(LetE ("fltPkd51", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd50", | |
[], | |
PackedTy "Tree" | |
"loc340", | |
DataConE "loc340" | |
"Leaf" | |
[VarE "fltPkd51"]) | |
(LetE ("indr238", | |
[], | |
CursorTy, | |
PrimAppE PEndOf | |
[VarE "fltPkd49"]) | |
(LetE ("taildc472", | |
[], | |
PackedTy "Tree" | |
"loc269", | |
DataConE "loc269" | |
"Node^" | |
[VarE "indr238", | |
VarE "n16", | |
VarE "fltPkd49", | |
VarE "fltPkd50"]) | |
(Ext (RetE [] | |
"taildc472")))))))))))))), | |
("Node^", | |
[("sz239", | |
"case347"), | |
("n17", | |
"case348"), | |
("l8", | |
"case349"), | |
("r9", | |
"case350")], | |
Ext (LetLocE "jump474" | |
(AfterConstantLE 8 | |
"case348") | |
(Ext (LetLocE "jump473" | |
(AfterConstantLE 8 | |
"case347") | |
(LetE ("fltPrm53", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltIf52", | |
[], | |
BoolTy, | |
PrimAppE GtP | |
[VarE "n17", | |
VarE "fltPrm53"]) | |
(IfE (VarE "fltIf52") | |
(LetE ("fltPkd54", | |
[], | |
PackedTy "Tree" | |
"loc359", | |
Ext (IndirectionE "Tree" | |
"INDIRECTION464" | |
("loc359", | |
"r271") | |
("case349", | |
"r270") | |
(VarE "l8"))) | |
(Ext (LetLocE "loc360" | |
(AfterVariableLE "fltPkd54" | |
"loc359") | |
(LetE ("fltPrd57", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd55", | |
[], | |
PackedTy "Tree" | |
"loc360", | |
AppE "tree_insert" | |
["case350", | |
"loc360"] | |
(MkProdE [VarE "r9", | |
VarE "fltPrd57"])) | |
(LetE ("indr240", | |
[], | |
CursorTy, | |
PrimAppE PEndOf | |
[VarE "fltPkd54"]) | |
(LetE ("taildc475", | |
[], | |
PackedTy "Tree" | |
"loc269", | |
DataConE "loc269" | |
"Node^" | |
[VarE "indr240", | |
VarE "n17", | |
VarE "fltPkd54", | |
VarE "fltPkd55"]) | |
(Ext (RetE [] | |
"taildc475"))))))))) | |
(LetE ("fltPrd60", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd58", | |
[], | |
PackedTy "Tree" | |
"loc375", | |
AppE "tree_insert" | |
["case349", | |
"loc375"] | |
(MkProdE [VarE "l8", | |
VarE "fltPrd60"])) | |
(Ext (LetLocE "loc376" | |
(AfterVariableLE "fltPkd58" | |
"loc375") | |
(LetE ("fltPkd61", | |
[], | |
PackedTy "Tree" | |
"loc376", | |
Ext (IndirectionE "Tree" | |
"INDIRECTION464" | |
("loc376", | |
"r271") | |
("case350", | |
"r270") | |
(VarE "r9"))) | |
(LetE ("indr241", | |
[], | |
CursorTy, | |
PrimAppE PEndOf | |
[VarE "fltPkd58"]) | |
(LetE ("taildc476", | |
[], | |
PackedTy "Tree" | |
"loc269", | |
DataConE "loc269" | |
"Node^" | |
[VarE "indr241", | |
VarE "n17", | |
VarE "fltPkd58", | |
VarE "fltPkd61"]) | |
(Ext (RetE [] | |
"taildc476"))))))))))))))))])))))))))))))))))))))))))}), | |
("sum_tree", | |
FunDef {funname = "sum_tree", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc272", | |
lrmReg = VarR "r273", | |
lrmMode = Input}], | |
arrIn = PackedTy "Tree" "loc272", | |
arrEffs = [Traverse "loc272"], | |
arrOut = IntTy, | |
locRets = [EndOf (LRM | |
{lrmLoc = "loc272", | |
lrmReg = VarR "r273", | |
lrmMode = Input})]}, | |
funarg = "tr10", | |
funbod = CaseE (VarE "tr10") | |
[("Null", | |
[], | |
Ext (LetLocE "jump477" | |
(AfterConstantLE 1 "loc272") | |
(LetE ("fltLitTail478", [], IntTy, LitE 0) | |
(Ext (RetE ["jump477"] | |
"fltLitTail478"))))), | |
("Leaf", | |
[("n11", "case385")], | |
Ext (LetLocE "jump479" | |
(AfterConstantLE 8 "case385") | |
(Ext (RetE ["jump479"] "n11")))), | |
("Node^", | |
[("sz242", "case386"),("n12", "case387"), | |
("l13", "case388"),("r14", "case389")], | |
Ext (LetLocE "jump481" | |
(AfterConstantLE 8 "case387") | |
(Ext (LetLocE "jump480" | |
(AfterConstantLE 8 "case386") | |
(LetE ("fltPrm63", | |
["endof482"], | |
IntTy, | |
AppE "sum_tree" | |
["case388"] | |
(VarE "l13")) | |
(Ext (LetLocE "case389" | |
(FromEndLE "endof482") | |
(LetE ("fltPrm64", | |
["endof483"], | |
IntTy, | |
AppE "sum_tree" | |
["case389"] | |
(VarE "r14")) | |
(LetE ("fltPrm62", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[VarE "fltPrm63", | |
VarE "fltPrm64"]) | |
(LetE ("tailprim484", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[VarE "n12", | |
VarE "fltPrm62"]) | |
(Ext (RetE ["endof483"] | |
"tailprim484"))))))))))))]}), | |
("copy_tree", | |
FunDef {funname = "copy_tree", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc274", | |
lrmReg = VarR "r276", | |
lrmMode = Input}, | |
LRM {lrmLoc = "loc275", | |
lrmReg = VarR "r277", | |
lrmMode = Output}], | |
arrIn = PackedTy "Tree" "loc274", | |
arrEffs = [Traverse "loc274"], | |
arrOut = PackedTy "Tree" "loc275", | |
locRets = [EndOf (LRM | |
{lrmLoc = "loc274", | |
lrmReg = VarR "r276", | |
lrmMode = Input})]}, | |
funarg = "tr15", | |
funbod = Ext (LetLocE "loc411" | |
(AfterConstantLE 1 "loc275") | |
(Ext (LetLocE "loc412" | |
(AfterConstantLE 8 "loc411") | |
(Ext (LetLocE "loc413" | |
(AfterConstantLE 8 | |
"loc412") | |
(CaseE (VarE "tr15") | |
[("Null", | |
[], | |
Ext (LetLocE "jump485" | |
(AfterConstantLE 1 | |
"loc274") | |
(LetE ("taildc486", | |
[], | |
PackedTy "Tree" | |
"loc275", | |
DataConE "loc275" | |
"Null" | |
[]) | |
(Ext (RetE ["jump485"] | |
"taildc486"))))), | |
("Leaf", | |
[("n16", | |
"case397")], | |
Ext (LetLocE "jump487" | |
(AfterConstantLE 8 | |
"case397") | |
(LetE ("taildc488", | |
[], | |
PackedTy "Tree" | |
"loc275", | |
DataConE "loc275" | |
"Leaf" | |
[VarE "n16"]) | |
(Ext (RetE ["jump487"] | |
"taildc488"))))), | |
("Node^", | |
[("sz243", | |
"case401"), | |
("n117", | |
"case402"), | |
("l18", | |
"case403"), | |
("r19", | |
"case404")], | |
Ext (LetLocE "jump490" | |
(AfterConstantLE 8 | |
"case402") | |
(Ext (LetLocE "jump489" | |
(AfterConstantLE 8 | |
"case401") | |
(LetE ("fltPkd65", | |
["endof491"], | |
PackedTy "Tree" | |
"loc413", | |
AppE "copy_tree" | |
["case403", | |
"loc413"] | |
(VarE "l18")) | |
(Ext (LetLocE "case404" | |
(FromEndLE "endof491") | |
(Ext (LetLocE "loc414" | |
(AfterVariableLE "fltPkd65" | |
"loc413") | |
(LetE ("fltPkd66", | |
["endof492"], | |
PackedTy "Tree" | |
"loc414", | |
AppE "copy_tree" | |
["case404", | |
"loc414"] | |
(VarE "r19")) | |
(LetE ("indr244", | |
[], | |
CursorTy, | |
PrimAppE PEndOf | |
[VarE "fltPkd65"]) | |
(LetE ("taildc493", | |
[], | |
PackedTy "Tree" | |
"loc275", | |
DataConE "loc275" | |
"Node^" | |
[VarE "indr244", | |
VarE "n117", | |
VarE "fltPkd65", | |
VarE "fltPkd66"]) | |
(Ext (RetE ["endof492"] | |
"taildc493"))))))))))))))]))))))}), | |
("copy_Tree", | |
FunDef {funname = "copy_Tree", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc278", | |
lrmReg = VarR "r280", | |
lrmMode = Input}, | |
LRM {lrmLoc = "loc279", | |
lrmReg = VarR "r281", | |
lrmMode = Output}], | |
arrIn = PackedTy "Tree" "loc278", | |
arrEffs = [Traverse "loc278"], | |
arrOut = PackedTy "Tree" "loc279", | |
locRets = [EndOf (LRM | |
{lrmLoc = "loc278", | |
lrmReg = VarR "r280", | |
lrmMode = Input})]}, | |
funarg = "arg245", | |
funbod = Ext (LetLocE "loc437" | |
(AfterConstantLE 1 "loc279") | |
(Ext (LetLocE "loc438" | |
(AfterConstantLE 8 "loc437") | |
(Ext (LetLocE "loc454" | |
(AfterConstantLE 1 | |
"loc279") | |
(Ext (LetLocE "loc455" | |
(AfterConstantLE 8 | |
"loc454") | |
(Ext (LetLocE "loc456" | |
(AfterConstantLE 8 | |
"loc455") | |
(CaseE (VarE "arg245") | |
[("Null", | |
[], | |
Ext (LetLocE "jump494" | |
(AfterConstantLE 1 | |
"loc278") | |
(LetE ("taildc495", | |
[], | |
PackedTy "Tree" | |
"loc279", | |
DataConE "loc279" | |
"Null" | |
[]) | |
(Ext (RetE ["jump494"] | |
"taildc495"))))), | |
("Leaf", | |
[("x246", | |
"case424")], | |
Ext (LetLocE "jump496" | |
(AfterConstantLE 8 | |
"case424") | |
(LetE ("taildc497", | |
[], | |
PackedTy "Tree" | |
"loc279", | |
DataConE "loc279" | |
"Leaf" | |
[VarE "x246"]) | |
(Ext (RetE ["jump496"] | |
"taildc497"))))), | |
("Node", | |
[("x248", | |
"case428"), | |
("x249", | |
"case429"), | |
("x250", | |
"case430")], | |
Ext (LetLocE "jump498" | |
(AfterConstantLE 8 | |
"case428") | |
(LetE ("y252", | |
["endof499"], | |
PackedTy "Tree" | |
"loc438", | |
AppE "copy_Tree" | |
["case429", | |
"loc438"] | |
(VarE "x249")) | |
(Ext (LetLocE "case430" | |
(FromEndLE "endof499") | |
(Ext (LetLocE "loc439" | |
(AfterVariableLE "y252" | |
"loc438") | |
(LetE ("y253", | |
["endof500"], | |
PackedTy "Tree" | |
"loc439", | |
AppE "copy_Tree" | |
["case430", | |
"loc439"] | |
(VarE "x250")) | |
(LetE ("taildc501", | |
[], | |
PackedTy "Tree" | |
"loc279", | |
DataConE "loc279" | |
"Node" | |
[VarE "x248", | |
VarE "y252", | |
VarE "y253"]) | |
(Ext (RetE ["endof500"] | |
"taildc501"))))))))))), | |
("Node^", | |
[("x254", | |
"case444"), | |
("x255", | |
"case445"), | |
("x256", | |
"case446"), | |
("x257", | |
"case447")], | |
Ext (LetLocE "jump503" | |
(AfterConstantLE 8 | |
"case445") | |
(Ext (LetLocE "jump502" | |
(AfterConstantLE 8 | |
"case444") | |
(LetE ("y260", | |
["endof504"], | |
PackedTy "Tree" | |
"loc456", | |
AppE "copy_Tree" | |
["case446", | |
"loc456"] | |
(VarE "x256")) | |
(Ext (LetLocE "case447" | |
(FromEndLE "endof504") | |
(Ext (LetLocE "loc457" | |
(AfterVariableLE "y260" | |
"loc456") | |
(LetE ("y261", | |
["endof505"], | |
PackedTy "Tree" | |
"loc457", | |
AppE "copy_Tree" | |
["case447", | |
"loc457"] | |
(VarE "x257")) | |
(LetE ("taildc506", | |
[], | |
PackedTy "Tree" | |
"loc279", | |
DataConE "loc279" | |
"Node^" | |
[VarE "x254", | |
VarE "x255", | |
VarE "y260", | |
VarE "y261"]) | |
(Ext (RetE ["endof505"] | |
"taildc506")))))))))))))]))))))))))})], | |
mainExp = Just (Ext (LetRegionE (GlobR "r292" Infinite) | |
(Ext (LetLocE "loc287" | |
(StartOfLE (VarR "r292")) | |
(LetE ("tr03", | |
[], | |
PackedTy "Tree" "loc287", | |
AppE "helper" | |
["loc287"] | |
(MkProdE [LitE 1,LitE 2])) | |
(Ext (LetRegionE (GlobR "r291" Infinite) | |
(Ext (LetLocE "loc290" | |
(StartOfLE (VarR "r291")) | |
(LetE ("tr14", | |
[], | |
PackedTy "Tree" | |
"loc290", | |
TimeIt (LetE ("tailapp507", | |
[], | |
PackedTy "Tree" | |
"loc290", | |
AppE "tree_insert" | |
["loc287", | |
"loc290"] | |
(MkProdE [VarE "tr03", | |
LitE 1])) | |
(Ext (RetE [] | |
"tailapp507"))) | |
(PackedTy "Tree" | |
"loc269") | |
False) | |
(LetE ("tailapp508", | |
["endof509"], | |
IntTy, | |
AppE "sum_tree" | |
["loc290"] | |
(VarE "tr14")) | |
(Ext (RetE [] | |
"tailapp508")))))))))))), | |
IntTy)} | |
[compiler] Running pass, L2.typecheck | |
Pass output: | |
================================================================================ | |
Prog {ddefs = [("Tree", | |
DDef {tyName = "Tree", | |
dataCons = [("Null", []),("Leaf", [(False, IntTy)]), | |
("Node", | |
[(False, IntTy),(False, PackedTy "Tree" "loc262"), | |
(False, PackedTy "Tree" "loc263")]), | |
("Node^", | |
[(False, CursorTy),(False, IntTy), | |
(False, PackedTy "Tree" "loc264"), | |
(False, PackedTy "Tree" "loc265")]), | |
("INDIRECTION464", [(False, CursorTy)])]})], | |
fundefs = [("helper", | |
FunDef {funname = "helper", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc266", | |
lrmReg = VarR "r267", | |
lrmMode = Output}], | |
arrIn = ProdTy [IntTy,IntTy], | |
arrEffs = [], | |
arrOut = PackedTy "Tree" "loc266", | |
locRets = []}, | |
funarg = "s_e020", | |
funbod = Ext (LetLocE "loc299" | |
(AfterConstantLE 1 "loc266") | |
(Ext (LetLocE "loc300" | |
(AfterConstantLE 8 "loc299") | |
(Ext (LetLocE "loc301" | |
(AfterConstantLE 8 | |
"loc300") | |
(LetE ("fltPrm23", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltPrm24", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltIf22", | |
[], | |
BoolTy, | |
PrimAppE LtP | |
[VarE "fltPrm23", | |
VarE "fltPrm24"]) | |
(IfE (VarE "fltIf22") | |
(LetE ("taildc465", | |
[], | |
PackedTy "Tree" | |
"loc266", | |
DataConE "loc266" | |
"Null" | |
[]) | |
(Ext (RetE [] | |
"taildc465"))) | |
(LetE ("fltPrm26", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltPrm27", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltIf25", | |
[], | |
BoolTy, | |
PrimAppE EqIntP | |
[VarE "fltPrm26", | |
VarE "fltPrm27"]) | |
(IfE (VarE "fltIf25") | |
(LetE ("fltPkd28", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("taildc466", | |
[], | |
PackedTy "Tree" | |
"loc266", | |
DataConE "loc266" | |
"Leaf" | |
[VarE "fltPkd28"]) | |
(Ext (RetE [] | |
"taildc466")))) | |
(LetE ("fltPrm31", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltPrm32", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltPrm30", | |
[], | |
IntTy, | |
PrimAppE SubP | |
[VarE "fltPrm31", | |
VarE "fltPrm32"]) | |
(LetE ("fltPrm29", | |
[], | |
IntTy, | |
PrimAppE DivP | |
[VarE "fltPrm30", | |
LitE 2]) | |
(LetE ("fltPrm33", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("m21", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[VarE "fltPrm29", | |
VarE "fltPrm33"]) | |
(LetE ("fltPrd36", | |
[], | |
IntTy, | |
ProjE 0 | |
(VarE "s_e020")) | |
(LetE ("fltPrd37", | |
[], | |
IntTy, | |
PrimAppE SubP | |
[VarE "m21", | |
LitE 1]) | |
(LetE ("fltPkd34", | |
[], | |
PackedTy "Tree" | |
"loc301", | |
AppE "helper" | |
["loc301"] | |
(MkProdE [VarE "fltPrd36", | |
VarE "fltPrd37"])) | |
(Ext (LetLocE "loc302" | |
(AfterVariableLE "fltPkd34" | |
"loc301") | |
(LetE ("fltPrd40", | |
[], | |
IntTy, | |
PrimAppE AddP | |
[VarE "m21", | |
LitE 1]) | |
(LetE ("fltPrd41", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "s_e020")) | |
(LetE ("fltPkd38", | |
[], | |
PackedTy "Tree" | |
"loc302", | |
AppE "helper" | |
["loc302"] | |
(MkProdE [VarE "fltPrd40", | |
VarE "fltPrd41"])) | |
(LetE ("indr236", | |
[], | |
CursorTy, | |
PrimAppE PEndOf | |
[VarE "fltPkd34"]) | |
(LetE ("taildc467", | |
[], | |
PackedTy "Tree" | |
"loc266", | |
DataConE "loc266" | |
"Node^" | |
[VarE "indr236", | |
VarE "m21", | |
VarE "fltPkd34", | |
VarE "fltPkd38"]) | |
(Ext (RetE [] | |
"taildc467")))))))))))))))))))))))))))))))}), | |
("tree_insert", | |
FunDef {funname = "tree_insert", | |
funty = ArrowTy {locVars = [LRM {lrmLoc = "loc268", | |
lrmReg = VarR "r270", | |
lrmMode = Input}, | |
LRM {lrmLoc = "loc269", | |
lrmReg = VarR "r271", | |
lrmMode = Output}], | |
arrIn = ProdTy [PackedTy "Tree" "loc268",IntTy], | |
arrEffs = [], | |
arrOut = PackedTy "Tree" "loc269", | |
locRets = []}, | |
funarg = "tr_n15", | |
funbod = Ext (LetLocE "loc321" | |
(AfterConstantLE 1 "loc269") | |
(Ext (LetLocE "loc322" | |
(AfterConstantLE 8 "loc321") | |
(Ext (LetLocE "loc323" | |
(AfterConstantLE 8 | |
"loc322") | |
(Ext (LetLocE "loc337" | |
(AfterConstantLE 1 | |
"loc269") | |
(Ext (LetLocE "loc338" | |
(AfterConstantLE 8 | |
"loc337") | |
(Ext (LetLocE "loc339" | |
(AfterConstantLE 8 | |
"loc338") | |
(Ext (LetLocE "loc357" | |
(AfterConstantLE 1 | |
"loc269") | |
(Ext (LetLocE "loc358" | |
(AfterConstantLE 8 | |
"loc357") | |
(Ext (LetLocE "loc359" | |
(AfterConstantLE 8 | |
"loc358") | |
(Ext (LetLocE "loc373" | |
(AfterConstantLE 1 | |
"loc269") | |
(Ext (LetLocE "loc374" | |
(AfterConstantLE 8 | |
"loc373") | |
(Ext (LetLocE "loc375" | |
(AfterConstantLE 8 | |
"loc374") | |
(LetE ("fltCse42", | |
[], | |
PackedTy "Tree" | |
"loc268", | |
ProjE 0 | |
(VarE "tr_n15")) | |
(CaseE (VarE "fltCse42") | |
[("Null", | |
[], | |
Ext (LetLocE "jump468" | |
(AfterConstantLE 1 | |
"loc268") | |
(LetE ("fltPkd43", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("taildc469", | |
[], | |
PackedTy "Tree" | |
"loc269", | |
DataConE "loc269" | |
"Leaf" | |
[VarE "fltPkd43"]) | |
(Ext (RetE [] | |
"taildc469")))))), | |
("Leaf", | |
[("n16", | |
"case314")], | |
Ext (LetLocE "jump470" | |
(AfterConstantLE 8 | |
"case314") | |
(LetE ("fltPrm45", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltIf44", | |
[], | |
BoolTy, | |
PrimAppE LtP | |
[VarE "fltPrm45", | |
VarE "n16"]) | |
(IfE (VarE "fltIf44") | |
(LetE ("fltPkd47", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd46", | |
[], | |
PackedTy "Tree" | |
"loc323", | |
DataConE "loc323" | |
"Leaf" | |
[VarE "fltPkd47"]) | |
(Ext (LetLocE "loc324" | |
(AfterVariableLE "fltPkd46" | |
"loc323") | |
(LetE ("fltPkd48", | |
[], | |
PackedTy "Tree" | |
"loc324", | |
DataConE "loc324" | |
"Null" | |
[]) | |
(LetE ("indr237", | |
[], | |
CursorTy, | |
PrimAppE PEndOf | |
[VarE "fltPkd46"]) | |
(LetE ("taildc471", | |
[], | |
PackedTy "Tree" | |
"loc269", | |
DataConE "loc269" | |
"Node^" | |
[VarE "indr237", | |
VarE "n16", | |
VarE "fltPkd46", | |
VarE "fltPkd48"]) | |
(Ext (RetE [] | |
"taildc471"))))))))) | |
(LetE ("fltPkd49", | |
[], | |
PackedTy "Tree" | |
"loc339", | |
DataConE "loc339" | |
"Null" | |
[]) | |
(Ext (LetLocE "loc340" | |
(AfterVariableLE "fltPkd49" | |
"loc339") | |
(LetE ("fltPkd51", | |
[], | |
IntTy, | |
ProjE 1 | |
(VarE "tr_n15")) | |
(LetE ("fltPkd50", | |
[], | |
PackedTy "Tree" | |
"loc340", | |
DataConE "loc340" | |
"Leaf" | |
[VarE "fltPkd51"]) | |
(LetE ("indr238", | |
[], | |
CursorTy, | |
PrimAppE PEndOf | |
[VarE "fltPkd49"]) | |
(LetE ("taildc472", | |
[], | |
PackedTy "Tree" | |
"loc269", | |
DataConE "loc269" | |
"Node^" | |
[VarE "indr238", | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment