Commit graph

638 commits

Author SHA1 Message Date
Henrik Böving
1e00eff3e7 fix: jp context extender missed out on some variables 2022-10-21 17:58:47 -07:00
Henrik Böving
dac6127810 feat: Compiler pass for reducing common jp args 2022-10-21 17:35:40 -07:00
Henrik Böving
a608532fd4 chore: Improve LCNF check goto error message 2022-10-21 17:35:40 -07:00
Mario Carneiro
dd8bbe9367 fix: catch kernel exceptions in Kernel.{isDefEq, whnf}
fixes #1756
2022-10-20 05:38:29 -07:00
Mario Carneiro
583e023314 chore: snake-case attributes (part 2) 2022-10-19 09:28:08 -07:00
Mario Carneiro
dd5948d641 chore: snake-case attributes (part 1) 2022-10-19 09:28:08 -07:00
Leonardo de Moura
ec59bbe15c chore: ensure LCNF pretty printer result supports Format.group 2022-10-16 16:06:08 -07:00
Leonardo de Moura
72c576f62a feat: complete reduceArity pass 2022-10-16 16:00:33 -07:00
Leonardo de Moura
9244a7a8a5 fix: ensure old and new compiler auxiliary declaration names do not collide 2022-10-16 14:49:55 -07:00
Leonardo de Moura
40f2247c61 perf: zero cost IR extension startup cost 2022-10-16 14:49:50 -07:00
Leonardo de Moura
defd544d5d feat: add collectUsedParams 2022-10-16 14:20:32 -07:00
Leonardo de Moura
4eaf22118a feat: add cse pass at mono phase 2022-10-16 08:58:06 -07:00
Leonardo de Moura
fd46ef01e8 chore: add another floatLetIn pass
See `elabAppFn` for a function that benefits from this extra pass.
2022-10-16 08:51:13 -07:00
Leonardo de Moura
bebce084fa fix: bug at toLCNF.visitMData 2022-10-16 07:38:40 -07:00
Leonardo de Moura
8a81dfb876 feat: add Probe.sortedBySize, Probe.tail, and Probe.head 2022-10-15 20:12:53 -07:00
Leonardo de Moura
9a41680ec9 feat: add Probe.getJps 2022-10-15 19:28:59 -07:00
Leonardo de Moura
dac4e6f214 fix: probing functions were not visiting FunDecl.value 2022-10-15 17:50:18 -07:00
Leonardo de Moura
b4d850502d fix: avoid join point that takes closure at seqToCode 2022-10-15 15:48:02 -07:00
Leonardo de Moura
4d9483d1fa fix: if inlined code returns a function and has more than one exit point, create an auxiliary function instead of a join point that takes a closure as argument 2022-10-15 11:56:52 -07:00
Leonardo de Moura
53b995386d fix: avoid [anonymous] at LCNF binder names 2022-10-15 11:56:52 -07:00
Leonardo de Moura
376c541e9a feat: do not generate code for declarations that will be specialized 2022-10-15 08:54:46 -07:00
Leonardo de Moura
359dc77664 refactor: move isTemplateLike to LCNF/Basic.lean 2022-10-15 08:51:20 -07:00
Leonardo de Moura
3505b60a22 feat: probing helper functions 2022-10-15 08:51:20 -07:00
Leonardo de Moura
6378283fa8 feat: add Probe.toString 2022-10-14 19:21:56 -07:00
Henrik Böving
38788a72be feat: basic compiler probing framework with examples 2022-10-14 19:09:35 -07:00
Leonardo de Moura
3f076fc836 perf: missing annotations and helper instances 2022-10-14 08:42:50 -07:00
Leonardo de Moura
0a126b7702 perf: better support for "inlineable" instances 2022-10-14 08:42:50 -07:00
Leonardo de Moura
1bb67918f8 chore: cleanup eagerLambdaLifting and add notes 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
19301c09c6 chore: remove unnecessary match 2022-10-13 18:56:17 -07:00
Leonardo de Moura
6ed89a4ceb chore: revert cross module lambda lifting cache
It adds almost 50Mb to the .olean files.
2022-10-13 18:42:52 -07:00
Leonardo de Moura
ac9d65b17b feat: cache lambda lifting 2022-10-13 11:24:14 -07:00
Leonardo de Moura
518123b191 feat: more conservative SpecParamInfo inference 2022-10-13 08:20:55 -07:00
Leonardo de Moura
407c744ae5 chore: add workarounds for old code generator
It is a bit ironic that the new code generator should contain
workarounds for the old one.
2022-10-13 07:09:19 -07:00
Leonardo de Moura
886ed9b2e3 fix: remove function expected error at LCNF 2022-10-13 06:16:25 -07:00
Leonardo de Moura
c33b5b6588 chore: remove unnecessary eqvTypes 2022-10-13 06:08:51 -07:00
Leonardo de Moura
bc2b891e7e refactor: remove type compatibility sanity checks at LCNF Check.lean
See new note at `Check.lean` for details.
2022-10-13 06:01:41 -07:00
Leonardo de Moura
1f54c0126c doc: add note at Decl.simp 2022-10-13 04:26:05 -07:00
Leonardo de Moura
2563fda777 feat: enable eager lambda lifting 2022-10-13 04:22:19 -07:00
Leonardo de Moura
0966f14233 fix: local function declarations size may be 0 2022-10-13 03:34:14 -07:00
Leonardo de Moura
2675c0647b feat: detect unreachable cases alternatives at LCNF simp 2022-10-13 02:49:55 -07:00
Leonardo de Moura
af99715a58 feat: store inline attribute at LCNF declarations
This commit also adds support for inheriting the inline attribute when
the compiler lambda lifts local functions from instances.
2022-10-13 02:06:35 -07:00
Leonardo de Moura
b9f174604d feat: check new alwaysInline attribute 2022-10-12 16:55:16 -07:00
Leonardo de Moura
49a6f8c105 chore: add horrible hack for Decidable in the new code generator
cc @gebner
2022-10-12 16:53:29 -07:00
Leonardo de Moura
7308fa0e7d feat: ensure lambda lifter is creating unused names 2022-10-12 16:35:55 -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
5606b4e59e feat: add [alwaysInline] attribute
We are planning to ignore the `[inline]` attribute when the "inlining
quota" has been exhausted in the new code generator.
2022-10-12 16:08:37 -07:00
Gabriel Ebner
fb6cb05465 feat: support let_fun in new compiler 2022-10-12 11:52:28 -07:00
Leonardo de Moura
aa845dee98 feat: cache lambda lifted functions 2022-10-11 21:28:03 -07:00
Gabriel Ebner
ba57ad3480 feat: add implementation-detail hypotheses 2022-10-11 17:24:35 -07:00