Hi! Trying to implement bit-fields for MesCC, I stumble upon this. I was looking for a bitwise left shift that introduces 1's instead of zeros.
This code --8<---------------cut here---------------start------------->8--- ;; foo.scm (let* ((set-mask (pk 'set-mask (ash 3 3))) (clear-mask (pk 'clear-mask (logxor set-mask -1)))) (pk 'expected (logxor 24 -1)) (display clear-mask) (newline) clear-mask) --8<---------------cut here---------------end--------------->8--- behaves as I expect when compilation is turned off (compile or auto-compile behave alike for me) --8<---------------cut here---------------start------------->8--- 19:50:43 janneke@dundal:~/src/mes $ guile --no-auto-compile foo.scm ;;; (set-mask 24) ;;; (clear-mask -25) ;;; (expected -25) -25 --8<---------------cut here---------------end--------------->8--- but when (auto)compiled, look: --8<---------------cut here---------------start------------->8--- 19:50:47 janneke@dundal:~/src/mes $ guile foo.scm ;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0 ;;; or pass the --no-auto-compile argument to disable. ;;; compiling /home/janneke/src/mes/foo.scm ;;; compiled /home/janneke/.cache/guile/ccache/2.2-LE-8-3.A/home/janneke/src/mes/foo.scm.go ;;; (set-mask 24) ;;; (clear-mask -1) ;;; (expected -25) -1 --8<---------------cut here---------------end--------------->8--- I'm using guile-2.2.3 from Guix master. Is this a bug, can you suggest a workaround? Greetings, janneke -- Jan Nieuwenhuizen <jann...@gnu.org> | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | AvatarĀ® http://AvatarAcademy.com