[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#74771: Native compilation bug with struct predicates when lexical bi
From: |
Andrea Corallo |
Subject: |
bug#74771: Native compilation bug with struct predicates when lexical binding enabled (HEAD) |
Date: |
Wed, 11 Dec 2024 17:29:34 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
Eric Marsden <eric.marsden@risk-engineering.org> writes:
> Hi,
>
> With the attached source file, Emacs miscompiles the struct predicate such
> that a repeated call to the predicate on a non-struct object returns t.
> This occurs with current HEAD on Linux/AMD64, but not on the Emacs 30.0.92
> pretest. It does not occur when the lexical binding cookie is not present.
>
> % /opt/emacs/bin/emacs -Q --batch --eval "(load (native-compile
> \"/tmp/bug.el\"))" -f run
> Loading
> /home/emarsden/.emacs.d/eln-cache/31.0.50-c021c983/bug-59c4b27c-c70072f9.eln
> (native compiled elisp)...
> Running in GNU Emacs 31.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
> 3.24.43, cairo version 1.18.2)
> of 2024-12-09
> is? nil
> is? t ;; expecting nil
> bar: 111
>
> ;;; -*- lexical-binding: t -*-
> ;;
> ;; /opt/emacs/bin/emacs -Q --batch -L . --eval "(load (native-compile
> \"/tmp/bug.el\"))" -f run
>
> (require 'cl-lib)
>
> (cl-defstruct foobles bar baz)
>
> (defun bug (foo)
> (message "is? %s" (foobles-p foo))
> (message "is? %s" (foobles-p foo))
> (message "bar: %s" (foobles-bar foo)))
>
> (defun run ()
> (message "Running in %s" (version))
> (let ((foo "foo"))
> (bug foo)))
Hi Eric,
thanks for the report, I'll look at this in the coming days.
Andrea