diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2023-03-21 21:07:07 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2023-03-21 21:07:07 -0700 |
commit | 3800dbb4dcb363419814735b7f1e00ff3544449b (patch) | |
tree | 152189aba15b055b4dbc274ce740a3a6d7dd4d8e | |
parent | 1adc9a307ca9009a9cd39b7ed109cd9ecb597200 (diff) | |
download | txr-3800dbb4dcb363419814735b7f1e00ff3544449b.tar.gz txr-3800dbb4dcb363419814735b7f1e00ff3544449b.tar.bz2 txr-3800dbb4dcb363419814735b7f1e00ff3544449b.zip |
compiler: unused warnings in optimizer.
* stdlib/optimizer.tl (basic-block print): Suppress
warning for pretty-p parameter using the use function.
(basic-blocks (local-liveness, calc-liveness,
thread-jumps-block, peephole-block, late-peephole,
fill-treg-compacting-map), (basic-block
apply-treg-compacting-map), dedup-labels): Fix
unused variables in pattern, mostly by replacing
them by @nil.
(basic-blocks check-bypass-empty): Method moved,
turned into (basic-block check-bypass-empty),
losing the unused basic-blocks parameter.
(basic-blocks elim-next-jump): Likewise moved
into basic-block class.
(basic-blocks elim-dead-code): Calls to check-bypass-empty
and elim-next-jump adjusted.
-rw-r--r-- | stdlib/optimize.tl | 124 |
1 files changed, 62 insertions, 62 deletions
diff --git a/stdlib/optimize.tl b/stdlib/optimize.tl index 7681bca1..387fea1a 100644 --- a/stdlib/optimize.tl +++ b/stdlib/optimize.tl @@ -42,13 +42,14 @@ nojoin (:method print (bl stream pretty-p) - (put-string "#S" stream) - (print ^(basic-block live ,bl.live - label ,bl.label - insns ,bl.insns - links ,(mapcar .label bl.links) - rlinks ,(mapcar .label bl.rlinks) - next ,bl.next.?label) stream))) + (use pretty-p) + (put-string "#S" stream) + (print ^(basic-block live ,bl.live + label ,bl.label + insns ,bl.insns + links ,(mapcar .label bl.links) + rlinks ,(mapcar .label bl.rlinks) + next ,bl.next.?label) stream))) (defstruct (basic-blocks insns lt-dregs symvec) nil insns @@ -207,7 +208,7 @@ (refs li insn reg)) ((@(or apply call) @def . @refs) (def-ref li insn def . refs)) - ((@(or gapply gcall) @def @fidx . @refs) + ((@(or gapply gcall) @def @nil . @refs) (def-ref li insn def . refs)) ((mov @def @ref) (def-ref li insn def ref)) @@ -238,7 +239,7 @@ getvb getfb getl1b getlx getf setl1 setlx bindv close) (error `wrongly handled @insn instruction`)) (t (set [bb.li-hash insn] li)))) - (@else (set [bb.li-hash insn] li))))))) + (@else (set [bb.li-hash else] li))))))) (let ((li (liveness bl.insns))) (set bl.used li.used bl.defined li.defined)))) @@ -257,7 +258,7 @@ (clear-mask live lif.defined) (set-mask lif.used live) live)) - (else live))) + (t live))) (visit (bl) (unless [visited bl] (set [visited bl] t) @@ -285,7 +286,7 @@ (while* (nequal ninsn insn) (set insn ninsn ninsn (match-case insn - (@(require (if @(as reg (d @dn)) @jlabel) + (@(require (if @(as reg (d @nil)) @nil) (not (memqual reg bb.lt-dregs))) nil) ((if (t 0) @jlabel) @@ -296,7 +297,7 @@ ((@jlabel (jmp @(and @jjlabel @(not @jlabel))) . @nil) ^(jmp ,jjlabel)) - (@jelse insn)))) + (@nil insn)))) ((if @reg @jlabel) (let* ((jbl [bb.hash jlabel])) (match-case jbl.insns @@ -307,13 +308,13 @@ ((@jlabel (jmp @(and @jjlabel @(not @jlabel))) . @nil) ^(if ,reg ,jjlabel)) - ((@jlabel - (ifq @reg (t 0) @jjlabel) . @nil) + ((@nil + (ifq @reg (t 0) @nil) . @nil) (let ((xbl jbl.next)) (if xbl ^(if ,reg ,xbl.label) insn))) - (@jelse insn)))) + (@nil insn)))) ((ifq @reg @creg @jlabel) (let ((jbl [bb.hash jlabel])) (match-case jbl.insns @@ -322,23 +323,22 @@ @(and @jjlabel @(not @jlabel))) . @nil) ^(ifq ,reg ,creg ,jjlabel)) ((@(require @jlabel (equal creg '(t 0))) - (if @reg - @(and @jjlabel @(not @jlabel))) . @nil) + (if @reg @(not @jlabel)) . @nil) (let ((xbl jbl.next)) (if xbl ^(ifq ,reg ,creg ,xbl.label) insn))) - ((@jlabel + ((@nil (jmp @(and @jjlabel @(not @jlabel))) . @nil) ^(ifq ,reg ,creg ,jjlabel)) - (@jelse insn)))) + (@nil insn)))) ((close @reg @frsize @ntregs @jlabel . @cargs) (let ((jbl [bb.hash jlabel])) (match-case jbl.insns ((@jlabel (jmp @(and @jjlabel @(not @jlabel))) . @nil) ^(close ,reg ,frsize ,ntregs ,jjlabel ,*cargs)) - (@jelse insn)))) + (@nil insn)))) (@else else)))) (cond ((null ninsn) (ldiff code tail)) @@ -389,7 +389,7 @@ (set bb.recalc t) (labels ((rename (insns n dst src) (tree-case insns - ((fi . re) + ((fi . t) (cons (subst-preserve dst src bb [bb.li-hash fi] fi) (rename (cdr insns) n dst src))) (else else)))) @@ -402,7 +402,7 @@ (set bb.recalc t) ^(,(car insns) ,*rest)) ;; frame reduction - (((@(or frame dframe) @lev @size) + (((@(or frame dframe) @lev @nil) (@(or call gcall mov) . @(require @(coll (v @vlev @nil)) (none vlev (op eql (ppred lev))))) @@ -413,7 +413,7 @@ (let* ((jbl [bb.hash jlabel]) (jinsns jbl.insns)) (match-case jinsns - ((@jlabel + ((@nil (end (t @reg)) . @jrest) (let* ((ybl bl.next) (xbl (if ybl @@ -429,16 +429,16 @@ (set bb.links (list ybl xbl)) ^((if (t ,reg) ,xbl.label))) (t insns)))) - (@jelse insns)))) - (@(require ((if @(as reg (d @dn)) @jlabel) . @nil) + (@nil insns)))) + (@(require ((if @(as reg (d @nil)) @nil) . @nil) (not (memqual reg bb.lt-dregs))) (push bl bb.tryjoin) (push bl bb.rescan) (pushnew bl.next bb.rescan) (set bb.recalc t) nil) - (@(require @(or ((@(or ifq ifql) @(as reg (d @dn)) (t 0) @jlabel) . @nil) - ((@(or ifq ifql) (t 0) @(as reg (d @dn)) @jlabel) . @nil)) + (@(require @(or ((@(or ifq ifql) @(as reg (d @nil)) (t 0) @jlabel) . @nil) + ((@(or ifq ifql) (t 0) @(as reg (d @nil)) @jlabel) . @nil)) (not (memqual reg bb.lt-dregs))) (pushnew bl.next bb.rescan) (set bb.recalc t @@ -469,14 +469,14 @@ ^(,(car jinsns))) ((@nil (jend @nil) . @nil) ^(,(car jinsns) ,(cadr jinsns))) - (@else insns)))) + (@nil insns)))) (when (neq insns oinsns) (pushnew bl bb.rescan) (set bb.recalc t bl.next nil bl.links nil)) oinsns)) - (@else insns)))) + (@nil insns)))) (defmeth basic-blocks peephole (bb) (each ((bl bb.list)) @@ -502,27 +502,6 @@ (each ((bl bb.list)) (set bl.insns bb.(thread-jumps-block bl.insns)))) -(defmeth basic-blocks check-bypass-empty (bb bl nx) - (unless (cdr bl.insns) - (upd nx.rlinks (remq bl)) - (each ((pb bl.rlinks)) - (if (eq pb.next bl) - (set pb.next nx)) - (upd pb.links (subst bl nx)) - (upd pb.insns (mapcar [iffi consp (op subst bl.label nx.label)])) - (push pb nx.rlinks)) - bl)) - -(defmeth basic-blocks elim-next-jump (bb bl nx) - (let* ((tail (last bl.insns)) - (linsn (car tail))) - (match-case linsn - (@(or (jmp @jlabel) - (if @nil @jlabel) - (@(or ifq ifql) @nil @nil @jlabel)) - (when (eql nx.label jlabel) - (set bl.insns (butlast bl.insns))))))) - (defmeth basic-blocks join-blocks (bb) (labels ((joinbl (list) (tree-case list @@ -557,7 +536,7 @@ (let (flg) (each ((bl bb.list) (nx (cdr bb.list))) - (when bb.(check-bypass-empty bl nx) + (when bl.(check-bypass-empty nx) (set flg t) (del [visited bl]))) (if flg @@ -566,8 +545,8 @@ (let (rep) (each ((bl bb.list) (nx (cdr bb.list))) - bb.(elim-next-jump bl nx) - (when bb.(check-bypass-empty bl nx) + bl.(elim-next-jump nx) + (when bl.(check-bypass-empty nx) (set rep t) (del [visited bl]))) (if rep @@ -619,13 +598,13 @@ ^((ifq ,reg (t 0) ,lab3) ,lab1 ,*rest)))) - (((mov (t @tn) (d @dn)) + (((mov (t @tn) (d @nil)) (jmp @lab3) - @lab2 + @nil (mov (t @tn) (t 0)) @(symbolp @lab3) (ifq (t @tn) (t 0) @lab4) - . @rest) + . @nil) ^(,(car insns) (jmp ,lab4) ,*(cddr insns))) @@ -633,9 +612,9 @@ (mov (t @tn) (t 0)) @lab2 (ifq (t @tn) (t 0) @lab4) - @(symbolp @lab3) - (gcall (t @tn) . @grest) - . @rest) + @(symbolp) + (gcall (t @tn) . @nil) + . @nil) ^(,lab2 (ifq (t ,tn) (t 0) ,lab4) ,lab1 @@ -686,14 +665,14 @@ (match-case insn ((close @reg . @nil) (add-treg reg)) - ((@op . @args) + ((@nil . @args) (add-tregs args)))))) (defmeth basic-block apply-treg-compacting-map (bl map) (labels ((fix (arg) [map arg arg]) (fix-tregs (args) [mapcar fix args])) (iflet ((cl bl.closer)) - (match ((close @reg @frsize @ntregs . @rest)) (last cl.insns) + (match ((close @reg @frsize @nil . @rest)) (last cl.insns) (set (last cl.insns) ^((close ,reg ,frsize ,(len map) ,*(fix-tregs rest)))))) (set bl.insns (collect-each ((insn bl.insns)) @@ -704,6 +683,27 @@ ^(,op ,*(fix-tregs args))) (@else else)))))) +(defmeth basic-block check-bypass-empty (bl nx) + (unless (cdr bl.insns) + (upd nx.rlinks (remq bl)) + (each ((pb bl.rlinks)) + (if (eq pb.next bl) + (set pb.next nx)) + (upd pb.links (subst bl nx)) + (upd pb.insns (mapcar [iffi consp (op subst bl.label nx.label)])) + (push pb nx.rlinks)) + bl)) + +(defmeth basic-block elim-next-jump (bl nx) + (let* ((tail (last bl.insns)) + (linsn (car tail))) + (match-case linsn + (@(or (jmp @jlabel) + (if @nil @jlabel) + (@(or ifq ifql) @nil @nil @jlabel)) + (when (eql nx.label jlabel) + (set bl.insns (butlast bl.insns))))))) + (defmeth basic-blocks compact-tregs (bb) bb.(identify-closures) (each ((bl bb.closures)) @@ -728,7 +728,7 @@ (set insns (mapcar [iffi listp (op subst label1 label0)] (remq label1 insns))) (cons label0 rest)) - (@else tail)) + (@nil tail)) insns) (defun early-peephole (code) |