diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2018-03-23 07:52:13 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2018-03-23 07:52:13 -0700 |
commit | 120fff7edbc81eac6272a9e9bfc7a23d3eb94f55 (patch) | |
tree | 9cd4c90cb630fb47f6dde18c7ce3c021b57bf0ad /share | |
parent | 0e9adb0fd7c861f6f03ddb44c713153d2109a07f (diff) | |
download | txr-120fff7edbc81eac6272a9e9bfc7a23d3eb94f55.tar.gz txr-120fff7edbc81eac6272a9e9bfc7a23d3eb94f55.tar.bz2 txr-120fff7edbc81eac6272a9e9bfc7a23d3eb94f55.zip |
compiler: constant-optimize prog1
* share/txr/stdlib/compiler.tl (compiler comp-prog1): prog1
already uses progn. When using progn, though, it should append
the nil form to the tail, otherwise progn will spare the last
from from being eliminated, leaving an unused constant in the
data table.
Diffstat (limited to 'share')
-rw-r--r-- | share/txr/stdlib/compiler.tl | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/share/txr/stdlib/compiler.tl b/share/txr/stdlib/compiler.tl index 573d4e37..0a473a74 100644 --- a/share/txr/stdlib/compiler.tl +++ b/share/txr/stdlib/compiler.tl @@ -568,7 +568,8 @@ (tree-case form ((prog1 fi . re) (let* ((igreg me.(alloc-treg)) (fi-frag me.(compile oreg env fi)) - (re-frag me.(comp-progn igreg env re))) + (re-frag me.(comp-progn igreg env + (append re '(nil))))) me.(free-treg igreg) (new (frag fi-frag.oreg (append fi-frag.code re-frag.code) |