From: Andrea Corallo <akrl@sdf.org>
To: Dmitry Gutov <dgutov@yandex.ru>
Cc: Eli Zaretskii <eliz@gnu.org>,
emacs-devel@gnu.org, Stefan Kangas <stefankangas@gmail.com>,
rpluim@gmail.com
Subject: Re: native-comp-async-report-warnings-errors default value
Date: Thu, 30 Dec 2021 09:37:53 +0000 [thread overview]
Message-ID: <xjf35ma5t72.fsf@ma.sdf.org> (raw)
In-Reply-To: <5c75fd47-5e50-938d-6f4d-1882ac8cbdb1@yandex.ru> (Dmitry Gutov's message of "Tue, 28 Dec 2021 03:59:26 +0200")
Dmitry Gutov <dgutov@yandex.ru> writes:
> On 25.12.2021 13:53, Andrea Corallo wrote:
>> Dmitry Gutov <dgutov@yandex.ru> writes:
>>
>>> Hi Andrea,
>>>
>>> On 24.12.2021 12:53, Andrea Corallo wrote:
>>>> this is not a trivial modification so I might easily miss some aspects
>>>> of it but...
>>>> Certanly bytecode ATM has no way to store declaration specifiers and
>>>> these are used for native compilation. I guess we should at least
>>>> extend this first.
>>>
>>> Thanks for the answer, I really wanted at least a high-level
>>> understanding of this point. I wouldn't presume to ask you to work on
>>> this, but maybe some of the others here who also complained about the
>>> warnings, would be interested in taking the initiative?
>>>
>>> Regarding declaration specifiers, I think the new (declare (modes
>>> ...)) feature had the same problem.
>>>
>>> Not sure how it was solved (or whether it was solved at all).
>> I guess the mode declaration has affect during byte compilation so
>> it
>> should be fine. The issue is for other declarations that are taking
>> effect afterwards in the native compilation pipeline.
>
> It has an effect at runtime: Emacs needs to look up those properties
> after the byte code is evaluated. That's why .elc files have
> additional forms added which basically call 'function-put' (as set up
> in defun-declarations-alist).
Indeed it has effect in the runtime. But as you say this is because the
byte compiler generates different code for that (in this case a top
level form). In the case of the native compiler we'd need to store and
reuse a bunch of information for following native compilation that has
to happen after.
> But...
>
>> As the bytecompiler pipeline was always assumed to be the only and last
>> compilation step, bytecode is ATM not designed to retain these
>> information. I'm sure it's extensible somehow but we probably need some
>> advise on what's the best way to approach this.
>
> ...I suppose you might want to access that information without
> evaluating said additional byte code forms either.
>
> Or could it evaluate them anyway? If native compilation happens after
> the code is loaded, the symbols will have the necessary properties
> then.
Maybe a sufficient solution is an ad hoc local variable emitted (when
necessary) in the .elc file with like an a-list function -> declaration
specifiers we are interested in?
Andrea
next prev parent reply other threads:[~2021-12-30 9:37 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-14 11:23 native-comp-async-report-warnings-errors default value Robert Pluim
2021-10-14 11:30 ` Eli Zaretskii
2021-10-14 11:43 ` Robert Pluim
2021-10-14 11:52 ` Eli Zaretskii
2021-10-14 14:48 ` Robert Pluim
2021-10-14 15:57 ` Eli Zaretskii
2021-10-14 16:42 ` Lars Ingebrigtsen
2021-10-14 16:47 ` Eli Zaretskii
2021-10-15 8:51 ` Robert Pluim
2021-10-14 12:07 ` Stefan Kangas
2021-10-14 12:12 ` Eli Zaretskii
2021-12-02 17:03 ` Stefan Kangas
2021-12-02 17:10 ` Lars Ingebrigtsen
2021-12-02 17:14 ` Andrea Corallo
2021-12-02 21:15 ` T.V Raman
2021-12-02 18:23 ` Eli Zaretskii
2021-12-02 19:27 ` Stefan Kangas
2021-12-02 19:42 ` Eli Zaretskii
2021-12-06 20:11 ` Stefan Kangas
2021-12-06 20:26 ` Eli Zaretskii
2021-12-07 7:51 ` Lars Ingebrigtsen
2021-12-07 9:37 ` Andrea Corallo
2021-12-07 9:42 ` Robert Pluim
2021-12-07 9:54 ` Andrea Corallo
2021-12-07 12:38 ` Robert Pluim
2021-12-07 14:28 ` Eli Zaretskii
2021-12-07 16:54 ` Robert Pluim
2021-12-07 17:16 ` Eli Zaretskii
2021-12-08 9:19 ` Robert Pluim
2021-12-08 13:23 ` Eli Zaretskii
2021-12-08 13:46 ` Andrea Corallo
2021-12-07 13:24 ` Stefan Monnier
2021-12-07 14:05 ` Andrea Corallo
2021-12-07 14:33 ` Eli Zaretskii
2021-12-07 14:15 ` Eli Zaretskii
2021-12-07 20:20 ` Lars Ingebrigtsen
2021-12-17 18:14 ` Stefan Kangas
2021-12-17 19:12 ` Eli Zaretskii
2021-12-17 19:27 ` Óscar Fuentes
2021-12-17 19:36 ` Stefan Kangas
2021-12-17 20:07 ` Stefan Kangas
2021-12-17 20:38 ` Eli Zaretskii
2021-12-17 20:53 ` Dmitry Gutov
2021-12-17 21:20 ` Colin Baxter 😺
2021-12-17 22:01 ` Ken Brown
2021-12-18 0:48 ` Dmitry Gutov
2021-12-18 14:38 ` Ken Brown
2021-12-18 16:58 ` Óscar Fuentes
2021-12-18 20:51 ` Ken Brown
2021-12-17 22:10 ` Rudolf Adamkovič
2021-12-17 21:10 ` Stefan Kangas
2021-12-18 0:24 ` Po Lu
2021-12-20 8:29 ` Andrea Corallo
2021-12-24 1:01 ` Dmitry Gutov
2021-12-24 1:34 ` T.V Raman
2021-12-24 9:53 ` Andrea Corallo
2021-12-25 0:05 ` Dmitry Gutov
2021-12-25 10:53 ` Andrea Corallo
2021-12-28 1:59 ` Dmitry Gutov
2021-12-30 9:37 ` Andrea Corallo [this message]
2022-01-08 2:29 ` Dmitry Gutov
2021-12-02 21:14 ` T.V Raman
2021-12-03 6:50 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xjf35ma5t72.fsf@ma.sdf.org \
--to=akrl@sdf.org \
--cc=dgutov@yandex.ru \
--cc=eliz@gnu.org \
--cc=emacs-devel@gnu.org \
--cc=rpluim@gmail.com \
--cc=stefankangas@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).