From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id 7741F3858D3C for ; Wed, 2 Nov 2022 13:35:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 7741F3858D3C Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667396149; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=e4i60RvOhXgsKx/V3Ew/0Gib1Tg3esfg4edVpEUBRGI=; b=DB97lt/5qqqxPKcKBsPYZ3R72VIG509sUsZBKs9biQNZKnYeF5viXD/IJQN1s7TxrVoHI0 wO1XnRryCPtJreQWgODombcbIaOl18NS9Gm2cANvb+8tE9csK9ACXvtxMx/4TNw41vQKYy ZUNTQULH59WxCSiY7lCY1+1RWG9jdUY= Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-75-mcsABA5WMGWlN62C-_8Vww-1; Wed, 02 Nov 2022 09:35:47 -0400 X-MC-Unique: mcsABA5WMGWlN62C-_8Vww-1 Received: by mail-wr1-f69.google.com with SMTP id d23-20020adfa417000000b002364a31b7c9so4847602wra.15 for ; Wed, 02 Nov 2022 06:35:47 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:from:cc:references:to:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=hCFuphPt5qCtU/KhuXv4rZv3AFSPhnIE4eRE1QoapCA=; b=nAnoGEfHLEshKs76UZFwAAetR//Y5hhVtW/F5eUCbO1oX/HcMwzqIQ5NB1pKWh77rF kh+RjquJEMH6LFBaQoceJJt8R1InkgqIgiEHQgcPESS+/rTiflYeuq7I7eqey7joGqyJ lxbjrMezIPPP0HEUl+/vVokPqdM/+eXY/ISr4hteoalNttJR+LQ37P1KOWjHWc+zP5Zh /PExnivrXq2QYPOkLmBoxj4lCWaVAfZ4eereWhTVrnkaZUWsCaSfKiBiQZZyFoBgXqg/ Kk7ijbKNvKV59JkXtLySVLAm5EpmpHVImf9LB7evCnQdNjWxHm2sDa07TVv5bh6pBvfn cw0g== X-Gm-Message-State: ACrzQf2x+Om3xdWrsJaDfx7vvt7YAJbJFJbXYjs0oh797F9q/jPD94B8 lSfLdKb0GNZNFyJI+sXoFRc+QfljtwfgWxbnIyrkUihfQm+7MntO9Cb6Ef3GsP3ZYwfKCUnjT7G vLdYVGSHjXB7bbHZhzQ== X-Received: by 2002:a05:6000:16c8:b0:236:c60d:22b9 with SMTP id h8-20020a05600016c800b00236c60d22b9mr11524834wrf.526.1667396146509; Wed, 02 Nov 2022 06:35:46 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4Wz9qdm56+9nOOUYl7f3D0nLgndDK+C0STVumVXklBF4lWNFaW+K1zfTVF6bz8FcQFiabAgA== X-Received: by 2002:a05:6000:16c8:b0:236:c60d:22b9 with SMTP id h8-20020a05600016c800b00236c60d22b9mr11524818wrf.526.1667396146213; Wed, 02 Nov 2022 06:35:46 -0700 (PDT) Received: from [192.168.1.2] ([139.47.33.22]) by smtp.gmail.com with ESMTPSA id ci8-20020a5d5d88000000b0023662245d3csm12978637wrb.95.2022.11.02.06.35.44 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 02 Nov 2022 06:35:45 -0700 (PDT) Message-ID: <08ea88c3-df7a-acdd-1a75-b43d81225712@redhat.com> Date: Wed, 2 Nov 2022 14:35:41 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.0 Subject: Re: [PATCH] Rewrite NAN and sign handling in frange To: Mikael Morin , gcc-patches@gcc.gnu.org References: <20220915054026.1359564-1-aldyh@redhat.com> <46a9380d-2cd5-7bfb-ecc7-a33a8369338b@orange.fr> Cc: Andrew MacLeod From: Aldy Hernandez In-Reply-To: <46a9380d-2cd5-7bfb-ecc7-a33a8369338b@orange.fr> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="------------LOXqvITzz0K0bV1tdqE8Ztca" Content-Language: en-US X-Spam-Status: No, score=-11.2 required=5.0 tests=BAYES_00,BODY_8BITS,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------LOXqvITzz0K0bV1tdqE8Ztca Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 9/27/22 15:00, Mikael Morin wrote: > Hello, > > Le 16/09/2022 à 15:26, Aldy Hernandez via Gcc-patches a écrit : >> diff --git a/gcc/value-range.cc b/gcc/value-range.cc >> index d759fcf178c..55a216efd8b 100644 >> --- a/gcc/value-range.cc >> +++ b/gcc/value-range.cc >> @@ -617,21 +602,24 @@ frange::contains_p (tree cst) const >>    if (varying_p ()) >>      return true; >> >  (...) >> >>    if (real_compare (GE_EXPR, rv, &m_min) && real_compare (LE_EXPR, >> rv, &m_max)) >>      { >> +      // Make sure the signs are equal for signed zeros. >>        if (HONOR_SIGNED_ZEROS (m_type) && real_iszero (rv)) >> -    { >> -      // FIXME: This is still using get_signbit() instead of >> -      // known_signbit() because the latter bails on possible NANs >> -      // (for now). >> -      if (get_signbit ().yes_p ()) >> -        return real_isneg (rv); >> -      else if (get_signbit ().no_p ()) >> -        return !real_isneg (rv); >> -      else >> -        return true; >> -    } >> +    return m_min.sign == m_max.sign && m_min.sign == rv->sign; >>        return true; >>      } >>    return false; > > It seems that this won't report any range with mismatching bound signs > as containing zero. > Maybe a selftest explains it better: the following fails. My apologies for only seeing this now. You did not CC me in the response, and it got lost amongst my other list mail. You are absolutely right. The attached patch fixes this problem. It has been tested on x86-64 Linux and pushed. Thanks for pointing this out. Aldy > > diff --git a/gcc/value-range.cc b/gcc/value-range.cc > index 9ca442478c9..8fc909171bc 100644 > --- a/gcc/value-range.cc > +++ b/gcc/value-range.cc > @@ -3780,6 +3780,14 @@ range_tests_signed_zeros () >    ASSERT_TRUE (r0.contains_p (neg_zero)); >    ASSERT_FALSE (r0.contains_p (zero)); > > +  r0 = frange_float ("-3", "5"); > +  ASSERT_TRUE (r0.contains_p (neg_zero)); > +  ASSERT_TRUE (r0.contains_p (zero)); > + > +  r0 = frange (neg_zero, zero); > +  ASSERT_TRUE (r0.contains_p (neg_zero)); > +  ASSERT_TRUE (r0.contains_p (zero)); > + >    // The intersection of zeros that differ in sign is a NAN (or >    // undefined if not honoring NANs). >    r0 = frange (neg_zero, neg_zero); > --------------LOXqvITzz0K0bV1tdqE8Ztca Content-Type: text/x-patch; charset=UTF-8; name="0001-Fix-bug-in-frange-contains_p-for-signed-zeros.patch" Content-Disposition: attachment; filename="0001-Fix-bug-in-frange-contains_p-for-signed-zeros.patch" Content-Transfer-Encoding: base64 RnJvbSBkYTJkMTI4YTg3YjJmMzM1OWY2ZjM4ZjI5NjI0Mzg3MDk0ODc1YTYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGR5IEhlcm5hbmRleiA8YWxkeWhAcmVkaGF0LmNvbT4KRGF0 ZTogV2VkLCAyIE5vdiAyMDIyIDEyOjM5OjQ1ICswMTAwClN1YmplY3Q6IFtQQVRDSF0gRml4IGJ1 ZyBpbiBmcmFuZ2U6OmNvbnRhaW5zX3AoKSBmb3Igc2lnbmVkIHplcm9zLgoKVGhlIGNvbnRhaW5z X3AoKSBjb2RlIHdhc24ndCByZXR1cm5pbmcgdHJ1ZSBmb3Igbm9uLXNpbmdsZXRvbiByYW5nZXMK Y29udGFpbmluZyBzaWduZWQgemVyb3MuICBXaXRoIHRoaXMgcGF0Y2ggd2Ugbm93IGhhbmRsZToK CgktMC4wIGV4aXN0cyBpbiBbLTMsICs1LjBdCgkrMC4wIGV4aXN0cyBpbiBbLTMsICs1LjBdCgpn Y2MvQ2hhbmdlTG9nOgoKCSogdmFsdWUtcmFuZ2UuY2MgKGZyYW5nZTo6Y29udGFpbnNfcCk6IEZp eCBzaWduZWQgemVybyBoYW5kbGluZy4KCShyYW5nZV90ZXN0c19zaWduZWRfemVyb3MpOiBOZXcg dGVzdC4KLS0tCiBnY2MvdmFsdWUtcmFuZ2UuY2MgfCAxMCArKysrKysrKystCiAxIGZpbGUgY2hh bmdlZCwgOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvZ2NjL3Zh bHVlLXJhbmdlLmNjIGIvZ2NjL3ZhbHVlLXJhbmdlLmNjCmluZGV4IDM3NDNlYzcxNGIzLi5hODU1 YWFmNjI2YyAxMDA2NDQKLS0tIGEvZ2NjL3ZhbHVlLXJhbmdlLmNjCisrKyBiL2djYy92YWx1ZS1y YW5nZS5jYwpAQCAtNjYxLDcgKzY2MSw3IEBAIGZyYW5nZTo6Y29udGFpbnNfcCAodHJlZSBjc3Qp IGNvbnN0CiAgICAgewogICAgICAgLy8gTWFrZSBzdXJlIHRoZSBzaWducyBhcmUgZXF1YWwgZm9y IHNpZ25lZCB6ZXJvcy4KICAgICAgIGlmIChIT05PUl9TSUdORURfWkVST1MgKG1fdHlwZSkgJiYg cmVhbF9pc3plcm8gKHJ2KSkKLQlyZXR1cm4gbV9taW4uc2lnbiA9PSBtX21heC5zaWduICYmIG1f bWluLnNpZ24gPT0gcnYtPnNpZ247CisJcmV0dXJuIHJ2LT5zaWduID09IG1fbWluLnNpZ24gfHwg cnYtPnNpZ24gPT0gbV9tYXguc2lnbjsKICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgcmV0 dXJuIGZhbHNlOwpAQCAtMzg1OSw2ICszODU5LDE0IEBAIHJhbmdlX3Rlc3RzX3NpZ25lZF96ZXJv cyAoKQogICBBU1NFUlRfVFJVRSAocjAuY29udGFpbnNfcCAobmVnX3plcm8pKTsKICAgQVNTRVJU X0ZBTFNFIChyMC5jb250YWluc19wICh6ZXJvKSk7CiAKKyAgcjAgPSBmcmFuZ2UgKG5lZ196ZXJv LCB6ZXJvKTsKKyAgQVNTRVJUX1RSVUUgKHIwLmNvbnRhaW5zX3AgKG5lZ196ZXJvKSk7CisgIEFT U0VSVF9UUlVFIChyMC5jb250YWluc19wICh6ZXJvKSk7CisKKyAgcjAgPSBmcmFuZ2VfZmxvYXQg KCItMyIsICI1Iik7CisgIEFTU0VSVF9UUlVFIChyMC5jb250YWluc19wIChuZWdfemVybykpOwor ICBBU1NFUlRfVFJVRSAocjAuY29udGFpbnNfcCAoemVybykpOworCiAgIC8vIFRoZSBpbnRlcnNl Y3Rpb24gb2YgemVyb3MgdGhhdCBkaWZmZXIgaW4gc2lnbiBpcyBhIE5BTiAob3IKICAgLy8gdW5k ZWZpbmVkIGlmIG5vdCBob25vcmluZyBOQU5zKS4KICAgcjAgPSBmcmFuZ2UgKG5lZ196ZXJvLCBu ZWdfemVybyk7Ci0tIAoyLjM4LjEKCg== --------------LOXqvITzz0K0bV1tdqE8Ztca--