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.devel Subject: Re: feature/native-comp 5bc0855 2/2: Don't treat '=' as simple equality emitting constraints (bug#46812) Date: Tue, 2 Mar 2021 05:20:10 +0000 Message-ID: References: <20210228230215.15472.12941@vcs0.savannah.gnu.org> <20210228230217.1971E20E1B@vcs0.savannah.gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="6231"; mail-complaints-to="usenet@ciao.gmane.io" To: emacs-devel@gnu.org, Andrea Corallo Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Tue Mar 02 06:21:23 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 1lGxTG-0001RX-8P for ged-emacs-devel@m.gmane-mx.org; Tue, 02 Mar 2021 06:21:22 +0100 Original-Received: from localhost ([::1]:49608 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGxTF-0007Sj-9l for ged-emacs-devel@m.gmane-mx.org; Tue, 02 Mar 2021 00:21:21 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:33482) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGxSj-00071z-VB for emacs-devel@gnu.org; Tue, 02 Mar 2021 00:20:50 -0500 Original-Received: from mail-oi1-x22e.google.com ([2607:f8b0:4864:20::22e]:38761) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lGxSi-0004av-9R for emacs-devel@gnu.org; Tue, 02 Mar 2021 00:20:49 -0500 Original-Received: by mail-oi1-x22e.google.com with SMTP id x62so6522363oix.5 for ; Mon, 01 Mar 2021 21:20:47 -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; bh=KcI76lk2xyUGqUxb2hZL5etGZ6Yi/VADsqGasPOvpE4=; b=aI1d0kM8xLxarLCKxipxG94dwQJMZnQ5RdSbz5NZ2Ed+pMzRHs7Cjdl0VHmCN3Dges NBIr5qO0k9UxAAaI6tvRvQJCqsuvDHpN60QCvWo0R6FApFwr3tDsn2LA8iHMiQy1+pDa A6LmRIZz1eVFr/7U+lq6xdmcVuYrwCLfocp2Hm3aFKS3qvadd0/qnZWrN+80K/v0yZ5U VOYL7SotbxkY7iiOkkBDGgQKfp5K/874UHTWyUNs3gnM5PcSjt8T25ed5t1o9K3bQPD0 HPeyE+RAaHaM/KlnSolvYARlZD8BP9ljrIujVuX83Dk2YUI+YUQ8vPhNbkzH1cmtTf4d LsmQ== 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; bh=KcI76lk2xyUGqUxb2hZL5etGZ6Yi/VADsqGasPOvpE4=; b=lZcQLUTTSwtmfe1LGAKfVhDGUAP01LHAdQEgzpmQCGW3X1mqGiVPhQAnk20rXyXvo5 IIUX/eVYNy2gBiYEpeqBPHHJ3UJWCBMOqLSIrWKm6B9PCxc4JOkXZ5e00dOMhVNn8xc6 XD2obkDXgqM7J65HDwA+5G6eHxEtSkyt6Itktk6r08a6hidwPK/XCJZChO1eCcX/LEJR oiUof/DYp62sMUuOJPq3bHVTmpiOxeyCqc4ij7akGHpbsuoGePH/7XBD9rihPhi8AIcT LI9Fam8cXkzYvQvA3kfmwS7PRV0Pgh1tETd9AXv3haCILyrfxV0cHHsQRPSmaEcQkRWQ 5dFw== X-Gm-Message-State: AOAM530Y8hPa0F8NNsEC0OZZuggJSUN76xQRHSa803t40YEDhIxrv7bD hAg8W8r9jYiM7KGadJuYGvaoozg/s1YEBKI4pVx56+iey50= X-Google-Smtp-Source: ABdhPJy4+QkrOZhG580NvU3yrLM13+kHSDBXoLv3nYrXVvUPQW5r2pkbzdLqbO6NZkc5tKfA5gUdl4hbO8Idsxhp8Qw= X-Received: by 2002:a54:4791:: with SMTP id o17mr2000590oic.30.1614662447022; Mon, 01 Mar 2021 21:20:47 -0800 (PST) In-Reply-To: <20210228230217.1971E20E1B@vcs0.savannah.gnu.org> Received-SPF: pass client-ip=2607:f8b0:4864:20::22e; envelope-from=pipcet@gmail.com; helo=mail-oi1-x22e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, 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.23 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:265802 Archived-At: On Sun, Feb 28, 2021 at 11:02 PM Andrea Corallo wrote: > branch: feature/native-comp > commit 5bc08559e8f171eafc3c034232f8cfd9eaf89862 > Author: Andrea Corallo > Commit: Andrea Corallo > > Don't treat '=' as simple equality emitting constraints (bug#46812) > > Extend assumes allowing the following form > > (assume dst (= src1 src2)) > > to caputure '=' semanting during fwprop handling float integer > conversions. > > * lisp/emacs-lisp/comp.el (comp-equality-fun-p): Don't treat '=' as > simple equality. > (comp-arithm-cmp-fun-p, comp-negate-arithm-cmp-fun) > (comp-reverse-arithm-fun): Rename and add '=' '!='. > (comp-emit-assume, comp-add-cond-cstrs, comp-fwprop-insn): Update > for new function nameing and to handle '='. > * lisp/emacs-lisp/comp-cstr.el (comp-cstr-=): New function. > * test/src/comp-tests.el (comp-tests-type-spec-tests): Add a bunch > of '=' specific tests. > --- > lisp/emacs-lisp/comp-cstr.el | 12 +++++++++++ > lisp/emacs-lisp/comp.el | 37 ++++++++++++++++++++-------------- > test/src/comp-tests.el | 47 ++++++++++++++++++++++++++++++++++++++------ > 3 files changed, 75 insertions(+), 21 deletions(-) > > diff --git a/lisp/emacs-lisp/comp-cstr.el b/lisp/emacs-lisp/comp-cstr.el > index 89815f0..bd1e04f 100644 > --- a/lisp/emacs-lisp/comp-cstr.el > +++ b/lisp/emacs-lisp/comp-cstr.el > @@ -859,6 +859,18 @@ Non memoized version of `comp-cstr-intersection-no-mem'." > (null (neg cstr)) > (equal (typeset cstr) '(cons))))) > > +(defun comp-cstr-= (dst old-dst src) > + "Constraint DST being = SRC." > + (with-comp-cstr-accessors > + (comp-cstr-intersection dst old-dst src) > + (cl-loop for v in (valset dst) > + when (and (floatp v) > + (= v (truncate v))) > + do (push (cons (truncate v) (truncate v)) (range dst))) > + (cl-loop for (l . h) in (range dst) > + when (eql l h) > + do (push (float l) (valset dst))))) I'm not sure what this is supposed to do: first you form the intersection of OLD-DST and SRC [often, empty]. Then you iterate over the values and ranges of the [empty] intersection [leaving it empty]. It's not working either, as far as I can tell: (lambda (x) (and (floatp x) (= x 0) x)) always returns nil when compiled. Pip