From 72f2e9594bd2fcc709fc3822face6dbe42a18f0b Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Fri, 23 Mar 2018 07:52:13 -0700 Subject: 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. --- share/txr/stdlib/compiler.tl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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) -- cgit v1.2.3