From 3a0ad7a0f5d610f9d0a298aee01b34c7dfef7af4 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Thu, 24 Jul 2008 02:32:31 -0500 Subject: [PATCH] Fix an oversight on def-use analysis --- unfinished/compiler/tree/def-use/def-use.factor | 2 ++ .../tree/propagation/propagation-tests.factor | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/unfinished/compiler/tree/def-use/def-use.factor b/unfinished/compiler/tree/def-use/def-use.factor index c912582a38..51899c1dcf 100755 --- a/unfinished/compiler/tree/def-use/def-use.factor +++ b/unfinished/compiler/tree/def-use/def-use.factor @@ -44,6 +44,8 @@ M: #introduce node-defs-values values>> ; M: #>r node-defs-values out-r>> ; +M: #phi node-defs-values [ out-d>> ] [ out-r>> ] bi append ; + M: node node-defs-values out-d>> ; : node-def-use ( node -- ) diff --git a/unfinished/compiler/tree/propagation/propagation-tests.factor b/unfinished/compiler/tree/propagation/propagation-tests.factor index 5533cd1407..9fcfbdefff 100644 --- a/unfinished/compiler/tree/propagation/propagation-tests.factor +++ b/unfinished/compiler/tree/propagation/propagation-tests.factor @@ -220,3 +220,15 @@ IN: compiler.tree.propagation.tests [ V{ fixnum } ] [ [ >fixnum dup 100 < [ 1+ ] [ "Oops" throw ] if ] final-classes ] unit-test + +[ V{ -1 } ] [ + [ 0 dup 100 < not [ 1+ ] [ 1- ] if ] final-literals +] unit-test + +[ V{ fixnum } ] [ + [ [ 1 >r ] [ 2 >r ] if r> 3 + ] final-classes +] unit-test + +[ V{ 2 } ] [ + [ [ 1 ] [ 1 ] if 1 + ] final-literals +] unit-test