summaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2018-03-23 07:52:13 -0700
committerKaz Kylheku <kaz@kylheku.com>2018-03-23 07:52:13 -0700
commit120fff7edbc81eac6272a9e9bfc7a23d3eb94f55 (patch)
tree9cd4c90cb630fb47f6dde18c7ce3c021b57bf0ad /share
parent0e9adb0fd7c861f6f03ddb44c713153d2109a07f (diff)
downloadtxr-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.tl3
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)