GNU bug report logs - #46540
28.0.50; Native-comp optimization bug

Previous Next

Package: emacs;

Reported by: Yu Han Quek <qythium <at> gmail.com>

Date: Mon, 15 Feb 2021 19:20:02 UTC

Severity: normal

Found in version 28.0.50

Done: Andrea Corallo <akrl <at> sdf.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Andrea Corallo <akrl <at> sdf.org>
To: 46540 <at> debbugs.gnu.org
Cc: qythium <at> gmail.com
Subject: bug#46540: 28.0.50; Native-comp optimization bug
Date: Tue, 16 Feb 2021 21:43:29 +0000
Andrea Corallo via "Bug reports for GNU Emacs, the Swiss army knife of
text editors" <bug-gnu-emacs <at> gnu.org> writes:

> Yu Han Quek <qythium <at> gmail.com> writes:
>
>> The following function gives an incorrect result when compiled natively
>> with comp-speed >= 2.
>>
>> ;; -*- lexical-binding: t; -*-
>>
>> (defun native-comp-bug (body)
>>   (let ((x (car body))
>>         (y (cadr body)))
>>     (unless (and
>>              (natnump x)
>>              (natnump y)
>>              (<= x y))
>>       (error ""))
>>     x))
>
> Cool thanks for the reduced reproducer!
>
> I'll have a in the coming days.
>
>   Andrea

Ok here a slightly simplified reproducer:

;; -*- lexical-binding: t; -*-
(defun native-comp-bug (x y)
  (if (and (natnump x)
           (natnump y)
           (<= x y))
      x
    (error "")))

The following constrain insn clearly resolves in the wrong way:

(assume #(mvar 79140560 0 (integer 0 0)) (<= #(mvar 79118120 0 (integer 0 *)) #(mvar 79118988 3 (integer 0 *))))

Will come-up with a fix.

  Andrea




This bug report was last modified 4 years and 92 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.