From 7392351a8f54ecfcfcd81736f2c6e81854e057c7 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Tue, 18 Apr 2023 11:46:28 -0700 Subject: compiler: simplify live-info defined set semantics. * stdlib/optimize.tl (basic-blocks local-liveness): Just store the mask of defined registers into each live-info. Do not propagate the defined mask from the next instruction backwards. The way the defined mask is used in calc-liveness, this makes no difference, and is simpler and faster. --- stdlib/optimize.tl | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/stdlib/optimize.tl b/stdlib/optimize.tl index 095350d3..5919e8cb 100644 --- a/stdlib/optimize.tl +++ b/stdlib/optimize.tl @@ -180,7 +180,7 @@ (set li.def1 def1) (new live-info used (logand li.used (lognot dmask)) - defined (logior li.defined dmask))) + defined dmask)) (t (prog1 (copy li) (set li.def0 def0) @@ -190,8 +190,7 @@ (let* ((rn (regnums refs)) (rmask (mask . rn))) (new live-info - used (logior li.used rmask) - defined (logand li.defined (lognot rmask))))) + used (logior li.used rmask)))) (def-ref (li insn def . refs) (set li.def0 def [bb.li-hash insn] li) @@ -202,10 +201,9 @@ (cond (dn (new live-info used (logior (logand li.used (lognot dmask)) rmask) - defined (logior (logand li.defined (lognot rmask)) dmask))) + defined dmask)) (t (new live-info - used (logior li.used rmask) - defined (logand li.defined (lognot rmask))))))) + used (logior li.used rmask)))))) (liveness (insns) (if (null insns) (new live-info used 0) -- cgit v1.2.3