SCM Repository
View of /branches/vis12/src/compiler/low-il/low-opt.sml
Parent Directory
|
Revision Log
Revision 2682 -
(download)
(annotate)
Mon Aug 25 17:20:56 2014 UTC (6 years, 5 months ago) by jhr
File size: 1685 byte(s)
Mon Aug 25 17:20:56 2014 UTC (6 years, 5 months ago) by jhr
File size: 1685 byte(s)
more accurate description of command-line options when "-h" is given
(* low-opt.sml * * COPYRIGHT (c) 2011 The Diderot Project (http://diderot-language.cs.uchicago.edu) * All rights reserved. *) structure LowOptimizer : sig val controls : (string * bool ref * string) list val optimize : LowIL.program -> LowIL.program end = struct (* Value numbering for LowIL *) structure VN = ValueNumberingFn (DomTreeFn(LowIL)) val vnFlag = ref true (* controls value numbering *) val debugFlag = ref true (* controls printing *) val checkFlag = ref true (* controls IL checking *) val controls = [ ("low-vn", vnFlag, "value-numbering for LowIL"), ("low-debug", debugFlag, "printing LowIL to log file [debug]"), ("low-check", checkFlag, "consistency checking for LowIL [debug]") ] val timeCheck = PhaseTimer.withTimer Timers.timeLowCheck (fn arg => CheckLowIL.check arg) fun checkIL (phase, prog) = if !checkFlag andalso timeCheck ("after " ^ phase, prog) then ( TextIO.output(TextIO.stdErr, concat[ "***** Internal error after ", phase, ": see log file for details\n" ]); LowPP.output (Log.logFile(), "LowIL after " ^ phase, prog); OS.Process.exit OS.Process.failure) else if !debugFlag then ( LowPP.output (Log.logFile(), "LowIL after " ^ phase, prog); prog) else prog fun transform (ctl, timer, phase, transform, prog) = if !ctl then checkIL(phase, PhaseTimer.withTimer timer transform prog) else prog fun optimize prog = let val prog = transform (vnFlag, Timers.timeLowVN, "value numbering", VN.transform, prog) in prog end end
root@smlnj-gforge.cs.uchicago.edu | ViewVC Help |
Powered by ViewVC 1.0.0 |