diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2018-04-08 21:11:28 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2018-04-08 21:11:28 -0700 |
commit | 969afde71c5b4b6e7b6c7228e1dba3281440a0bd (patch) | |
tree | 0280fd751d30b99b60dbb5db8b20f16a0c5c66f7 | |
parent | 362cdf3c0f208e9fb89922216c99da7f62b6f83e (diff) | |
download | txr-969afde71c5b4b6e7b6c7228e1dba3281440a0bd.tar.gz txr-969afde71c5b4b6e7b6c7228e1dba3281440a0bd.tar.bz2 txr-969afde71c5b4b6e7b6c7228e1dba3281440a0bd.zip |
compiler: fix broken prog1.
* share/txr/stdlib/compiler.tl (compiler comp-prog1): The
output of the frag should be fireg, not oreg. We need to
move into fireg before re-frag.code is executed, because
the data source in fi-frag may be clobbered by re-frag.
-rw-r--r-- | share/txr/stdlib/compiler.tl | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/share/txr/stdlib/compiler.tl b/share/txr/stdlib/compiler.tl index bab0d341..2977b865 100644 --- a/share/txr/stdlib/compiler.tl +++ b/share/txr/stdlib/compiler.tl @@ -826,10 +826,10 @@ (append re '(nil))))) me.(maybe-free-treg fireg oreg) me.(free-treg igreg) - (new (frag oreg + (new (frag fireg (append fi-frag.code - re-frag.code - (maybe-mov oreg fireg)) + (maybe-mov fireg fi-frag.oreg) + re-frag.code) (uni fi-frag.fvars re-frag.fvars) (uni fi-frag.ffuns re-frag.ffuns))))) ((prog1 fi) me.(compile oreg env fi)) |