Slava Pestov
|
a4cb242396
|
compiler.cfg.coalescing: Only run if CFG has ##phi nodes, fix interference for case where value is not used in a block and is not live-in, forgot to run liveness analysis first
|
2009-07-28 06:48:20 -05:00 |
Slava Pestov
|
cb07256ff5
|
Add some compiler tests
|
2009-07-28 06:45:31 -05:00 |
Slava Pestov
|
1878b0dc32
|
compiler.cfg.liveness: fix liveness computation in case where instruction uses a register it defines
|
2009-07-28 06:45:02 -05:00 |
Slava Pestov
|
d2b158c8e4
|
compiler.cfg.critical-edges: reset RPO
|
2009-07-28 01:04:13 -05:00 |
Slava Pestov
|
cf90945b4c
|
Add some tests that directly generate low level IR
|
2009-07-27 22:29:33 -05:00 |
Slava Pestov
|
3cc71a1934
|
compiler.cfg.coalescing: precompute live intervals, add support for instructions where output cannot equal an input, split critical edges
|
2009-07-27 22:29:17 -05:00 |
Slava Pestov
|
e8cf50ac3e
|
compiler.cfg.two-operand: make it work in more cases
|
2009-07-27 22:28:29 -05:00 |
Slava Pestov
|
423d2996fa
|
compiler.cfg.debugger: reset vreg counters
|
2009-07-27 22:28:13 -05:00 |
Slava Pestov
|
c5d7ed58a5
|
Debugging compiler.cfg.coalescing
|
2009-07-27 19:24:13 -05:00 |
Slava Pestov
|
1a765c38da
|
compiler.cfg.parallel-copy: fix algorithm
|
2009-07-27 16:54:47 -05:00 |
Slava Pestov
|
31555b05cf
|
compiler.codegen: collect instruction statistics
|
2009-07-27 03:58:15 -05:00 |
Slava Pestov
|
9fa71959b5
|
compiler.cfg.coalescing: fix shuffling bug
|
2009-07-27 03:58:01 -05:00 |
Slava Pestov
|
e112b0d70e
|
compiler.cfg.phi-elimination: no longer needed
|
2009-07-27 02:20:53 -05:00 |
Slava Pestov
|
ba696b68b8
|
compiler.cfg.coalescing: more or less complete, now needs debugging
|
2009-07-27 02:20:45 -05:00 |
Slava Pestov
|
a32cbdd231
|
compiler.cfg.coalescing: more work done
|
2009-07-27 00:31:21 -05:00 |
Slava Pestov
|
501629cf75
|
compiler.tree.propagation.info: fix load error
|
2009-07-27 00:30:24 -05:00 |
Slava Pestov
|
a5e5510615
|
compiler.cfg.coalescing: work in progress
|
2009-07-26 21:11:26 -05:00 |
Slava Pestov
|
e9935b6aad
|
compiler.cfg.copy-prop: remove ##phi nodes where all inputs are copy-equivalent
|
2009-07-26 21:11:02 -05:00 |
Slava Pestov
|
fc41140720
|
compiler.cfg.utilities: move value-info utilities to compiler.tree.propagation.info
|
2009-07-26 21:10:33 -05:00 |
Slava Pestov
|
1319d8e549
|
compiler.cfg.def-use: build def-use chains
|
2009-07-26 21:10:14 -05:00 |
Slava Pestov
|
2137c9cc79
|
compiler.cfg.dominance: add pre order and max pre order numbers; use them to implement dominates? check
|
2009-07-26 21:10:05 -05:00 |
Slava Pestov
|
053de0af40
|
compiler.cfg.copy-prop: work in progress
|
2009-07-24 19:56:21 -05:00 |
Slava Pestov
|
2fb0198d48
|
compiler.cfg.parallel-copy: forgot to add this
|
2009-07-24 19:46:33 -05:00 |
Slava Pestov
|
4624af75f4
|
compiler.cfg.phi-elimination: move some utilities from compiler.cfg.utilities here since that's the only place they get used
|
2009-07-24 16:45:31 -05:00 |
Slava Pestov
|
13c3fdcb5c
|
compiler.cfg: Fixing test failures
|
2009-07-24 06:08:07 -05:00 |
Slava Pestov
|
7068de6cd3
|
compiler.cfg.copy-prop: Global copy propagation
|
2009-07-24 05:30:46 -05:00 |
Slava Pestov
|
e0f6d89ff1
|
compiler.cfg.value-numbering: insert ##copy instructions for instructions whose expressions simplify. While subsequent usages are replaced with the instruction computing the simplified vreg locally, global usages may exist of the original instruction. In this case, the ##copy is not dead
|
2009-07-24 05:30:30 -05:00 |
Slava Pestov
|
de73534424
|
compiler.cfg.write-barrier: simplify a little bit. It doesn't need to do copy propagation, since its a separate pass now
|
2009-07-24 05:29:28 -05:00 |
Slava Pestov
|
7590ad3574
|
compiler.cfg: introduce less temporaries when building CFG
|
2009-07-24 03:37:18 -05:00 |
Slava Pestov
|
2bea107202
|
compiler.cfg.builder: fix stack effect declaration
|
2009-07-23 21:24:15 -05:00 |
Slava Pestov
|
d947c61bd7
|
compiler.cfg.stacks: now performs online local DCN
|
2009-07-23 20:54:38 -05:00 |
Slava Pestov
|
ff7f0e2f3b
|
Add testcase for recent bug
|
2009-07-23 18:03:14 -05:00 |
Slava Pestov
|
b1afd4c491
|
compiler.cfg.linear-scan.mapping: simplify
|
2009-07-23 18:03:04 -05:00 |
Slava Pestov
|
747a2d72c8
|
compiler.cfg.empty-blocks: new pass to delete empty blocks, runs after phi elimination
|
2009-07-23 18:02:46 -05:00 |
Slava Pestov
|
93c58a8bb5
|
compiler.cfg.branch-splitting: now that we do SSA construction we can split branches with fixnum overflow ops (which have a live-out)
|
2009-07-23 18:02:29 -05:00 |
Slava Pestov
|
610c3b33c7
|
compiler.cfg.intrinsics: Disable inline allocation for now
|
2009-07-22 21:11:06 -05:00 |
Slava Pestov
|
69ded76c66
|
Fixing compiler tests
|
2009-07-22 21:10:50 -05:00 |
Slava Pestov
|
45c66b58af
|
compiler.cfg.dcn.rewrite: remove unused word
|
2009-07-22 19:18:12 -05:00 |
Slava Pestov
|
5559d77d05
|
compiler.cfg.checker: eliminate dead code before checking MR
|
2009-07-22 19:17:57 -05:00 |
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 |