summaryrefslogtreecommitdiffstats
path: root/stdlib/optimize.tl
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/optimize.tl')
-rw-r--r--stdlib/optimize.tl9
1 files changed, 5 insertions, 4 deletions
diff --git a/stdlib/optimize.tl b/stdlib/optimize.tl
index 8a7bce71..8d2c1f5c 100644
--- a/stdlib/optimize.tl
+++ b/stdlib/optimize.tl
@@ -24,6 +24,7 @@
;; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
;; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
;; POSSIBILITY OF SUCH DAMAGE.
+
(compile-only
(defstruct live-info nil
(defined 0)
@@ -252,8 +253,8 @@
((fi . re)
(let* ((live (upd-used bl re live))
(lif [bb.li-hash fi]))
- (set live (logand live (lognot lif.defined)))
- (set lif.used (logior live lif.used))
+ (clear-mask live lif.defined)
+ (set-mask lif.used live)
live))
(else live)))
(visit (bl)
@@ -265,12 +266,12 @@
(old-live (or bl.live 0)))
(each ((nx bl.links))
(visit nx)
- (set used (logior used nx.used)))
+ (set-mask used nx.used))
(when (neql (set bl.live (logior used old-live))
old-live)
(let ((live-in (logand (upd-used bl bl.insns bl.live)
(lognot bl.defined))))
- (set bl.used (logior live-in bl.used)))
+ (set-mask bl.used live-in))
(set changed t))))))
(set changed nil)
(visit bb.root))))))