Fix dead load/store elimination

slava 2006-04-20 20:28:08 +00:00
parent 4c5dcf4135
commit 3ff7262976
4 changed files with 14 additions and 11 deletions

View File

@ -1,5 +1,7 @@
should fix in 0.82: should fix in 0.82:
- constant branch folding
- getenv, setenv, fast-slot stuff
- 3 >n fep - 3 >n fep
- amd64 %box-struct - amd64 %box-struct
- get factor running on mac intel - get factor running on mac intel
@ -27,6 +29,7 @@ should fix in 0.82:
+ ui/help: + ui/help:
- polish OS X menu bar code
- help search - help search
- reimplement clicking input - reimplement clicking input
- reimplement tab completion - reimplement tab completion
@ -74,7 +77,6 @@ should fix in 0.82:
- the invalid recursion form case needs to be fixed, for inlines too - the invalid recursion form case needs to be fixed, for inlines too
- code gc - code gc
- compiled gc check slows things down - compiled gc check slows things down
- fix branch folding
+ misc: + misc:

View File

@ -8,8 +8,8 @@ namespaces prettyprint sequences vectors words ;
2dup length <= [ 2dup length <= [
cut-phantom cut-phantom
] [ ] [
[ phantom-locs ] keep [ length swap tail-slice ] keep [ phantom-locs ] keep [ length swap head-slice* ] keep
append [ append 0 ] keep set-length
] if ; ] if ;
: phantom-shuffle-inputs ( shuffle -- locs locs ) : phantom-shuffle-inputs ( shuffle -- locs locs )
@ -26,9 +26,9 @@ namespaces prettyprint sequences vectors words ;
free-vregs get length <= ; free-vregs get length <= ;
: phantom-shuffle ( shuffle -- ) : phantom-shuffle ( shuffle -- )
! compute-free-vregs sufficient-shuffle-vregs? [ compute-free-vregs sufficient-shuffle-vregs? [
end-basic-block compute-free-vregs end-basic-block compute-free-vregs
! ] unless ] unless
[ phantom-shuffle-inputs ] keep [ phantom-shuffle-inputs ] keep
[ shuffle* ] keep adjust-shuffle [ shuffle* ] keep adjust-shuffle
(template-outputs) ; (template-outputs) ;

View File

@ -90,7 +90,7 @@ SYMBOL: phantom-r
: lazy-load ( value loc -- value ) : lazy-load ( value loc -- value )
over ds-loc? pick cs-loc? or [ over ds-loc? pick cs-loc? or [
dupd = [ dupd = [
drop f >r alloc-reg <vreg> dup r> %peek , ! drop f
] [ ] [
>r alloc-reg <vreg> dup r> %peek , >r alloc-reg <vreg> dup r> %peek ,
] if ] if
@ -166,11 +166,8 @@ SYMBOL: any-reg
>r phantom-d get template-match? r> and ; >r phantom-d get template-match? r> and ;
: split-template ( template phantom -- slow fast ) : split-template ( template phantom -- slow fast )
over length over length <= [ over length over length <=
drop { } swap [ drop { } swap ] [ length swap cut* ] if ;
] [
length swap cut*
] if ;
: split-templates ( template template -- slow slow fast fast ) : split-templates ( template template -- slow slow fast fast )
>r phantom-d get split-template r> >r phantom-d get split-template r>

View File

@ -14,6 +14,10 @@ math-internals namespaces test ;
[ 0 ] [ 3 [ tag ] compile-1 ] unit-test [ 0 ] [ 3 [ tag ] compile-1 ] unit-test
[ 0 3 ] [ 3 [ [ tag ] keep ] compile-1 ] unit-test [ 0 3 ] [ 3 [ [ tag ] keep ] compile-1 ] unit-test
[ 2 3 ] [ 3 [ 2 swap ] compile-1 ] unit-test
[ 2 3 4 ] [ 3 [ 2 swap 4 ] compile-1 ] unit-test
[ { 1 2 3 } { 1 4 3 } 8 8 ] [ { 1 2 3 } { 1 4 3 } 8 8 ]
[ { 1 2 3 } { 1 4 3 } [ over type over type ] compile-1 ] [ { 1 2 3 } { 1 4 3 } [ over type over type ] compile-1 ]
unit-test unit-test