compiler.cfg.ssa.destruction: fix and testcase for the
"lookup-base-pointer* does not define a method for the POSTPONE: f class" bugdb4
parent
ecf3829843
commit
24dc0679dc
|
@ -1,7 +1,8 @@
|
||||||
USING: compiler.cfg.instructions compiler.cfg.registers
|
USING: alien.syntax compiler.cfg.def-use compiler.cfg.instructions
|
||||||
compiler.cfg.ssa.destruction compiler.cfg.ssa.destruction.leaders
|
compiler.cfg.registers compiler.cfg.ssa.destruction
|
||||||
compiler.cfg.ssa.destruction.private cpu.architecture kernel make namespaces
|
compiler.cfg.ssa.destruction.leaders
|
||||||
tools.test ;
|
compiler.cfg.ssa.destruction.private compiler.cfg.utilities
|
||||||
|
cpu.architecture cpu.x86.assembler.operands make namespaces tools.test ;
|
||||||
IN: compiler.cfg.ssa.destruction.tests
|
IN: compiler.cfg.ssa.destruction.tests
|
||||||
|
|
||||||
! cleanup-insn
|
! cleanup-insn
|
||||||
|
@ -25,3 +26,39 @@ IN: compiler.cfg.ssa.destruction.tests
|
||||||
T{ ##parallel-copy { values V{ } } }
|
T{ ##parallel-copy { values V{ } } }
|
||||||
[ cleanup-insn ] V{ } make
|
[ cleanup-insn ] V{ } make
|
||||||
] unit-test
|
] 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
|
||||||
|
|
|
@ -11,7 +11,6 @@ cpu.architecture kernel locals make namespaces sequences sets ;
|
||||||
FROM: namespaces => set ;
|
FROM: namespaces => set ;
|
||||||
IN: compiler.cfg.ssa.destruction
|
IN: compiler.cfg.ssa.destruction
|
||||||
|
|
||||||
! Maps leaders to equivalence class elements.
|
|
||||||
SYMBOL: class-element-map
|
SYMBOL: class-element-map
|
||||||
|
|
||||||
: class-elements ( vreg -- elts ) class-element-map get at ;
|
: class-elements ( vreg -- elts ) class-element-map get at ;
|
||||||
|
@ -26,7 +25,7 @@ SYMBOL: copies
|
||||||
|
|
||||||
: init-coalescing ( -- )
|
: init-coalescing ( -- )
|
||||||
defs get
|
defs get
|
||||||
[ [ drop dup ] assoc-map leader-map set ]
|
[ keys unique leader-map set ]
|
||||||
[
|
[
|
||||||
[ [ dup dup value-of ] dip <vreg-info> 1array ] assoc-map
|
[ [ dup dup value-of ] dip <vreg-info> 1array ] assoc-map
|
||||||
class-element-map set
|
class-element-map set
|
||||||
|
@ -132,6 +131,7 @@ M: insn cleanup-insn , ;
|
||||||
PRIVATE>
|
PRIVATE>
|
||||||
|
|
||||||
: destruct-ssa ( cfg -- )
|
: destruct-ssa ( cfg -- )
|
||||||
|
H{ } clone leader-map set
|
||||||
{
|
{
|
||||||
needs-dominance
|
needs-dominance
|
||||||
construct-cssa
|
construct-cssa
|
||||||
|
|
Loading…
Reference in New Issue