lean4-htt/src/Lean/Compiler/LCNF
Henrik Böving b8c53b1d29
chore: remove IR elim dead branches (#11576)
This PR removes the old ElimDeadBranches pass and shifts the new one
past lambda lifting.

The reason for dropping the old one is its general unsoundness and the
fact that we want to do refactorings on the IR part. The reason for
shifting the current pass past lambda lifting, is that its analysis is
imprecise in the presence of local function symbols. I experimented with
the exact placement for a while and it seems like it is optimal here.
Overall we observe a slight regression in the amount of C code
generated, likely because we don't propagate information into lambdas
before lifting them anymore. But generally measure a slight performance
improvement in general.
2025-12-11 10:39:02 +00:00
..
Simp perf: eliminate cases with all branches unreachable (#11525) 2025-12-05 20:30:20 +00:00
AlphaEqv.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
AuxDeclCache.lean chore: remove redundant imports in core (#10750) 2025-10-16 20:27:46 +00:00
BaseTypes.lean chore: remove redundant imports in core (#10750) 2025-10-16 20:27:46 +00:00
Basic.lean chore: remove redundant imports in core (#10750) 2025-10-16 20:27:46 +00:00
Bind.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
Check.lean chore: remove redundant imports in core (#10750) 2025-10-16 20:27:46 +00:00
Closure.lean perf: during specialization, don't abstract all local fun decls under binders (#9596) 2025-07-28 17:36:43 +00:00
CompatibleTypes.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
CompilerM.lean chore: remove redundant imports in core (#10750) 2025-10-16 20:27:46 +00:00
ConfigOptions.lean chore: do not set unused Option.Decl.group (#11307) 2025-11-21 16:44:38 +00:00
CSE.lean chore: remove redundant imports in core (#10750) 2025-10-16 20:27:46 +00:00
DeclHash.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
DependsOn.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
ElimDead.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
ElimDeadBranches.lean perf: sort before elim dead branches (#11366) 2025-11-27 22:21:06 +00:00
ExtractClosed.lean fix: toposort declarations to ensure proper constant initialization (#11388) 2025-11-26 18:17:17 +00:00
FixedParams.lean chore: remove redundant imports in core (#10750) 2025-10-16 20:27:46 +00:00
FloatLetIn.lean chore: remove redundant imports in core (#10750) 2025-10-16 20:27:46 +00:00
FVarUtil.lean chore: remove redundant imports in core (#10750) 2025-10-16 20:27:46 +00:00
InferType.lean chore: remove redundant imports in core (#10750) 2025-10-16 20:27:46 +00:00
Internalize.lean chore: remove redundant imports in core (#10750) 2025-10-16 20:27:46 +00:00
Irrelevant.lean feat: zero cost BaseIO (#10625) 2025-10-22 10:55:12 +02:00
JoinPoints.lean perf: improve join point finding (#10999) 2025-10-30 15:05:11 +00:00
LambdaLifting.lean perf: eta contract instead of lambda lifting if possible (#11451) 2025-12-02 08:39:24 +00:00
LCtx.lean chore: remove redundant imports in core (#10750) 2025-10-16 20:27:46 +00:00
Level.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
Main.lean feat: sparse casesOn constructions (#11072) 2025-11-05 15:49:11 +00:00
MonadScope.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
MonoTypes.lean feat: zero cost BaseIO (#10625) 2025-10-22 10:55:12 +02:00
OtherDecl.lean chore: remove redundant imports in core (#10750) 2025-10-16 20:27:46 +00:00
Passes.lean chore: remove IR elim dead branches (#11576) 2025-12-11 10:39:02 +00:00
PassManager.lean chore: remove redundant imports in core (#10750) 2025-10-16 20:27:46 +00:00
PhaseExt.lean perf: remove unused argument to ExternEntry.opaque (#11066) 2025-11-03 17:26:32 +00:00
PrettyPrinter.lean chore: remove redundant imports in core (#10750) 2025-10-16 20:27:46 +00:00
Probing.lean chore: remove redundant imports in core (#10750) 2025-10-16 20:27:46 +00:00
PullFunDecls.lean chore: remove redundant imports in core (#10750) 2025-10-16 20:27:46 +00:00
PullLetDecls.lean chore: remove redundant imports in core (#10750) 2025-10-16 20:27:46 +00:00
ReduceArity.lean fix: consider over-applications in reduceArity compiler pass (#11185) 2025-11-17 07:51:37 +00:00
ReduceJpArity.lean chore: remove redundant imports in core (#10750) 2025-10-16 20:27:46 +00:00
Renaming.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
ScopeM.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
Simp.lean chore: remove redundant imports in core (#10750) 2025-10-16 20:27:46 +00:00
Specialize.lean chore: beta reduce in specialization keys (#11353) 2025-11-25 12:14:36 +00:00
SpecInfo.lean chore: remove redundant imports in core (#10750) 2025-10-16 20:27:46 +00:00
StructProjCases.lean fix: compilation of projections on non trivial structures (#11340) 2025-11-24 19:25:03 +00:00
Testing.lean chore: remove redundant imports in core (#10750) 2025-10-16 20:27:46 +00:00
ToDecl.lean chore: remove IR elim dead branches (#11576) 2025-12-11 10:39:02 +00:00
ToExpr.lean fix: overeager specialisation reuse in codegen (#10429) 2025-09-17 17:35:40 +00:00
ToLCNF.lean perf: handle per-constructor noConfusion in toLCNF (#11566) 2025-12-10 09:03:55 +00:00
ToMono.lean chore: remove redundant imports in core (#10750) 2025-10-16 20:27:46 +00:00
Types.lean chore: make compilation type mismatch error message from non-exposed defs a lot less mysterious (#11177) 2025-11-14 10:50:43 +00:00
Util.lean perf: sparse case splitting in match compilation (#10823) 2025-11-06 13:46:35 +00:00
Visibility.lean chore: make declMetaExt persistent for shake (#11201) 2025-11-16 20:11:56 +00:00