Commit Graph

18 Commits (ffd1844d5298b52d1df05389ec4f26f23e6274bd)

Author SHA1 Message Date
Slava Pestov 43f269e4eb Register allocation now uses SSA properties to coalesce values with different representations 2010-05-03 17:34:20 -04:00
Slava Pestov d0c393aa60 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 4b7ba38aab compiler.cfg: virtual registers are integers now, and representations are stored off to the side. Fix bug in representation selection that would manifest if a value was used as a float and a fixnum in different branches; cannot globally unbox float in this case 2009-08-08 04:02:18 -05:00
Slava Pestov 725280d424 Split off the notion of a register representation from a register class 2009-08-07 17:44:50 -05:00
Slava Pestov 857ef94acc compiler.cfg.linear-scan: use compiler.cfg.parallel-copy in resolve pass 2009-07-28 07:39:46 -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 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 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 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 5a78956956 compiler.cfg.linear-scan: Working on resolve pass 2009-06-21 00:20:01 -05:00
Slava Pestov d0f6a7d048 Split up compiler.cfg.linear-scan.allocation into a number of sub-vocabularies; start work on compiler.cfg.linear-scan.resolve; start work on inactive interval splitting 2009-06-11 17:55:14 -05:00
Slava Pestov 04c72d0a72 Linear scan: correctly compute live spill slots 2009-06-05 18:06:47 -05:00
Slava Pestov e04df76f60 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 c0d89b061e Fixing register allocator prspilling 2008-10-19 01:10:21 -05:00
Slava Pestov cf46a832e7 Debugging register allocator and inline allocation 2008-10-08 23:42:53 -05:00
Slava Pestov 7b6d9c4c4f Debugging new codegen 2008-10-07 20:00:38 -05:00
Slava Pestov f436fd0c0f Merging in new codegen 2008-10-07 16:16:50 -05:00