Slava Pestov
2dcdfa2d8e
compiler.cfg: add a declaration to fix tools.deploy.test.11
2009-06-09 03:36:16 -05:00
Slava Pestov
45a2105449
cpu.x86.assembler: IMUL2 instruction was busted for immediate operands
...
When given a register and an immediate, it would generate imul imm,dst,dst however the 64-bit prefix was generated wrong and if dst was an extended register only the first operand would be an extended register. To fix this, change IMUL2 to not work on immediates anymore, and added a new IMUL3 that takes a destination register, source register, and immediate. Also, change compiler.cfg.two-operand to not two-operandize %mul-imm, since this isn't needed anymore.
This fixes the sporadic benchmark.tuple-arrays crash on 64-bit machines.
2009-06-08 21:15:52 -05:00
Slava Pestov
4fbe99400f
Merge branch 'master' of git://factorcode.org/git/factor
2009-06-07 21:46:41 -05:00
Slava Pestov
9ad9600764
Remove %dispatch-label since its tehe same on all platforms; fix %gc on PowerPC
2009-06-07 21:46:28 -05:00
Slava Pestov
70b75b8dea
Linear scan: implement live range intersection
2009-06-06 01:04:12 -05:00
Slava Pestov
7c207ffa12
compiler.cfg.optimizer: disable CFG checker by default
2009-06-05 18:07:22 -05:00
Slava Pestov
04c72d0a72
Linear scan: correctly compute live spill slots
2009-06-05 18:06:47 -05:00
Slava Pestov
440b464ec1
compiler: more informative trace-compilation
2009-06-05 17:32:37 -05:00
Slava Pestov
5bb235d38f
compiler.cfg.checker: run if a variable is set
2009-06-05 17:32:12 -05:00
Slava Pestov
81b2a39070
compiler.cfg.linear-scan: re-do interval splitting to operate on live ranges; add inactive set processing
2009-06-04 18:53:02 -05:00
Slava Pestov
ade5db2405
cpu.x86: fix small register intrinsics on x86-64
2009-06-03 03:22:46 -05:00
Slava Pestov
6d04bf9c4a
Linear scan: build live ranges
2009-06-03 03:22:27 -05:00
Slava Pestov
9da8cfe942
Merge branch 'master' of git://factorcode.org/git/factor
2009-06-02 18:30:25 -05:00
Slava Pestov
2d231f066a
GC checks now save and restore registers
2009-06-02 18:23:47 -05:00
Doug Coleman
19d6285035
fix load error
2009-06-01 09:34:28 -05:00
Slava Pestov
7dd08892b2
Fix for recent word renaming
2009-06-01 03:19:35 -05:00
Slava Pestov
9e987e8642
Merge branch 'master' into global_optimization
2009-06-01 03:12:32 -05:00
Slava Pestov
d558545b65
Remove obsolete optimization
2009-06-01 03:05:49 -05:00
Slava Pestov
3a9922d161
Fix compiler errors
2009-06-01 03:00:10 -05:00
Slava Pestov
f09b36424c
Code cleanup
2009-06-01 02:32:42 -05:00
Slava Pestov
b389dcf441
Redo compiler.codegen.fixup and get %dispatch to work
2009-06-01 02:32:36 -05:00
Slava Pestov
fc152ef210
Various improvements aimed at getting local optimization regressions fixed:
...
- Rename _gc to ##gc
- Absolute labels are now supported
- Generate _dispatch-label
2009-05-31 23:28:08 -05:00
Slava Pestov
2c8223fdaf
Fix loop handling in stack-analysis
2009-05-31 19:04:26 -05:00
Slava Pestov
32f17f3e14
Fix scoping issue in compiler.cfg.linear-scan.assignment
2009-05-31 18:21:23 -05:00
Slava Pestov
1a52414bb1
Rename _gc to ##gc
2009-05-31 18:21:11 -05:00
Slava Pestov
692b479302
Split off local-optimization combinator into compiler.cfg.local, factor out CFG -> MR into compiler.cfg.mr, split off GC check insertion into a new compiler.cfg.gc-checks pass
2009-05-31 12:20:46 -05:00
Slava Pestov
3e00dc8c8d
Start cleaning up stack analysis
2009-05-30 13:22:30 -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
280736ab00
On second thought, linearization will be done after SSA destruction so live-in is accurate
2009-05-29 05:45:40 -05:00
Slava Pestov
743550f19c
Put GC checks in the right place when linearizing, and generate _dispatch-labels
2009-05-29 05:36:04 -05:00
Slava Pestov
76d74c16af
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
ceb332f596
compiler.cfg.alias-analysis: ##peek needs to set alias class of output value
2009-05-28 18:19:01 -05:00
Slava Pestov
dbf18927b9
compiler.cfg.liveness: correct handling of phi nodes
2009-05-28 17:54:27 -05:00
Slava Pestov
fc5587bda3
Test updates
2009-05-28 02:50:07 -05:00
Slava Pestov
ecece1d08b
CFG checker now checks consistency of successors and predecessors lists; fix long-standing bug in useless-blocks optimization
2009-05-28 02:49:51 -05:00
Slava Pestov
1fa465d77f
Fix alias analysis
2009-05-28 02:48:58 -05:00
Slava Pestov
7b88756fd0
Add a with-scope so that optimize-tree doesn't pollute namespace
2009-05-27 18:58:54 -05:00
Slava Pestov
117cb78d6b
Fixing local optimizations
2009-05-27 18:58:41 -05:00
Slava Pestov
f3688c9373
Better CFG checker
2009-05-27 18:58:14 -05:00
Slava Pestov
dadb9a2c50
Add phi elimination pass
2009-05-27 18:58:01 -05:00
Slava Pestov
3b79d61496
Add a new ##allocation union to remove some code duplication
2009-05-27 18:55:49 -05:00
Slava Pestov
2025823ba6
Remove old local DCE pass
2009-05-27 17:55:15 -05:00
Slava Pestov
ce25e0ad8d
New local-optimization combinator removes some boilerplate
2009-05-26 19:56:56 -05:00
Slava Pestov
1db81da264
Refactoring low-level optimizer to support stack analysis pass
2009-05-26 19:31:19 -05:00
Slava Pestov
eda44f28a6
Move maybe-set-at to assocs
2009-05-26 18:45:37 -05:00
Slava Pestov
ccb662c60e
Fix another bug in stack-analysis
2009-05-26 03:42:39 -05:00
Slava Pestov
7ea4e255fb
compiler.cfg.stack-analysis: make it pass more tests
2009-05-26 02:59:14 -05:00
Slava Pestov
8b022f926c
compiler.cfg.dce: new global dead code elimination pass
2009-05-26 02:58:57 -05:00
Slava Pestov
e0841fa695
compiler.cfg.checker: new check-rpo word
2009-05-26 02:58:40 -05:00
Slava Pestov
a08bbde2e7
compiler.cfg.stack-analysis: progress
2009-05-25 19:18:13 -05:00