From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Pip Cet Newsgroups: gmane.emacs.bugs Subject: bug#46670: 28.0.50; [feature/native-comp] possible miscompilation affecting lsp-mode Date: Sun, 21 Feb 2021 22:46:29 +0000 Message-ID: References: <87a6ry46uc.fsf@collares.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000e49a8905bbe0761c" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="5525"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 46670@debbugs.gnu.org, Mauricio Collares To: Andrea Corallo Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sun Feb 21 23:48:27 2021 Return-path: Envelope-to: geb-bug-gnu-emacs@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 1lDxWc-0001K7-W5 for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 21 Feb 2021 23:48:27 +0100 Original-Received: from localhost ([::1]:49346 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lDxWb-0007GQ-BI for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 21 Feb 2021 17:48:25 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:36030) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lDxWD-0007GD-VC for bug-gnu-emacs@gnu.org; Sun, 21 Feb 2021 17:48:02 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:43616) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lDxWD-0005D6-Mn for bug-gnu-emacs@gnu.org; Sun, 21 Feb 2021 17:48:01 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1lDxWD-0004ta-Ke for bug-gnu-emacs@gnu.org; Sun, 21 Feb 2021 17:48:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Pip Cet Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 21 Feb 2021 22:48:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 46670 X-GNU-PR-Package: emacs Original-Received: via spool by 46670-submit@debbugs.gnu.org id=B46670.161394763418758 (code B ref 46670); Sun, 21 Feb 2021 22:48:01 +0000 Original-Received: (at 46670) by debbugs.gnu.org; 21 Feb 2021 22:47:14 +0000 Original-Received: from localhost ([127.0.0.1]:55161 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lDxVR-0004sU-L8 for submit@debbugs.gnu.org; Sun, 21 Feb 2021 17:47:13 -0500 Original-Received: from mail-oi1-f169.google.com ([209.85.167.169]:36203) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lDxVP-0004s2-3w for 46670@debbugs.gnu.org; Sun, 21 Feb 2021 17:47:12 -0500 Original-Received: by mail-oi1-f169.google.com with SMTP id j1so240912oiw.3 for <46670@debbugs.gnu.org>; Sun, 21 Feb 2021 14:47:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=3Yj/+BkcU6rRAQAcgNs2EB/7aIpf6iCgGi6dl3wLwVg=; b=diAT+L9Zv+bxFk86OArJHuZ/7UVWuMJhgZFnk2erb0oio/4Ugfqg//84Ao3ntPjJ39 21V6DmP0cIKwkuDG0P7j88xmpLElnaErUW6EfQHOvRdUW/YWWvEUG6G+6N2t63BI0sY4 8iz1LM59RDaRCBiEVSnsP56wXYjdJXdYMemEAGetNEhVZzV8kgeIFxE2kI6YZMTWiCun h3HJ0Dgflydd1O4qBLS3LQcODVuOABYwIfTj/Ds8YWfb9w+tnhAFEF98Gbl8snjd3B5f ET0o52sYzwPxyPbt2Gf5yxuBmgXFig0cKveYu89S7nZ6hJefs5mot36lOIjmdflzjYd2 ydDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=3Yj/+BkcU6rRAQAcgNs2EB/7aIpf6iCgGi6dl3wLwVg=; b=p861rR7YFsNN8EqkK02ZVBdg3LJ4UwwDblBRgXfcmRFsjq/ci9FJYQY/GzQ2TPHLSH ueNDgvfZzqooKAGqmOw/41rMHNddC4XVY+gAa9NdAQTzyTGE5H/UhQUxOu1pveknhWoR LLzbUwieRE5PC0OAxNT5EGcZl0H+fODnuGkjY93OpXfJ3gQxaXws/g8vXSB1LabLf/tq Q3+XyfY/vuzwJ9GJscjeaZ54wFYPvpmXj9xiWChVGTaUJvIQlrBLXyJjF6N7wUCFc3Lo OygGlsm4ZJOFc9XNa8aLu7tWofL+6zIKxcedIQSLTm7BvXTa73UD8b40RKiV2b434+ux pgMg== X-Gm-Message-State: AOAM531YKsBK0JKrfG0aPiJKvqKmoGeyfwL0AbX3XNZBxTo02aNZ0dOk NSQz+zzvDWxa6regbMJza2iCDiS/os14ng8NY3s= X-Google-Smtp-Source: ABdhPJzPxU/TZEyf+rYmLQ0bjAlArVt00+SsmJjToNNxscriLMKWbUcSvTCndYGLQKusFo20w97AQnVGS/e9+AH2Mj8= X-Received: by 2002:aca:6141:: with SMTP id v62mr13514534oib.30.1613947625308; Sun, 21 Feb 2021 14:47:05 -0800 (PST) In-Reply-To: X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:200531 Archived-At: --000000000000e49a8905bbe0761c Content-Type: text/plain; charset="UTF-8" On Sun, Feb 21, 2021 at 9:03 PM Andrea Corallo wrote: > Pip Cet writes: > > > On Sun, Feb 21, 2021 at 11:51 AM Pip Cet wrote: > >> Does the attached patch help? Andrea, is my analysis correct? > > > > CCing Andrea. > > > > In more detail, some debugging showed we were trying to intersect a > > "nil or t" constraint with a "sequence" constraint, the result being a > > null constraint (t is not a sequence). So if (assume (and a b)) was > > meant to imply the intersection of a and b, we're emitting it > > incorrectly. > > Hi Pip, > > thanks for looking into this. Thanks for your explanation! > 'and' is meant to imply intersection, so yeah... as you guess there's > some problem in the LIMPLE we generate :) Thanks, I was on the wrong track there. > The correct fix is to have `comp-add-cond-cstrs' rewrite the comparison > sequence as something like: > > (set #(mvar nil X t) #(mvar 42082358 1 t)) > (set #(mvar 41121566 1 boolean) (call equal #(mvar 42082358 1 t) #(mvar 41665638 2 sequence))) > (cond-jump #(mvar 41121566 1 boolean) #(mvar nil nil null) bb_2_cstrs_0 bb_1) > > Where X is a new slot we add to the frame. We will reference this slot > number in the assume instead of 1 so it does not get clobbered. Okay, I think I understand the problem (we don't do classical SSA and throw away the slot numbers), and your solution would avoid it, but it seems needlessly complicated to me. Why create a new slot that isn't used anywhere? The value of the stack slot is clobbered by the (set ...), so we cannot emit any assumptions about that stack slot based on previous values it held. In fact, all we need to do is tell comp-cond-cstrs-target-mvar to return nil more often, isn't it? Pip --000000000000e49a8905bbe0761c Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Don-t-lie-about-who-set-the-variable.patch" Content-Disposition: attachment; filename="0001-Don-t-lie-about-who-set-the-variable.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_klfqnon80 RnJvbSAyYTQwMDQ5MDg1MWM1MzBiZDUxZjhhNDQ1M2QwZDNmYjQ1MmFiNTYxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQaXAgQ2V0IDxwaXBjZXRAZ21haWwuY29tPgpEYXRlOiBTdW4s IDIxIEZlYiAyMDIxIDIyOjQwOjA1ICswMDAwClN1YmplY3Q6IFtQQVRDSF0gRG9uJ3QgbGllIGFi b3V0IHdobyBzZXQgdGhlIHZhcmlhYmxlLgoKLS0tCiBsaXNwL2VtYWNzLWxpc3AvY29tcC5lbCB8 IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9saXNwL2VtYWNzLWxpc3AvY29tcC5lbCBiL2xpc3AvZW1hY3MtbGlzcC9j b21wLmVsCmluZGV4IDQwMzYwODA5NzY1NDYuLjE5NGIxNTEyY2MyYzQgMTAwNjQ0Ci0tLSBhL2xp c3AvZW1hY3MtbGlzcC9jb21wLmVsCisrKyBiL2xpc3AvZW1hY3MtbGlzcC9jb21wLmVsCkBAIC0y MzE3LDExICsyMzE3LDExIEBAIGNvbXAtY29uZC1jc3Rycy10YXJnZXQtbXZhcgogICAgIChjbC1s b29wCiAgICAgIHdpdGggcmVzID0gbmlsCiAgICAgIGZvciBpbnNuIGluIChjb21wLWJsb2NrLWlu c25zIGJiKQotICAgICB3aGVuIChlcSBpbnNuIGV4aXQtaW5zbikKLSAgICAgZG8gKGNsLXJldHVy biAoYW5kIChjb21wLW12YXItcCByZXMpIHJlcykpCiAgICAgIGRvIChwY2FzZSBpbnNuCiAgICAg ICAgICAgKGAoLChwcmVkIGNvbXAtYXNzaWduLW9wLXApICwocHJlZCB0YXJnZXRwKSAscmhzKQog ICAgICAgICAgICAoc2V0ZiByZXMgcmhzKSkpCisgICAgIHdoZW4gKGVxIGluc24gZXhpdC1pbnNu KQorICAgICBkbyAoY2wtcmV0dXJuIChhbmQgKGNvbXAtbXZhci1wIHJlcykgcmVzKSkKICAgICAg ZmluYWxseSAoY2wtYXNzZXJ0IG5pbCkpKSkKIAogKGRlZnVuIGNvbXAtYWRkLWNvbmQtY3N0cnMt dGFyZ2V0LWJsb2NrIChjdXJyLWJiIHRhcmdldC1iYi1zeW0pCi0tIAoyLjMwLjAKCg== --000000000000e49a8905bbe0761c--