6 |
struct |
struct |
7 |
|
|
8 |
local structure CB = CompBasic |
local structure CB = CompBasic |
9 |
structure CGC = Control.CG |
(* structure CGC = Control.CG *) |
10 |
structure MachSpec = Gen.MachSpec |
structure MachSpec = Gen.MachSpec |
11 |
structure Convert = Convert(MachSpec) |
structure Convert = Convert(MachSpec) |
12 |
structure CPStrans = CPStrans(MachSpec) |
structure CPStrans = CPStrans(MachSpec) |
23 |
fun phase x = Stats.doPhase (Stats.makePhase x) |
fun phase x = Stats.doPhase (Stats.makePhase x) |
24 |
|
|
25 |
val lcontract = phase "Compiler 052 lcontract" LContract.lcontract |
val lcontract = phase "Compiler 052 lcontract" LContract.lcontract |
26 |
|
val fcontract = phase "Compiler 052 fcontract" FContract.contract |
27 |
val specialize= phase "Compiler 053 specialize" Specialize.specialize |
val specialize= phase "Compiler 053 specialize" Specialize.specialize |
28 |
val wrapping = phase "Compiler 054 wrapping" Wrapping.wrapping |
val wrapping = phase "Compiler 054 wrapping" Wrapping.wrapping |
29 |
val reify = phase "Compiler 055 reify" Reify.reify |
val reify = phase "Compiler 055 reify" Reify.reify |
30 |
(* val lambdaopt = phase "Compiler 057 lambdaopt" LContract.lcontract *) |
val fixfix = phase "Compiler 056 fixfix" FixFix.fixfix |
31 |
|
|
32 |
val convert = phase "Compiler 060 convert" Convert.convert |
val convert = phase "Compiler 060 convert" Convert.convert |
33 |
val cpstrans = phase "Compiler 065 cpstrans" CPStrans.cpstrans |
val cpstrans = phase "Compiler 065 cpstrans" CPStrans.cpstrans |
56 |
if !flag then (say ("\n[After " ^ s ^ " ...]\n\n"); printE e; |
if !flag then (say ("\n[After " ^ s ^ " ...]\n\n"); printE e; |
57 |
say "\n"; e) |
say "\n"; e) |
58 |
else e |
else e |
59 |
in (prGen (CGC.printFlint, PPFlint.printProg), |
in (prGen (Control.FLINT.print, PPFlint.printProg), |
60 |
prGen (CGC.printit, PPCps.printcps0)) |
prGen (Control.CG.printit, PPCps.printcps0)) |
61 |
end |
end |
62 |
|
|
63 |
(** writing out a term into a error output file *) |
(** writing out a term into a error output file *) |
85 |
e) |
e) |
86 |
fun chkF (b, s) = |
fun chkF (b, s) = |
87 |
check (ChkFlint.checkTop, PPFlint.printFundec, |
check (ChkFlint.checkTop, PPFlint.printFundec, |
88 |
"FLINT") (CGC.checkFlint, b, s) |
"FLINT") (Control.FLINT.check, b, s) |
89 |
|
|
90 |
val _ = (chkF (false,"1") o prF "Translation/Normalization") flint |
val _ = (chkF (false,"1") o prF "Translation/Normalization") flint |
91 |
val flint = (chkF (false,"2") o prF "Lcontract" o lcontract) flint |
val flint = (chkF (false,"2") o prF "Fcontract" o fcontract) flint |
92 |
|
|
93 |
val flint = |
val flint = |
94 |
if !CGC.specialize then |
if !Control.FLINT.specialize then |
95 |
(chkF (false,"3") o prF "Specialization" o specialize) flint |
(chkF (false,"3") o prF "Specialization" o specialize) flint |
96 |
else flint |
else flint |
97 |
|
|
98 |
|
(* val flint = (chkF (false,"6") o prF "FixFix" o fixfix) flint *) |
99 |
|
val flint = (chkF (false,"2") o prF "Fcontract" o fcontract) flint |
100 |
|
|
101 |
val flint = (chkF (false, "4") o prF "Wrapping" o wrapping) flint |
val flint = (chkF (false, "4") o prF "Wrapping" o wrapping) flint |
102 |
val flint = (chkF (true, "5") o prF "Reify" o reify) flint |
val flint = (chkF (true, "5") o prF "Reify" o reify) flint |
103 |
|
|
104 |
|
val flint = (chkF (true,"2") o prF "Fcontract" o fcontract) flint |
105 |
|
|
106 |
val (nc0, ncn, dseg) = |
val (nc0, ncn, dseg) = |
107 |
let val function = convert flint |
let val function = convert flint |
108 |
val _ = prC "convert" function |
val _ = prC "convert" function |
109 |
val function = (prC "cpstrans" o cpstrans) function |
val function = (prC "cpstrans" o cpstrans) function |
110 |
val function = |
val function = |
111 |
if !CGC.cpsopt then cpsopt (function,NONE,false) |
if !Control.CG.cpsopt then cpsopt (function,NONE,false) |
112 |
else function |
else function |
113 |
val _ = prC "cpsopt" function |
val _ = prC "cpsopt" function |
114 |
|
|