refactor: use getEnv/modifyEnv more in IR (#9290)

This commit is contained in:
Cameron Zwarich 2025-07-09 17:01:56 -07:00 committed by GitHub
parent 3e37eef9ea
commit 66de09bc9c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 8 additions and 10 deletions

View file

@ -71,6 +71,9 @@ private def logMessageIfAux {α : Type} [ToFormat α] (optName : Name) (a : α)
@[inline] def modifyEnv (f : Environment → Environment) : CompilerM Unit :=
modify fun s => { s with env := f s.env }
def getEnv : CompilerM Environment := do
let s ← get; pure s.env
abbrev DeclMap := PHashMap Name Decl
private abbrev declLt (a b : Decl) :=
@ -185,7 +188,7 @@ private def findInterpreterDecl (env : Environment) (declName : Name) : Option D
| none => declMapExt.getState env |>.find? declName
def findDecl (n : Name) : CompilerM (Option Decl) :=
return findEnvDecl (← get).env n
return findEnvDecl (← getEnv) n
def containsDecl (n : Name) : CompilerM Bool :=
return (← findDecl n).isSome
@ -200,9 +203,6 @@ def addDeclAux (env : Environment) (decl : Decl) : Environment :=
def getDecls (env : Environment) : List Decl :=
declMapExt.getEntries env
def getEnv : CompilerM Environment := do
let s ← get; pure s.env
def addDecl (decl : Decl) : CompilerM Unit :=
modifyEnv fun env => declMapExt.addEntry (env.addExtraName decl.name) decl
@ -215,7 +215,7 @@ def findEnvDecl' (env : Environment) (n : Name) (decls : Array Decl) : Option De
| none => findEnvDecl env n
def findDecl' (n : Name) (decls : Array Decl) : CompilerM (Option Decl) :=
return findEnvDecl' (← get).env n decls
return findEnvDecl' (← getEnv) n decls
def containsDecl' (n : Name) (decls : Array Decl) : CompilerM Bool := do
if decls.any fun decl => decl.name == n then

View file

@ -320,8 +320,7 @@ end UnreachableBranches
open UnreachableBranches
def elimDeadBranches (decls : Array Decl) : CompilerM (Array Decl) := do
let s ← get
let env := s.env
let env ← getEnv
let assignments : Array Assignment := decls.map fun _ => {}
let funVals := mkPArray decls.size Value.bot
let visitedJps := decls.map fun _ => {}
@ -330,10 +329,9 @@ def elimDeadBranches (decls : Array Decl) : CompilerM (Array Decl) := do
let (_, s) := (inferMain ctx).run s
let funVals := s.funVals
let assignments := s.assignments
modify fun s =>
let env := decls.size.fold (init := s.env) fun i _ env =>
modifyEnv fun env =>
decls.size.fold (init := env) fun i _ env =>
addFunctionSummary env decls[i].name funVals[i]!
{ s with env := env }
return decls.mapIdx fun i decl => elimDead assignments[i]! decl
builtin_initialize registerTraceClass `compiler.ir.elim_dead_branches (inherited := true)