73 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Factor
		
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Factor
		
	
	
! Copyright (C) 2009 Daniel Ehrenberg.
 | 
						|
! See http://factorcode.org/license.txt for BSD license.
 | 
						|
USING: tools.test compiler.cfg kernel accessors compiler.cfg.dce
 | 
						|
compiler.cfg.instructions compiler.cfg.registers cpu.architecture ;
 | 
						|
IN: compiler.cfg.dce.tests
 | 
						|
 | 
						|
: test-dce ( insns -- insns' )
 | 
						|
    <basic-block> swap >>instructions
 | 
						|
    cfg new swap >>entry
 | 
						|
    eliminate-dead-code
 | 
						|
    entry>> instructions>> ; 
 | 
						|
 | 
						|
[ V{
 | 
						|
    T{ ##load-integer { dst 1 } { val 8 } }
 | 
						|
    T{ ##load-integer { dst 2 } { val 16 } }
 | 
						|
    T{ ##add { dst 3 } { src1 1 } { src2 2 } }
 | 
						|
    T{ ##replace { src 3 } { loc D 0 } }
 | 
						|
} ] [ V{
 | 
						|
    T{ ##load-integer { dst 1 } { val 8 } }
 | 
						|
    T{ ##load-integer { dst 2 } { val 16 } }
 | 
						|
    T{ ##add { dst 3 } { src1 1 } { src2 2 } }
 | 
						|
    T{ ##replace { src 3 } { loc D 0 } }
 | 
						|
} test-dce ] unit-test
 | 
						|
 | 
						|
[ V{ } ] [ V{
 | 
						|
    T{ ##load-integer { dst 1 } { val 8 } }
 | 
						|
    T{ ##load-integer { dst 2 } { val 16 } }
 | 
						|
    T{ ##add { dst 3 } { src1 1 } { src2 2 } }
 | 
						|
} test-dce ] unit-test
 | 
						|
 | 
						|
[ V{ } ] [ V{
 | 
						|
    T{ ##load-integer { dst 3 } { val 8 } }
 | 
						|
    T{ ##allot { dst 1 } { temp 2 } }
 | 
						|
} test-dce ] unit-test
 | 
						|
 | 
						|
[ V{ } ] [ V{
 | 
						|
    T{ ##load-integer { dst 3 } { val 8 } }
 | 
						|
    T{ ##allot { dst 1 } { temp 2 } }
 | 
						|
    T{ ##set-slot-imm { obj 1 } { src 3 } }
 | 
						|
} test-dce ] unit-test
 | 
						|
 | 
						|
[ V{
 | 
						|
    T{ ##load-integer { dst 3 } { val 8 } }
 | 
						|
    T{ ##allot { dst 1 } { temp 2 } }
 | 
						|
    T{ ##set-slot-imm { obj 1 } { src 3 } }
 | 
						|
    T{ ##replace { src 1 } { loc D 0 } }
 | 
						|
} ] [ V{
 | 
						|
    T{ ##load-integer { dst 3 } { val 8 } }
 | 
						|
    T{ ##allot { dst 1 } { temp 2 } }
 | 
						|
    T{ ##set-slot-imm { obj 1 } { src 3 } }
 | 
						|
    T{ ##replace { src 1 } { loc D 0 } }
 | 
						|
} test-dce ] unit-test
 | 
						|
 | 
						|
[ V{
 | 
						|
    T{ ##allot { dst 1 } { temp 2 } }
 | 
						|
    T{ ##replace { src 1 } { loc D 0 } }
 | 
						|
} ] [ V{
 | 
						|
    T{ ##allot { dst 1 } { temp 2 } }
 | 
						|
    T{ ##replace { src 1 } { loc D 0 } }
 | 
						|
} test-dce ] unit-test
 | 
						|
 | 
						|
[ V{
 | 
						|
    T{ ##allot { dst 1 } { temp 2 } }
 | 
						|
    T{ ##replace { src 1 } { loc D 0 } }
 | 
						|
    T{ ##load-integer { dst 3 } { val 8 } }
 | 
						|
    T{ ##set-slot-imm { obj 1 } { src 3 } }
 | 
						|
} ] [ V{
 | 
						|
    T{ ##allot { dst 1 } { temp 2 } }
 | 
						|
    T{ ##replace { src 1 } { loc D 0 } }
 | 
						|
    T{ ##load-integer { dst 3 } { val 8 } }
 | 
						|
    T{ ##set-slot-imm { obj 1 } { src 3 } }
 | 
						|
} test-dce ] unit-test
 |