Commit Graph

60 Commits (bcf7a5e15ea054629dcee87df974e93c1a5aa438)

Author SHA1 Message Date
Daniel Ehrenberg 0914282c52 Merge branch 'master' of git://factorcode.org/git/factor into s3
Conflicts:

	basis/compiler/cfg/finalization/finalization.factor
2010-05-03 17:29:03 -05:00
Slava Pestov d0028df10b compiler.cfg.empty-blocks: remove unused pass 2010-05-03 18:23:54 -04:00
Daniel Ehrenberg e41f9bdb29 Merge branch 'master' into s3
Conflicts:

	basis/compiler/cfg/optimizer/optimizer.factor
2010-05-03 17:19:28 -05:00
Slava Pestov 16566506f1 compiler.cfg: remove unused 'reps' slot from compiler.cfg, and re-organize things in preparation for SSA register allocation 2010-05-03 17:34:18 -04:00
Slava Pestov fc7a1ad8b3 New GC checks work in progress 2010-05-03 17:34:16 -04:00
Daniel Ehrenberg ba837da095 Scheduling has to come before representation selection, since the latter inserts memory operations 2010-04-05 00:24:12 -05:00
Daniel Ehrenberg 02d2d8eba5 Fewer unnecessary dependence edges between stack operations, implemented by reviving stack height normalization. Now, 40% of spills and reloads are eliminated in total 2010-02-24 14:20:43 -06:00
Daniel Ehrenberg d350b54325 A first attempt at implementing Vivek Sarkar's algorithm for scheduling for register pressure 2010-02-10 21:43:30 -06:00
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