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