From 0634eaefaec2efa63bb3bd047edd52a98acb91d7 Mon Sep 17 00:00:00 2001 From: Alex Vondrak Date: Thu, 9 Aug 2012 14:38:47 -0700 Subject: [PATCH] compiler.cfg.gvn.tests: add a new 'fixme' unit test for a deficiency in the gvn algorithm --- extra/compiler/cfg/gvn/gvn-tests.factor | 41 +++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/extra/compiler/cfg/gvn/gvn-tests.factor b/extra/compiler/cfg/gvn/gvn-tests.factor index ac5f7b1512..a3ff5a5f5e 100644 --- a/extra/compiler/cfg/gvn/gvn-tests.factor +++ b/extra/compiler/cfg/gvn/gvn-tests.factor @@ -3151,3 +3151,44 @@ cpu x86? [ } dup value-number-bb assert= ] unit-test ] when + +! FIXME rewrite redundancy elimination to search for available +! registers that compute the same value number, instead of just +! relying on the availability of the canonical leader + +V{ T{ ##branch } } 0 test-bb + +V{ + T{ ##inc-d { n -1 } } + T{ ##peek { dst 1 } { loc D -1 } } + T{ ##compare-imm-branch { src1 1 } { src2 f } { cc cc/= } } +} 1 test-bb + +V{ + T{ ##inc-d { n 1 } } + T{ ##load-integer { dst 2 } { val 100 } } + T{ ##branch } +} 2 test-bb + +V{ + T{ ##inc-d { n 1 } } + T{ ##load-integer { dst 3 } { val 200 } } + T{ ##branch } +} 3 test-bb + +V{ + T{ ##load-integer { dst 4 } { val 100 } } + T{ ##load-integer { dst 5 } { val 100 } } + T{ ##load-integer { dst 6 } { val 100 } } +} 4 test-bb + +test-diamond + +[ ] [ + cfg new 0 get >>entry + value-numbering drop +] unit-test + +! Not fixed yet; and would need to change if value-numbering +! subsumed copy-prop. +! [ t ] [ 4 get instructions>> [ ##copy? ] any? ] unit-test