From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Alan Mackenzie Newsgroups: gmane.emacs.devel Subject: Correct byte compiler error/warning positions. The solution! Date: Fri, 26 Nov 2021 19:56:21 +0000 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="33707"; mail-complaints-to="usenet@ciao.gmane.io" To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Fri Nov 26 20:57:49 2021 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mqhLw-0008Yh-GW for ged-emacs-devel@m.gmane-mx.org; Fri, 26 Nov 2021 20:57:48 +0100 Original-Received: from localhost ([::1]:47486 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mqhLv-0001TK-GV for ged-emacs-devel@m.gmane-mx.org; Fri, 26 Nov 2021 14:57:47 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:55006) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mqhKq-0000hw-UH for emacs-devel@gnu.org; Fri, 26 Nov 2021 14:56:40 -0500 Original-Received: from colin.muc.de ([193.149.48.1]:22667 helo=mail.muc.de) by eggs.gnu.org with smtp (Exim 4.90_1) (envelope-from ) id 1mqhKo-0004LH-5c for emacs-devel@gnu.org; Fri, 26 Nov 2021 14:56:40 -0500 Original-Received: (qmail 31224 invoked by uid 3782); 26 Nov 2021 19:56:22 -0000 Original-Received: from acm.muc.de (p4fe15b9f.dip0.t-ipconnect.de [79.225.91.159]) (using STARTTLS) by colin.muc.de (tmda-ofmipd) with ESMTP; Fri, 26 Nov 2021 20:56:22 +0100 Original-Received: (qmail 12550 invoked by uid 1000); 26 Nov 2021 19:56:21 -0000 Content-Disposition: inline X-Submission-Agent: TMDA/1.3.x (Ph3nix) X-Primary-Address: acm@muc.de Received-SPF: pass client-ip=193.149.48.1; envelope-from=acm@muc.de; helo=mail.muc.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:280276 Archived-At: Hello, Emacs. A short while ago, I mused on a solution to the incorrect positions we get in byte compiler warning/error messages. My proposed solution turned out to be impractical fantasy - it didn't and couldn't work, because of the difficulties of getting macros to play nicely. However, I've now hit on the answer. My 2018 solution to the problem _was_ a solution. It just ran somewhere around 8% more slowly than the original it was branched from, hence was deemed unacceptable by other hackers here. The reason for the slowdown was the modification to the EQ macro in lisp.h. It became necessary to check whether "symbols with position" were enabled whenever the first == comparison didn't match. A _LOT_ of these comparisons were for NILP, which is just #defined as EQ (arg, Qnil). However if NILP were to be defined directly as arg == Qnil, it would bypass the overhead in EQ. Also required here is for the reader to handle a literal "nil" specially, and return the non-positioned symbol `nil' for it, rather than a positioned `nil'. I've just tried out the above on my 2018 proposed code. On a benchmark, the new attempt ran 7.3% faster than the 2018 version. It thus seems likely that this strategem will give correct positions in warning messages without such an unacceptable slowdown. I'm going to try it out on an up to date repository. -- Alan Mackenzie (Nuremberg, Germany).