compiler.cfg.gvn.alien: clean up destructive rewrites
parent
60abd53808
commit
1adfdc5fd6
|
@ -52,7 +52,7 @@ M: ##unbox-alien rewrite rewrite-unbox-any-c-ptr ;
|
||||||
base>> vreg>insn ##add-imm? ;
|
base>> vreg>insn ##add-imm? ;
|
||||||
|
|
||||||
: fuse-base-offset ( insn -- insn' )
|
: fuse-base-offset ( insn -- insn' )
|
||||||
dup base>> vreg>insn
|
clone dup base>> vreg>insn
|
||||||
[ src1>> ] [ src2>> ] bi
|
[ src1>> ] [ src2>> ] bi
|
||||||
[ >>base ] [ '[ _ + ] change-offset ] bi* ;
|
[ >>base ] [ '[ _ + ] change-offset ] bi* ;
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ M: ##unbox-alien rewrite rewrite-unbox-any-c-ptr ;
|
||||||
{ [ scale>> 0 = ] [ displacement>> vreg>insn ##add-imm? ] } 1&& ;
|
{ [ scale>> 0 = ] [ displacement>> vreg>insn ##add-imm? ] } 1&& ;
|
||||||
|
|
||||||
: fuse-displacement-offset ( insn -- insn' )
|
: fuse-displacement-offset ( insn -- insn' )
|
||||||
dup displacement>> vreg>insn
|
clone dup displacement>> vreg>insn
|
||||||
[ src1>> ] [ src2>> ] bi
|
[ src1>> ] [ src2>> ] bi
|
||||||
[ >>displacement ] [ '[ _ + ] change-offset ] bi* ;
|
[ >>displacement ] [ '[ _ + ] change-offset ] bi* ;
|
||||||
|
|
||||||
|
@ -104,7 +104,7 @@ M: ##store-memory-imm new-alien-insn drop \ ##store-memory new-insn ;
|
||||||
{ [ scale>> 0 = ] [ displacement>> vreg>insn scale-insn? ] } 1&& ;
|
{ [ scale>> 0 = ] [ displacement>> vreg>insn scale-insn? ] } 1&& ;
|
||||||
|
|
||||||
: fuse-scale ( insn -- insn' )
|
: fuse-scale ( insn -- insn' )
|
||||||
dup displacement>> vreg>insn
|
clone dup displacement>> vreg>insn
|
||||||
[ src1>> ] [ src2>> ] bi
|
[ src1>> ] [ src2>> ] bi
|
||||||
[ >>displacement ] [ >>scale ] bi* ;
|
[ >>displacement ] [ >>scale ] bi* ;
|
||||||
|
|
||||||
|
|
|
@ -49,10 +49,6 @@ M: array process-instruction
|
||||||
: value-numbering-step ( insns -- insns' )
|
: value-numbering-step ( insns -- insns' )
|
||||||
[ process-instruction ] map flatten ;
|
[ process-instruction ] map flatten ;
|
||||||
|
|
||||||
! FIXME there's going to be trouble with certain rewrites that
|
|
||||||
! modify the cfg / instructions destructively; namely those in
|
|
||||||
! alien.factor
|
|
||||||
|
|
||||||
: value-numbering-iteration ( cfg -- )
|
: value-numbering-iteration ( cfg -- )
|
||||||
clear-exprs
|
clear-exprs
|
||||||
[ value-numbering-step drop ] simple-analysis ;
|
[ value-numbering-step drop ] simple-analysis ;
|
||||||
|
|
Loading…
Reference in New Issue