Subject: bug#43845: toplevel definition in module: another compiler optimization bug

From: Jan Nieuwenhuizen <[email-masked]>
Date: Wed, 07 Oct 2020 14:08:15 +0200

Hi!

This morning I found another bug while porting Mes to Guile-3.  It looks
similar to #43831; compilation with -O2 shows wrong behaviour.

Also, this works on Guile-2.2.

To reproduce:

--8<---------------cut here---------------start------------->8---
14:02:54 janneke@dundal:~/tmp/bug2 [env]
$ guile --no-auto-compile -L . script.scm 
dumping0: foo
14:03:06 janneke@dundal:~/tmp/bug2 [env]
$ guild compile -O1 -o mescc.go mescc.scm
wrote `mescc.go'
14:03:33 janneke@dundal:~/tmp/bug2 [env]
$ guile --no-auto-compile -L . -C . script.scm 
dumping0: foo
14:03:42 janneke@dundal:~/tmp/bug2 [env]
$ guild compile -O2 -o mescc.go mescc.scm
wrote `mescc.go'
14:03:49 janneke@dundal:~/tmp/bug2 [env]
$ guile --no-auto-compile -L . -C . script.scm 
dumping0: foo
Backtrace:
           1 (primitive-load "/home/janneke/tmp/bug2/script.scm")
In mescc.scm:
     27:4  0 (with-output-to-file _ #<procedure 7f5effc15388 at mescc.scm:35:6 _>)

mescc.scm:27:4: In procedure with-output-to-file:
Throw to key `looping' with args `()'.
[1]14:03:52 janneke@dundal:~/tmp/bug2 [env]
$
--8<---------------cut here---------------end--------------->8---

Greetings,
Janneke

-- 
Jan Nieuwenhuizen <[email-masked]> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com