bug#75216: Miscompilation of code with numeric predicates

Ludovic Courtès <[email protected]> Fri, 28 Feb 2025 21:22:05 +0100
Newsgroups gmane.lisp.guile.bugs
Message-ID <[email protected]>
"Thompson, David" <[email protected]> skribis:

> Consider this contrived procedure:
>
> (define (foo x)
>   (cond
>    ((integer? x) 42)
>    ((and (number? x) (inexact? x)) 69)
>    (else 138)))
>
> This procedure is kind of silly but it resembles some real world code
> I was debugging today.  A call of (foo 8.2) should return 69 and
> indeed it does so on Guile 3.0.9. Not so on Guile 3.0.10 where it
> returns 138.

Bug confirmed on c8a169d38825d5a21da5392b355ca5fc9f33fa55 (post 3.0.10).

Ludo’.