From 1adfdc5fd6906da1f30db1cba9df30327cd0fffd Mon Sep 17 00:00:00 2001 From: Alex Vondrak Date: Sat, 18 Jun 2011 16:40:45 -0700 Subject: [PATCH] compiler.cfg.gvn.alien: clean up destructive rewrites --- extra/compiler/cfg/gvn/alien/alien.factor | 6 +++--- extra/compiler/cfg/gvn/gvn.factor | 4 ---- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/extra/compiler/cfg/gvn/alien/alien.factor b/extra/compiler/cfg/gvn/alien/alien.factor index a95a959e1d..7b7e235dcc 100644 --- a/extra/compiler/cfg/gvn/alien/alien.factor +++ b/extra/compiler/cfg/gvn/alien/alien.factor @@ -52,7 +52,7 @@ M: ##unbox-alien rewrite rewrite-unbox-any-c-ptr ; base>> vreg>insn ##add-imm? ; : fuse-base-offset ( insn -- insn' ) - dup base>> vreg>insn + clone dup base>> vreg>insn [ src1>> ] [ src2>> ] 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&& ; : fuse-displacement-offset ( insn -- insn' ) - dup displacement>> vreg>insn + clone dup displacement>> vreg>insn [ src1>> ] [ src2>> ] 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&& ; : fuse-scale ( insn -- insn' ) - dup displacement>> vreg>insn + clone dup displacement>> vreg>insn [ src1>> ] [ src2>> ] bi [ >>displacement ] [ >>scale ] bi* ; diff --git a/extra/compiler/cfg/gvn/gvn.factor b/extra/compiler/cfg/gvn/gvn.factor index ef1f2f0cd8..685de8bd7a 100644 --- a/extra/compiler/cfg/gvn/gvn.factor +++ b/extra/compiler/cfg/gvn/gvn.factor @@ -49,10 +49,6 @@ M: array process-instruction : value-numbering-step ( insns -- insns' ) [ 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 -- ) clear-exprs [ value-numbering-step drop ] simple-analysis ;