compiler.cfg.ssa.destruction: fix and testcase for the

"lookup-base-pointer* does not define a method for the POSTPONE: f
class" bug
db4
Björn Lindqvist 2015-05-09 23:02:30 +02:00 committed by John Benediktsson
parent ecf3829843
commit 24dc0679dc
2 changed files with 43 additions and 6 deletions

View File

@ -1,7 +1,8 @@
USING: compiler.cfg.instructions compiler.cfg.registers
compiler.cfg.ssa.destruction compiler.cfg.ssa.destruction.leaders
compiler.cfg.ssa.destruction.private cpu.architecture kernel make namespaces
tools.test ;
USING: alien.syntax compiler.cfg.def-use compiler.cfg.instructions
compiler.cfg.registers compiler.cfg.ssa.destruction
compiler.cfg.ssa.destruction.leaders
compiler.cfg.ssa.destruction.private compiler.cfg.utilities
cpu.architecture cpu.x86.assembler.operands make namespaces tools.test ;
IN: compiler.cfg.ssa.destruction.tests
! cleanup-insn
@ -25,3 +26,39 @@ IN: compiler.cfg.ssa.destruction.tests
T{ ##parallel-copy { values V{ } } }
[ cleanup-insn ] V{ } make
] unit-test
! init-coalescing
{
H{ { 123 123 } { 77 77 } }
} [
H{ { 123 "bb1" } { 77 "bb2" } } defs set
init-coalescing
leader-map get
] unit-test
! destruct-ssa
{ } [
H{ { 36 23 } { 23 23 } } leader-map set
H{ { 36 int-rep } { 37 tagged-rep } } representations set
V{
T{ ##alien-invoke
{ reg-inputs V{ { 56 int-rep RDI } } }
{ stack-inputs V{ } }
{ reg-outputs { { 36 int-rep RAX } } }
{ dead-outputs { } }
{ cleanup 0 }
{ stack-size 0 }
{ symbols "g_quark_to_string" }
{ dll DLL" libglib-2.0.so" }
{ gc-map T{ gc-map { scrub-d { } } { scrub-r { } } } }
{ insn# 14 }
}
T{ ##call-gc { gc-map T{ gc-map { scrub-d { } } { scrub-r { } } } } }
T{ ##box-alien
{ dst 37 }
{ src 36 }
{ temp 11 }
{ insn# 18 }
}
} 0 insns>block block>cfg destruct-ssa
] unit-test

View File

@ -11,7 +11,6 @@ cpu.architecture kernel locals make namespaces sequences sets ;
FROM: namespaces => set ;
IN: compiler.cfg.ssa.destruction
! Maps leaders to equivalence class elements.
SYMBOL: class-element-map
: class-elements ( vreg -- elts ) class-element-map get at ;
@ -26,7 +25,7 @@ SYMBOL: copies
: init-coalescing ( -- )
defs get
[ [ drop dup ] assoc-map leader-map set ]
[ keys unique leader-map set ]
[
[ [ dup dup value-of ] dip <vreg-info> 1array ] assoc-map
class-element-map set
@ -132,6 +131,7 @@ M: insn cleanup-insn , ;
PRIVATE>
: destruct-ssa ( cfg -- )
H{ } clone leader-map set
{
needs-dominance
construct-cssa