Commit Graph

709 Commits (80e10f1bd033e65fd5b17e634d0bb52b28f05e8e)

Author SHA1 Message Date
Slava Pestov d29c275089 compiler.cfg.builder: Fix construction of ##return instructions from #return-recursive nodes 2009-07-22 19:17:21 -05:00
Slava Pestov 091d2d07f2 Merge branch 'master' into dcn 2009-07-22 06:19:44 -05:00
Slava Pestov 995a96d7e4 compiler.cfg.dominance: fix unit tests 2009-07-22 06:19:31 -05:00
Slava Pestov 26a5d51d93 compiler.cfg.ssa: now builds pruned SSA form 2009-07-22 06:08:04 -05:00
Slava Pestov d864214119 compiler.cfg.dominance: add algorithm for computing iterated dominance frontiers 2009-07-22 06:07:51 -05:00
Slava Pestov 89db2e745d Move liveness back to compiler.cfg.liveness, fix a corner-case where it didn't work on some forms of non-SSA code 2009-07-22 06:07:28 -05:00
Slava Pestov 31491df5f1 Removed unused code from compiler.cfg.def-use 2009-07-22 06:05:33 -05:00
Slava Pestov 44bcd258f6 Insert _loop-entry in linearization pass instead of in CFG builder, so that optimizations don't have to worry about it 2009-07-22 06:05:17 -05:00
Slava Pestov 1e5ce41364 Fix bootstrap 2009-07-22 03:26:27 -05:00
Slava Pestov 25c42d04fd compiler.cfg: Fix conflicts after merging local optimization refactoring into DCN branch 2009-07-22 03:17:53 -05:00
Slava Pestov 21a012e3d7 compiler.cfg: Major restructuring -- do not compute liveness before local optimization, and instead change local optimizations to be more permissive of undefined values. Now, liveness is only computed once, after phi elimination and before register allocation. This means liveness analysis does not need to take phi nodes into account and can now use the new compiler.cfg.dataflow-analysis framework 2009-07-22 03:08:28 -05:00
Slava Pestov 55111bdc24 Merge branch 'master' into dcn 2009-07-22 02:07:08 -05:00
Slava Pestov c105b033ef Merge branch 'master' of git://factorcode.org/git/factor 2009-07-22 02:06:47 -05:00
Slava Pestov e6a323dfaa compiler.cfg.dataflow-analysis: iterative dataflow analysis framework 2009-07-22 02:06:35 -05:00
Slava Pestov b39b0dd393 compiler.cfg.dcn.global: redo using compiler.cfg.dataflow-analysis 2009-07-22 02:05:40 -05:00
Slava Pestov b869e1250c compiler.cfg.stack-analysis: Out with the old, in with the new 2009-07-22 00:52:25 -05:00
Slava Pestov 86df665f78 Merge branch 'master' of git://factorcode.org/git/factor into dcn 2009-07-22 00:14:53 -05:00
Slava Pestov 1aa6c9a0d5 compiler.cfg: Fix unit tests 2009-07-21 22:25:19 -05:00
Slava Pestov e49de006c4 compiler.cfg.dcn: Fixing various bugs, hook up with optimizer 2009-07-21 22:24:50 -05:00
Slava Pestov cfb584ed8d Merge branch 'master' into dcn 2009-07-21 17:51:22 -05:00
Slava Pestov ead57fc5dd compiler.cfg.registers: minor optimization 2009-07-21 17:49:44 -05:00
Slava Pestov e7e5bee9a2 compiler.cfg.ssa: Cytron's SSA construction algorithm 2009-07-21 17:49:30 -05:00
Slava Pestov 802b4ffdf5 compiler.cfg.dcn: remove stores to stack locations above top of stack (these are never read again) 2009-07-21 17:46:09 -05:00
Slava Pestov 441c2bae2d Merge branch 'master' into dcn 2009-07-21 03:08:42 -05:00
Slava Pestov 3136549f48 compiler.cfg.dominance: fix idom computation, compute dominator tree, compute dominance frontiers, add some tests 2009-07-21 03:02:45 -05:00
Slava Pestov fd9a353fd6 Move conjoin-at from compiler.cfg.liveness to sets 2009-07-21 03:02:06 -05:00
Slava Pestov e16acae2f5 compiler.cfg.dcn: flesh out rewrite pass 2009-07-21 01:24:19 -05:00
Slava Pestov fdef772d67 compiler.cfg: if a block has an instruction that kills values it must be the only instruction in the block 2009-07-19 20:12:04 -05:00
Slava Pestov 0a95ddd105 compiler.cfg.dcn: Implement height tracking 2009-07-19 19:45:23 -05:00
Slava Pestov 605b37a949 compiler.cfg.builder: annotate calls with height changes, once again 2009-07-18 23:08:53 -05:00
Slava Pestov ec1407bdae compiler.cfg.dcn: starting work on deconcatenatization pass to replace compiler.cfg.stack-analysis 2009-07-18 22:27:42 -05:00
Slava Pestov 9cbd6c52a6 compiler.cfg.stack-analysis: fix outdated tests 2009-07-18 06:38:42 -05:00
Slava Pestov 32e4a97855 compiler.cfg.linear-scan: fix tests 2009-07-18 06:10:01 -05:00
Slava Pestov 343151fd62 compiler.tree.finalization: undo a change that resulted in a compile time regression 2009-07-18 03:33:24 -05:00
Slava Pestov 3ee68d1ff5 Disable fixnum>bignum and bignum>fixnum intrinsics since they're not very useful and they increase code size significantly 2009-07-18 01:07:43 -05:00
Slava Pestov ea69566ddd compiler.cfg.linear-scan: algorithmic optimizations 2009-07-18 00:14:39 -05:00
Slava Pestov 5061db2a48 compiler.cfg: Move tail call optimization to the end, compiler.tree: simplify finalization pass because of this 2009-07-17 22:57:28 -05:00
Slava Pestov b83f27af74 compiler.cfg.builder: remove some dead code 2009-07-17 21:52:33 -05:00
Slava Pestov 43fab5b2ae Remove some unnecessary work from stack-analysis pass 2009-07-17 18:39:41 -05:00
Slava Pestov e88e7f70be Merge branch 'master' of git://factorcode.org/git/factor 2009-07-17 00:03:13 -05:00
Slava Pestov 1d735bc32d compiler.tree.propagation.transforms: fix shift transform 2009-07-17 00:02:57 -05:00
Slava Pestov 3fb4fc1bde Improve code generation for shift word: add intrinsics for fixnum-shift-fast in the case where the shift count is not constant, transform 1 swap shift into a more overflow check with open-coded fast case, transform bitand into fixnum-bitand in more cases 2009-07-16 23:50:48 -05:00
Daniel Ehrenberg 8ea2996438 Removing two unused words in compiler.cfg.two-operand 2009-07-16 22:59:38 -05:00
Daniel Ehrenberg 3ca5665ad6 Merge branch 'master' of git://factorcode.org/git/factor 2009-07-16 22:42:39 -05:00
Daniel Ehrenberg 8477cf8e91 Phi elimination doesn't have the swap problem now 2009-07-16 22:42:13 -05:00
Slava Pestov e76dce8aff Overflowing fixnum intrinsics now expand into several CFG nodes. This speeds up the common case since only the uncommon case is now a stack syncpoint 2009-07-16 18:29:40 -05:00
Slava Pestov 685e32b091 compiler.cfg.stack-analysis: global optimization work in progress 2009-07-16 16:43:14 -05:00
Slava Pestov fc0e0f1924 compiler.cfg.block-joining: relax join heuristic 2009-07-16 05:50:44 -05:00
Slava Pestov 884e41dd9c compiler.cfg.linear-scan.live-intervals: remove bogus assertion 2009-07-16 02:42:01 -05:00
Slava Pestov 9f926ab88c compiler.cfg.block-joining: join basic blocks connected by a single edge to improve effectiveness of local optimizations 2009-07-16 02:17:58 -05:00
Daniel Ehrenberg 062e33f8fb fixing stupid bug in propagation 2009-07-16 00:43:54 -05:00
Daniel Ehrenberg ee3e84a1f8 define-partial-eval framework in propagation pass makes it easy to add transforms; moving some transforms from stack checker to propagation, making them stronger 2009-07-16 00:34:50 -05:00
Slava Pestov ebcd0dc252 compiler.cfg: Fix regressions from recent changes 2009-07-14 20:43:06 -05:00
Slava Pestov 4ac74e9304 compiler.cfg.branch-splitting: don't split if there's one predecessor 2009-07-14 20:42:50 -05:00
Slava Pestov 11731f8d48 compiler.cfg.value-numbering: merge in compiler.cfg.branch-folding 2009-07-14 20:05:01 -05:00
Slava Pestov a75d558b30 compiler.cfg.intrinsics.fixnum: don't generate -imm forms anymore since value numbering does it 2009-07-14 19:18:57 -05:00
Slava Pestov 73a2222541 compiler.cfg.value-numbering: branch folding 2009-07-14 19:17:12 -05:00
Slava Pestov 03cd550b93 Fix codegen test 2009-07-14 16:11:14 -05:00
Slava Pestov 2f39e851f8 Merge branch 'master' of git://factorcode.org/git/factor 2009-07-14 16:05:35 -05:00
Slava Pestov 2ace87370e compiler.cfg.value-numbering: more optimizations 2009-07-14 16:05:25 -05:00
Daniel Ehrenberg 6c32e61098 Merge branch 'master' of git://factorcode.org/git/factor 2009-07-14 14:25:42 -05:00
Daniel Ehrenberg bb06facb01 new is inlined in the propagation pass when the class is known 2009-07-14 14:16:39 -05:00
Slava Pestov d1eea090b6 compiler.cfg.value-numbering: add some unit tests 2009-07-14 13:25:07 -05:00
Slava Pestov c860a3b1e6 compiler.cfg: update unit tests for compiler.cfg.comparisons 2009-07-14 12:06:55 -05:00
Daniel Ehrenberg 79afab82d8 Merge branch 'master' of git://factorcode.org/git/factor 2009-07-14 01:24:08 -05:00
Daniel Ehrenberg 47500fad06 call( and execute( inline known quotations/words in the propagation pass 2009-07-14 01:12:45 -05:00
Slava Pestov 5ccf7bc99f Merge branch 'master' of git://factorcode.org/git/factor 2009-07-13 22:59:19 -05:00
Doug Coleman ccae9b59a4 clean up value numbering conversion of ##add/sub to ##add/sub-imm 2009-07-13 19:02:05 -05:00
Slava Pestov 768e2a5148 compiler.cfg: split off condition codes into a comparisons sub-vocabulary 2009-07-13 14:42:52 -05:00
Slava Pestov 3b244d5d41 compiler.cfg.value-numbering: fix ##compare and ##compare-branch rewrites 2009-07-13 12:33:58 -05:00
Slava Pestov d7aeae45be compiler.cfg.branch-splitting: split blocks with successors 2009-07-13 10:44:08 -05:00
Slava Pestov 8ff473e42c compiler.cfg.linear-scan.resolve: get it to work on CFGs with critical edges 2009-07-12 23:00:33 -05:00
Slava Pestov 608fb054f2 compiler.cfg: Some code cleanups, update stack-analysis and phi-insertion to work on CFGs with critical edges 2009-07-12 22:22:46 -05:00
Slava Pestov 1cf6bb7f99 compiler.cfg.linear-scan: disable unit test for unimplemented feature 2009-07-10 07:48:49 -05:00
Slava Pestov ae67de6f90 compiler.cfg.linear-scan: fix fencepost error in spill insertion 2009-07-10 03:58:51 -05:00
Slava Pestov 11347e784c insn. doesn't print numbers 2009-07-10 03:05:45 -05:00
Slava Pestov dea872c7e3 compiler.cfg.linear-scan.allocation: fix broken spill slot reuse logic 2009-07-10 00:25:46 -05:00
Slava Pestov 7edb2df01c Merge branch 'master' of git://factorcode.org/git/factor 2009-07-09 23:14:45 -05:00
Slava Pestov 789d82745c compiler.cfg.value-numbering: factor out value renaming into a separate compiler.cfg.renaming vocabulary 2009-07-09 23:14:26 -05:00
Slava Pestov 6810b922ee compiler.cfg: move back-edge? word from stack-analysis to top-level vocab 2009-07-09 23:13:30 -05:00
Slava Pestov d02854b04e compiler.cfg.linear-scan: two live intervals which are coalesced will use the same spill slot 2009-07-09 23:12:49 -05:00
Daniel Ehrenberg 4b29d13fda Adding authors to compiler.tree.modular-arithmetic 2009-07-09 23:09:49 -05:00
Daniel Ehrenberg cf3038b7d6 Improving modular arithmetic optimization to be aware of words like set-alien-unsigned-2 2009-07-09 23:07:38 -05:00
Slava Pestov bb701bed7e Revert "Remove unused vocabulary" -- committed patch from the wrong machine
This reverts commit 04c3c15411.
2009-07-09 19:50:15 -05:00
Slava Pestov 8008bfb1f9 Remove unused vocabulary 2009-07-09 19:10:36 -05:00
U-SLAVA-DFB8FF805\Slava 508b7272b5 compiler.cfg.optimizer: fix irrelevant test 2009-07-09 06:17:10 -05:00
Slava Pestov e0d84eb3a2 compiler.tree.propagation: better length propagation 2009-07-09 02:28:30 -05:00
Slava Pestov d0980edafe compiler.cfg.linear-scan: fixing unit tests 2009-07-09 00:48:00 -05:00
Slava Pestov 5a64290386 compiler.cfg.linear-scan: more code cleanups, and working on split-to-fit algorithm 2009-07-09 00:20:03 -05:00
Slava Pestov 4507bdcbc0 compiler.cfg.linear-scan: code cleanups 2009-07-08 23:28:28 -05:00
Slava Pestov c20e6c290f compiler.cfg.linear-scan: split off parallel mapping code from resolve pass, use it in assignment pass to resolve parallel copies 2009-07-08 23:07:06 -05:00
Slava Pestov e2044602aa compiler.cfg.linear-scan: debugging spilling, add more assertions 2009-07-07 13:01:27 -05:00
Slava Pestov 43c873f00a compiler.cfg.linear-scan: code cleanup 2009-07-07 03:45:27 -05:00
Slava Pestov 0bcf4ce535 compiler.cfg.linear-scan: Re-implement spilling, add some additional runtime assertions, simplify assignment pass since it doesn't have to track spill slots anymore; just assume a live value that's not in active or inactive is spilled 2009-07-07 03:28:55 -05:00
Slava Pestov 4402d8652c compiler.cfg.linear-scan: minor fixes 2009-07-05 22:51:53 -05:00
Slava Pestov a452f32e3a compiler.cfg.linear-scan: Get cycle breaking in resolve pass to work by allocating a spare spill slot for this purpose 2009-07-05 21:32:23 -05:00
Slava Pestov f14a61fac2 Fix compiler.cfg.linear-scan.resolve test failure 2009-07-04 16:30:16 -05:00
Slava Pestov c0f1b2205a compiler.cfg.value-numbering.rewrite: disable ##compare optimizations for now 2009-07-04 03:26:37 -05:00
Slava Pestov fb488025aa compiler.cfg.value-numbering.rewrite: fix ##compare-imm rewrite rule 2009-07-04 02:50:50 -05:00
Slava Pestov c00af97fa1 compiler.cfg.linear-scan.resolve: More fixes 2009-07-04 00:45:06 -05:00