Mario Carneiro
583e023314
chore: snake-case attributes (part 2)
2022-10-19 09:28:08 -07:00
Leonardo de Moura
0a126b7702
perf: better support for "inlineable" instances
2022-10-14 08:42:50 -07:00
Leonardo de Moura
31f2acd97a
chore: cleanup trace messages
2022-10-13 18:56:17 -07:00
Leonardo de Moura
1f54c0126c
doc: add note at Decl.simp
2022-10-13 04:26:05 -07:00
Leonardo de Moura
8fe4b75c48
feat: do not inline definitions occurring in instances at the base phase
2022-10-12 16:24:16 -07:00
Leonardo de Moura
45974229d2
feat: reactivate extendJoinPointContext at mono phase
...
closes #1686
cc @hargoniX
2022-10-07 16:27:44 -07:00
Leonardo de Moura
ddbf4c01eb
refactor: add DiscrM.lean
2022-10-03 19:00:30 -07:00
Leonardo de Moura
fd5f3a5bad
feat: track recursively inlining
...
closes #1657
see #1646
https://leanprover.zulipchat.com/#narrow/stream/270676-lean4/topic/inline.20codegen.20crash/near/301099703
2022-09-27 16:26:49 -07:00
Leonardo de Moura
1e75001405
feat: preserve user provided names at LCNF Simp
...
It helps preserving let-declaration names in pure code, but it is not
very useful for monadic let-decls (e.g., `let x <- act`). The binder
names are often lost we eliminating the abstraction layers.
2022-09-26 21:04:13 -07:00
Leonardo de Moura
837ce4374c
feat: use reduceJpArity after successful simpJpCases?
2022-09-26 07:25:29 -07:00
Leonardo de Moura
35ca2b203c
refactor: split Simp.lean
2022-09-26 07:04:20 -07:00
Mario Carneiro
85119ba9d1
chore: move Std.* data structures to Lean.*
2022-09-26 05:46:04 -07:00
Leonardo de Moura
fd1ae3118c
feat: replace isCasesOnCases? with simpJpCases?
...
It addresses the code explosion issue with the old optimization.
For example, the resulting size for `Lean.Json.Parser.escapedChar`
went from 31593 to 361.
2022-09-25 20:57:24 -07:00
Leonardo de Moura
bbac49e925
feat: add collectJpCasesInfo
...
Collect statistics for implementing new optimization that will replace `isCasesOnCases?`
2022-09-25 20:57:24 -07:00
Leonardo de Moura
c858aa3088
feat: replace getStage1Decl? with new getDecl?
2022-09-24 15:00:19 -07:00
Leonardo de Moura
6343b97acb
feat: display inlining stack when maximum recursion depth has been reached
2022-09-24 14:20:21 -07:00
Leonardo de Moura
947811cab8
fix: zero exit points != one exit point
2022-09-24 08:13:17 -07:00
Leonardo de Moura
c333581689
fix: functions occurring as arguments of other functions are not inlined
2022-09-23 14:43:06 -07:00
Leonardo de Moura
609d241ad4
fix: improve updateFunDeclInfo precision
2022-09-23 13:56:14 -07:00
Leonardo de Moura
727ee79f05
fix: exponential blowup at LCNF simp
2022-09-20 17:03:40 -07:00
Leonardo de Moura
990b031871
feat: add translator attribute to MonadFVarSubst class
...
See new comments.
2022-09-20 16:58:27 -07:00
Leonardo de Moura
70f615d074
fix: avoid "unknown constant" error message for auxiliary declarations
2022-09-18 15:39:58 -07:00
Leonardo de Moura
db6ee72aed
chore: typo
2022-09-17 09:55:46 -07:00
Leonardo de Moura
3c6dee8048
fix: LCNF eta expansion bug at Simp.lean
2022-09-16 18:00:27 -07:00
Leonardo de Moura
c1b7accd12
refactor: LCNF local context
...
The previous implementation had a few issues:
- Function (and join point) declarations were being inserted into two different hashmaps.
- `borrow` information was not available for parameters.
- No proper erase functions.
2022-09-14 19:25:16 -07:00
Gabriel Ebner
f1b5fa53f0
chore: use new comment syntax
2022-09-14 08:26:17 -07:00
Leonardo de Moura
fccb60fb69
feat: support for [inlineIfReduce] at new compiler
2022-09-13 18:23:42 -07:00
Leonardo de Moura
1350a57a03
refactor: remove pure field from LCNF.LetDecl
...
We decide that in phase 3 we will assume everything is impure, and
this kind of fine-grain tracking is not worth it.
2022-09-12 19:13:43 -07:00
Leonardo de Moura
506cf01d94
fix: bug at simpCasesOnCtor?
2022-09-12 16:02:19 -07:00
Henrik Böving
c6db1099d0
feat: add occurences and phases to PassManager
2022-09-10 14:58:49 -07:00
Leonardo de Moura
ca098d3769
feat: inline applications of the form inline (f ...)
...
The `inline` identity function is a directive for the compiler.
2022-09-10 13:28:49 -07:00
Leonardo de Moura
a40118c79d
chore: disable eager applyCasesOnImplementedBy
...
It must be performed at phase 2.
We still want to perform the regular `[implementedBy]` replacements at
phase 1 since they affect code specialization.
2022-09-08 14:50:27 -07:00
Leonardo de Moura
1c188b62cd
chore: typo
2022-09-08 14:50:27 -07:00
Leonardo de Moura
0a21603cdc
feat: apply implementedBy replacements at second simp pass
2022-09-07 20:38:16 -07:00
Leonardo de Moura
661eb39bc8
feat: add inlinePartial config option
2022-09-06 20:46:17 -07:00
Leonardo de Moura
56f0d6c183
feat: specialize partial applications of local functions
2022-09-06 06:44:33 -07:00
Leonardo de Moura
c769808a4e
chore: add TODO
2022-09-05 19:35:17 -07:00
Leonardo de Moura
1812e86c7f
feat: eta expand partial applications of functions that take local instances as arguments
2022-09-05 19:33:22 -07:00
Leonardo de Moura
7113d71cd2
doc: LCNF/Simp.lean docstrings
2022-09-05 17:36:35 -07:00
Leonardo de Moura
1207e5e285
feat: erase cases when all alternatives are the same
2022-09-05 17:22:54 -07:00
Leonardo de Moura
58d8224d9e
feat: add LCNF cases default
2022-09-05 14:08:14 -07:00
Leonardo de Moura
fde8d35bbb
refactor: declare passes when declaring transformations
2022-09-05 06:58:32 -07:00
Leonardo de Moura
56ea3af6e2
doc: Compiler/LCNF/Simp.lean
2022-09-03 19:44:10 -07:00
Leonardo de Moura
9f44e9c858
feat: simplify nested cases on the same discriminant
2022-09-03 19:44:10 -07:00
Leonardo de Moura
5478485de1
feat: allow "small prefix" at cases on cases optimization
2022-09-03 08:21:11 -07:00
Leonardo de Moura
bc88b0307e
feat: cases on cases for new LCNF simplifier
2022-09-03 07:54:19 -07:00
Leonardo de Moura
196c9537f2
feat: eta reduction at toLCNF
2022-09-02 06:31:06 -07:00
Leonardo de Moura
d5dcd5e856
feat: eta-expand local function declarations that are not being inlined
2022-09-02 05:22:41 -07:00
Leonardo de Moura
dfdbec51ad
fix: typo
2022-09-02 03:41:49 -07:00
Leonardo de Moura
baf4f1c152
perf: simpValue? before inlineApp?
2022-09-02 03:20:59 -07:00