Skip to content

Instantly share code, notes, and snippets.

@vollmerm
Created May 3, 2018 17:08
Show Gist options
  • Save vollmerm/b2a0a22dd65832466871149dd33edcf6 to your computer and use it in GitHub Desktop.
Save vollmerm/b2a0a22dd65832466871149dd33edcf6 to your computer and use it in GitHub Desktop.
This file has been truncated, but you can view the full file.
! 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