refactor: declare passes when declaring transformations
This commit is contained in:
parent
1c41a750ed
commit
fde8d35bbb
8 changed files with 36 additions and 24 deletions
|
|
@ -5,6 +5,7 @@ Authors: Leonardo de Moura
|
|||
-/
|
||||
import Lean.Compiler.LCNF.CompilerM
|
||||
import Lean.Compiler.LCNF.ToExpr
|
||||
import Lean.Compiler.LCNF.PassManager
|
||||
|
||||
namespace Lean.Compiler.LCNF
|
||||
|
||||
|
|
@ -98,4 +99,10 @@ def Decl.cse (decl : Decl) : CompilerM Decl := do
|
|||
let value ← decl.value.cse
|
||||
return { decl with value }
|
||||
|
||||
def cse : Pass :=
|
||||
.mkPerDeclaration `cse Decl.cse
|
||||
|
||||
builtin_initialize
|
||||
registerTraceClass `Compiler.cse (inherited := true)
|
||||
|
||||
end Lean.Compiler.LCNF
|
||||
|
|
|
|||
|
|
@ -66,6 +66,9 @@ def run (declNames : Array Name) : CompilerM (Array Decl) := do
|
|||
decls ← pass.run decls
|
||||
checkpoint pass.name decls
|
||||
saveStage1Decls decls
|
||||
if (← Lean.isTracingEnabledFor `Compiler.result) then
|
||||
for decl in decls do
|
||||
Lean.addTrace `Compiler.result m!"size: {decl.size}\n{← ppDecl decl}"
|
||||
return decls
|
||||
|
||||
end PassManager
|
||||
|
|
@ -77,10 +80,8 @@ def compileStage1Impl (declNames : Array Name) : CoreM (Array Decl) :=
|
|||
|
||||
builtin_initialize
|
||||
registerTraceClass `Compiler.init (inherited := true)
|
||||
registerTraceClass `Compiler.simp (inherited := true)
|
||||
registerTraceClass `Compiler.pullInstances (inherited := true)
|
||||
registerTraceClass `Compiler.cse (inherited := true)
|
||||
registerTraceClass `Compiler.test (inherited := true)
|
||||
registerTraceClass `Compiler.result (inherited := true)
|
||||
registerTraceClass `Compiler.jp
|
||||
|
||||
end Lean.Compiler.LCNF
|
||||
|
|
|
|||
|
|
@ -37,6 +37,9 @@ namespace PassInstaller
|
|||
def installAtEnd (p : Pass) : PassInstaller where
|
||||
install passes := return passes.push p
|
||||
|
||||
def append (passesNew : Array Pass) : PassInstaller where
|
||||
install passes := return passes ++ passesNew
|
||||
|
||||
def installAfter (targetName : Name) (p : Pass) : PassInstaller where
|
||||
install passes :=
|
||||
if let some idx := passes.findIdx? (·.name == targetName) then
|
||||
|
|
|
|||
|
|
@ -13,23 +13,7 @@ import Lean.Compiler.LCNF.ReduceJpArity
|
|||
namespace Lean.Compiler.LCNF
|
||||
|
||||
@[cpass]
|
||||
def pullInstancesInstaller : PassInstaller :=
|
||||
.installAfter `init (.mkPerDeclaration `pullInstances Decl.pullInstances)
|
||||
|
||||
@[cpass]
|
||||
def cseInstaller : PassInstaller :=
|
||||
.installAfter `pullInstances (.mkPerDeclaration `cse Decl.cse)
|
||||
|
||||
@[cpass]
|
||||
def simpInstaller : PassInstaller :=
|
||||
.installAfter `cse (.mkPerDeclaration `simp Decl.simp)
|
||||
|
||||
@[cpass]
|
||||
def toJoinPointInstaller : PassInstaller :=
|
||||
.installAfter `simp (.mkPerDeclaration `pullFunDecls Decl.pullFunDecls)
|
||||
|
||||
@[cpass]
|
||||
def reduceJpArityInstaller : PassInstaller :=
|
||||
.installAfter `pullFunDecls (.mkPerDeclaration `reduceJpArity Decl.reduceJpArity)
|
||||
def builtin : PassInstaller :=
|
||||
.append #[pullInstances, cse, simp, pullFunDecls, reduceJpArity, simp]
|
||||
|
||||
end Lean.Compiler.LCNF
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ Authors: Leonardo de Moura
|
|||
-/
|
||||
import Lean.Compiler.LCNF.CompilerM
|
||||
import Lean.Compiler.LCNF.DependsOn
|
||||
import Lean.Compiler.LCNF.PassManager
|
||||
|
||||
namespace Lean.Compiler.LCNF
|
||||
namespace PullFunDecls
|
||||
|
|
@ -179,6 +180,9 @@ def Decl.pullFunDecls (decl : Decl) : CompilerM Decl := do
|
|||
let value ← attach ps value |>.run' []
|
||||
return { decl with value }
|
||||
|
||||
def pullFunDecls : Pass :=
|
||||
.mkPerDeclaration `pullFunDecls Decl.pullFunDecls
|
||||
|
||||
builtin_initialize
|
||||
registerTraceClass `Compiler.pullFunDecls (inherited := true)
|
||||
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ Authors: Leonardo de Moura
|
|||
import Lean.Compiler.LCNF.CompilerM
|
||||
import Lean.Compiler.LCNF.DependsOn
|
||||
import Lean.Compiler.LCNF.Types
|
||||
import Lean.Compiler.LCNF.PassManager
|
||||
|
||||
namespace Lean.Compiler.LCNF
|
||||
namespace PullLetDecls
|
||||
|
|
@ -107,4 +108,10 @@ def Decl.pullInstances (decl : Decl) : CompilerM Decl :=
|
|||
else
|
||||
return false
|
||||
|
||||
def pullInstances : Pass :=
|
||||
.mkPerDeclaration `pullInstances Decl.pullInstances
|
||||
|
||||
builtin_initialize
|
||||
registerTraceClass `Compiler.pullInstances (inherited := true)
|
||||
|
||||
end Lean.Compiler.LCNF
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ Authors: Leonardo de Moura
|
|||
-/
|
||||
import Lean.Compiler.LCNF.CompilerM
|
||||
import Lean.Compiler.LCNF.InferType
|
||||
import Lean.Compiler.LCNF.PassManager
|
||||
|
||||
namespace Lean.Compiler.LCNF
|
||||
/-!
|
||||
|
|
@ -69,6 +70,9 @@ def Decl.reduceJpArity (decl : Decl) : CompilerM Decl := do
|
|||
let value ← reduce decl.value |>.run {}
|
||||
return { decl with value }
|
||||
|
||||
def reduceJpArity : Pass :=
|
||||
.mkPerDeclaration `reduceJpArity Decl.reduceJpArity
|
||||
|
||||
builtin_initialize
|
||||
registerTraceClass `Compiler.reduceJpArity (inherited := true)
|
||||
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import Lean.Compiler.LCNF.ElimDead
|
|||
import Lean.Compiler.LCNF.Bind
|
||||
import Lean.Compiler.LCNF.PrettyPrinter
|
||||
import Lean.Compiler.LCNF.Stage1
|
||||
import Lean.Compiler.LCNF.PassManager
|
||||
|
||||
namespace Lean.Compiler.LCNF
|
||||
namespace Simp
|
||||
|
|
@ -769,12 +770,13 @@ partial def Decl.simp (decl : Decl) : CompilerM Decl := do
|
|||
else
|
||||
return decl
|
||||
|
||||
def simp : Pass :=
|
||||
.mkPerDeclaration `simp Decl.simp
|
||||
|
||||
builtin_initialize
|
||||
registerTraceClass `Compiler.simp.inline
|
||||
registerTraceClass `Compiler.simp.inline.info
|
||||
registerTraceClass `Compiler.simp (inherited := true)
|
||||
registerTraceClass `Compiler.simp.stat
|
||||
registerTraceClass `Compiler.simp.step
|
||||
registerTraceClass `Compiler.simp.step.new
|
||||
registerTraceClass `Compiler.simp.projInst
|
||||
|
||||
end Lean.Compiler.LCNF
|
||||
Loading…
Add table
Reference in a new issue