Commit Graph

473 Commits (3cabf3aeca41aa29e2a7f4905f28b998c4b454a0)

Author SHA1 Message Date
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