Slava Pestov
a267100781
compiler.cfg.ssa.destruction: more aggressive coalescing work in progress
2009-09-27 17:17:26 -05:00
Slava Pestov
66f500bdd7
Fix the build
2009-09-09 13:44:54 -05:00
Slava Pestov
092b31910d
compiler: separate ##save-context instruction from ##alien-invoke, generate a ##save-context for libm calls, and add a pass to combine multiple context saves within a basic block. Fixes crashes with FP traps thrown by libm functions on x86-32
2009-09-08 21:50:55 -05:00
Doug Coleman
d1ce837569
Delete empty unit tests files, remove 1- and 1+, reorder IN: lines in a lot of places, minor refactoring
2009-08-13 19:21:44 -05:00
Slava Pestov
88d15dfbea
compiler.cfg: new system to track when results of analyses need to be recomputed (reverse post order, linear order, predecessors, dominance, loops). Passes can now call needs-predecessors, needs-dominance, needs-loops at the beginning, and cfg-changed, predecessors-changd at the end. Linearization order now takes loop nesting into account, and linear scan now uses linearization order instead of RPO.
2009-08-08 20:02:56 -05:00
Slava Pestov
4921b819e0
compiler.cfg.representations: new pass to make global unboxing decisions, relies on new compiler.cfg.loop-detection pass for loop nesting information
2009-08-08 00:24:46 -05:00
Slava Pestov
4d2160799f
Split off the notion of a register representation from a register class
2009-08-07 17:44:50 -05:00
Slava Pestov
8b887630a0
compiler.cfg: convert code into two-operand form before SSA destruction; SSA destruction now operates on a relaxed SSA form where multiple defs of the same vreg are allowed, but only within a single basic block. This makes linear scan's coalescing redundant, allowing it to be removed completely
2009-08-05 18:57:46 -05:00
Slava Pestov
ac7447483d
compiler.cfg.ssa.destruction: rename coalesce word to destruct-ssa
2009-07-28 12:56:33 -05:00
Slava Pestov
7a158d84da
compiler.cfg: Rename ssa to ssa.construction, coalescing to ssa.destruction
2009-07-28 09:34:08 -05:00
Slava Pestov
8f08ce94fa
compiler.cfg.branch-splitting: re-enable with a better heuristic
2009-07-28 08:48:05 -05:00
Slava Pestov
85975568d9
Debugging compiler.cfg.coalescing
2009-07-27 19:24:13 -05:00
Slava Pestov
83d40198a4
compiler.cfg.coalescing: more or less complete, now needs debugging
2009-07-27 02:20:45 -05:00
Slava Pestov
127de28195
compiler.cfg.copy-prop: Global copy propagation
2009-07-24 05:30:46 -05:00
Slava Pestov
c2c3d64d6d
compiler.cfg.stacks: now performs online local DCN
2009-07-23 20:54:38 -05:00
Slava Pestov
2ec433e7c0
compiler.cfg.empty-blocks: new pass to delete empty blocks, runs after phi elimination
2009-07-23 18:02:46 -05:00
Slava Pestov
7c488f2b25
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
b6bb12eea7
compiler.cfg: Fix conflicts after merging local optimization refactoring into DCN branch
2009-07-22 03:17:53 -05:00
Slava Pestov
5d9f7b0ed2
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
1240b630e0
compiler.cfg.stack-analysis: Out with the old, in with the new
2009-07-22 00:52:25 -05:00
Slava Pestov
4b51ef1391
compiler.cfg.dcn: Fixing various bugs, hook up with optimizer
2009-07-21 22:24:50 -05:00
Slava Pestov
df874c3b50
compiler.tree.finalization: undo a change that resulted in a compile time regression
2009-07-18 03:33:24 -05:00
Slava Pestov
9e6e61edfa
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
82e77d891a
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
Slava Pestov
b65ef327ce
compiler.cfg.value-numbering: merge in compiler.cfg.branch-folding
2009-07-14 20:05:01 -05:00
Slava Pestov
01f9addc3a
compiler.cfg.branch-splitting: split blocks with successors
2009-07-13 10:44:08 -05:00
Slava Pestov
07d8bed106
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
U-SLAVA-DFB8FF805\Slava
7f8c0d1e25
compiler.cfg.optimizer: fix irrelevant test
2009-07-09 06:17:10 -05:00
Doug Coleman
d69c5ae260
Revert "fix a unit test so it's sure to overflow 64bit machines"
...
This reverts commit 88a545a215 .
2009-07-02 18:18:50 -05:00
Doug Coleman
88a545a215
fix a unit test so it's sure to overflow 64bit machines
2009-07-02 18:05:55 -05:00
Doug Coleman
da9883b762
unit test to make sure adds are not optimized incorrectly
2009-07-02 18:01:00 -05:00
Slava Pestov
8364f1146c
compiler.cfg.optimizer: enable branch folding
2009-07-02 01:05:59 -05:00
Slava Pestov
4983091344
compiler.cfg.optimizer: disable branch folding for now
2009-06-30 23:07:27 -05:00
Slava Pestov
cdd95472c7
compiler.cfg.branch-folding: fold away branches where both inputs are the same register. This results in 'push' being compiled slightly better
2009-06-30 22:43:32 -05:00
Slava Pestov
139bb68f8e
Change branch splitting around a bit, rename useless-blocks to useless-conditionals and rewrite it
2009-06-30 22:11:15 -05:00
Slava Pestov
f6b537f4c6
Fix conflict
2009-06-30 20:16:09 -05:00
Slava Pestov
89fbc8efb4
compiler.cfg.tco: Tail call optimization moved out of compiler.cfg.builder into its own pass
2009-06-30 20:13:35 -05:00
Slava Pestov
6cb4966075
Fix bootstrap and unit test
2009-06-26 17:44:33 -05:00
Slava Pestov
3b8733de01
Redesign compiler.cfg.stack-analysis to make compiler.cfg.height redundant, and to fix some problems
2009-06-26 17:29:55 -05:00
Slava Pestov
d830838ffa
compiler.cfg.optimizer: disable CFG checker by default
2009-06-05 18:07:22 -05:00
Slava Pestov
2b49600f42
compiler.cfg.checker: run if a variable is set
2009-06-05 17:32:12 -05:00
Slava Pestov
6ac52761c6
Fix loop handling in stack-analysis
2009-05-31 19:04:26 -05:00
Slava Pestov
968a9bb666
Various codegen improvements:
...
- new-insn word to construct instructions
- cache RPO in the CFG
- re-organize low-level optimizer so that MR is built after register allocation
- register allocation now stores instruction numbers in the instructions themselves
- split defs-vregs into defs-vregs and temp-vregs
2009-05-29 13:11:34 -05:00
Slava Pestov
40949800bf
Fixing various bugs; alias analysis wasn't handling ##phi nodes, stack analysis incorrectly handled height-changing back edges and ##fixnum-*, clean up ##dispatch generation
2009-05-29 01:39:14 -05:00
Slava Pestov
4c05bc4f10
Test updates
2009-05-28 02:50:07 -05:00
Slava Pestov
dd8152f7bb
Add phi elimination pass
2009-05-27 18:58:01 -05:00
Slava Pestov
25805f9bfe
Refactoring low-level optimizer to support stack analysis pass
2009-05-26 19:31:19 -05:00
Slava Pestov
6b25e99470
Add summary for heaps more vocabs
2009-02-16 21:05:13 -06:00
Slava Pestov
445e353337
Optimize away useless jumps
2008-11-02 23:09:31 -06:00
Slava Pestov
885adc8dc9
Various improvements
2008-10-23 05:27:54 -05:00