From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 70067 invoked by alias); 28 Jun 2017 07:56:44 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 69942 invoked by uid 89); 28 Jun 2017 07:56:43 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.2 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_SPAM autolearn=ham version=3.3.2 spammy= X-HELO: mail-wm0-f50.google.com Received: from mail-wm0-f50.google.com (HELO mail-wm0-f50.google.com) (74.125.82.50) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 28 Jun 2017 07:56:40 +0000 Received: by mail-wm0-f50.google.com with SMTP id i127so49556608wma.0 for ; Wed, 28 Jun 2017 00:56:40 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language; bh=bqezNYlTQxerWDt+GWPW+mHCj/iNosmSfiTVerMoM5k=; b=nt2UjiKFoNFqHTOrYPTJuFgkp03xoJ1xSniIX9WYSh2VZJnhmX+7sGwGf3egs9ov+C ac0vf4EfaJJ97XaukfBFPjmVbPMmwXt2QaY/jBuNBDoQ3sd/86aBeqUCQojY/zdQSrEU ZqhX+eHEwXU6PXfZyn0PiCJjVFrmHShDOdUeBTfvzxVI5btg423ElnIkNdRALxCM6wF9 UUTVmtYhu+fHEpsVO7DnP7ynSzmVBlOWTkPf+1/PNDY478XGEj8ulojcg0cXcZ4fcRA+ l/eqoZKAuOrK60HcR0kxgOlDuEydfN5k92EADadJBmhyPxz2DumMSy3OmDpbvRpBaNXx HEzA== X-Gm-Message-State: AKS2vOwgXh1xvRfAHZCBY3lphzCLjWRfiCXYWm1wIYMfGNfwF/UsGBI9 Rb9JMV7yss68jIn/guSVVg== X-Received: by 10.28.4.131 with SMTP id 125mr1167024wme.69.1498636598432; Wed, 28 Jun 2017 00:56:38 -0700 (PDT) Received: from abulafia.quesejoda.com (218.red-83-60-15.dynamicip.rima-tde.net. [83.60.15.218]) by smtp.gmail.com with ESMTPSA id 92sm2232195wrb.55.2017.06.28.00.56.37 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 28 Jun 2017 00:56:37 -0700 (PDT) Subject: Re: Avoid generating useless range info To: Jakub Jelinek Cc: Richard Biener , Andrew MacLeod , gcc-patches References: <85de74ae-9680-1461-a289-42c915b5285a@redhat.com> <20170627103822.GS2123@tucnak> From: Aldy Hernandez Message-ID: <0c48f7c0-6fff-c8f3-5680-e4a0fc3203bf@redhat.com> Date: Wed, 28 Jun 2017 07:56:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.0 MIME-Version: 1.0 In-Reply-To: <20170627103822.GS2123@tucnak> Content-Type: multipart/mixed; boundary="------------3FF55F54F7FF6CD6399EDDFB" X-SW-Source: 2017-06/txt/msg02125.txt.bz2 This is a multi-part message in MIME format. --------------3FF55F54F7FF6CD6399EDDFB Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-length: 2357 On 06/27/2017 06:38 AM, Jakub Jelinek wrote: > On Tue, Jun 27, 2017 at 06:26:46AM -0400, Aldy Hernandez wrote: >> How about this? > > @@ -360,6 +363,22 @@ set_range_info (tree name, enum value_range_type range_type, > } > } > > +/* Store range information RANGE_TYPE, MIN, and MAX to tree ssa_name > + NAME while making sure we don't store useless range info. */ > + > +void > +set_range_info (tree name, enum value_range_type range_type, > + const wide_int_ref &min, const wide_int_ref &max) > +{ > + /* A range of the entire domain is really no range at all. */ > + tree type = TREE_TYPE (name); > + if (min == wi::min_value (TYPE_PRECISION (type), TYPE_SIGN (type)) > + && max == wi::max_value (TYPE_PRECISION (type), TYPE_SIGN (type))) > + return; > + > + set_range_info_raw (name, range_type, min, max); > +} > + > > Won't this misbehave if we have a narrower range on some SSA_NAME and > call set_range_info to make it VARYING? > In that case (i.e. SSA_NAME_RANGE_INFO (name) != NULL), we should either > set_range_info_raw too (if nonzero_bits is not all ones) or clear > SSA_NAME_RANGE_INFO (otherwise). Good point. Fixed. > > /* Gets range information MIN, MAX and returns enum value_range_type > corresponding to tree ssa_name NAME. enum value_range_type returned > @@ -419,9 +438,13 @@ set_nonzero_bits (tree name, const wide_int_ref &mask) > { > gcc_assert (!POINTER_TYPE_P (TREE_TYPE (name))); > if (SSA_NAME_RANGE_INFO (name) == NULL) > - set_range_info (name, VR_RANGE, > - TYPE_MIN_VALUE (TREE_TYPE (name)), > - TYPE_MAX_VALUE (TREE_TYPE (name))); > + { > + if (mask == -1) > + return; > + set_range_info_raw (name, VR_RANGE, > + TYPE_MIN_VALUE (TREE_TYPE (name)), > + TYPE_MAX_VALUE (TREE_TYPE (name))); > + } > range_info_def *ri = SSA_NAME_RANGE_INFO (name); > ri->set_nonzero_bits (mask); > > Similarly, if SSA_NAME_RANGE_INFO is previously non-NULL, but min/max > are VARYING and the new mask is -1, shouldn't we free it rather than > set it to the default? Here, if SSA_NAME_RANGE_INFO is previously non-NULL then we proceed as always-- just set the nonzero bits to whatever was specified (without clearning SSA_NAME_RANGE_INFO). A mask of -1 and an SSA_NAME_RANGE_INFO of non-NULL can coexist just fine. How about this? Aldy --------------3FF55F54F7FF6CD6399EDDFB Content-Type: text/plain; charset=UTF-8; name="curr" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="curr" Content-length: 5169 Z2NjLwoKCSogdHJlZS1zc2FuYW1lcy5jIChzZXRfcmFuZ2VfaW5mb19yYXcp OiBBYnN0cmFjdCBmcm9tIC4uLgoJKHNldF9yYW5nZV9pbmZvKTogLi4uaGVy ZS4gIE9ubHkgY2FsbCBzZXRfcmFuZ2VfaW5mb19yYXcgaWYgZG9tYWluCglp cyB1c2VmdWwuCgkoc2V0X25vbnplcm9fYml0cyk6IENhbGwgc2V0X3Jhbmdl X2luZm9fcmF3LgoJKiB0cmVlLXNzYW5hbWVzLmggKHNldF9yYW5nZV9pbmZv X3Jhdyk6IE5ldy4KCmdjYy90ZXN0c3VpdGUvCgoJKiBnY2MuZGcvV2FsbG9j YS0xNC5jOiBBZGFwdCB0ZXN0IHRvIHJlY29nbml6ZSBuZXcgY29tcGxhaW50 IG9mCgl1bmJvdW5kZWQgdXNlLgoKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL1dhbGxvY2EtMTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRn L1dhbGxvY2EtMTQuYwppbmRleCA3MjNkYmU1Li5mM2UzZjU3IDEwMDY0NAot LS0gYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9XYWxsb2NhLTE0LmMKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvV2FsbG9jYS0xNC5jCkBAIC05LDUgKzks NiBAQCBnIChpbnQgKnApCiAgIGV4dGVybiB2b2lkIGYgKHZvaWQgKik7CiAK ICAgdm9pZCAqcSA9IF9fYnVpbHRpbl9hbGxvY2EgKHApOyAvKiB7IGRnLXdh cm5pbmcgInBhc3NpbmcgYXJndW1lbnQgMSIgfSAqLworICAvKiB7IGRnLXdh cm5pbmcgInVuYm91bmRlZCB1c2Ugb2YgJ2FsbG9jYSciICJ1bmJvdW5kZWQi IHsgdGFyZ2V0ICotKi0qIH0gMTEgfSAqLwogICBmIChxKTsKIH0KZGlmZiAt LWdpdCBhL2djYy90cmVlLXNzYW5hbWVzLmMgYi9nY2MvdHJlZS1zc2FuYW1l cy5jCmluZGV4IDM1M2M3YjEuLjAwNTNiMDEgMTAwNjQ0Ci0tLSBhL2djYy90 cmVlLXNzYW5hbWVzLmMKKysrIGIvZ2NjL3RyZWUtc3NhbmFtZXMuYwpAQCAt MzIwLDExICszMjAsMTQgQEAgbWFrZV9zc2FfbmFtZV9mbiAoc3RydWN0IGZ1 bmN0aW9uICpmbiwgdHJlZSB2YXIsIGdpbXBsZSAqc3RtdCwKICAgcmV0dXJu IHQ7CiB9CiAKLS8qIFN0b3JlIHJhbmdlIGluZm9ybWF0aW9uIFJBTkdFX1RZ UEUsIE1JTiwgYW5kIE1BWCB0byB0cmVlIHNzYV9uYW1lIE5BTUUuICAqLwor LyogSGVscGVyIGZ1bmN0aW9uIGZvciBzZXRfcmFuZ2VfaW5mby4KKworICAg U3RvcmUgcmFuZ2UgaW5mb3JtYXRpb24gUkFOR0VfVFlQRSwgTUlOLCBhbmQg TUFYIHRvIHRyZWUgc3NhX25hbWUKKyAgIE5BTUUuICAqLwogCiB2b2lkCi1z ZXRfcmFuZ2VfaW5mbyAodHJlZSBuYW1lLCBlbnVtIHZhbHVlX3JhbmdlX3R5 cGUgcmFuZ2VfdHlwZSwKLQkJY29uc3Qgd2lkZV9pbnRfcmVmICZtaW4sIGNv bnN0IHdpZGVfaW50X3JlZiAmbWF4KQorc2V0X3JhbmdlX2luZm9fcmF3ICh0 cmVlIG5hbWUsIGVudW0gdmFsdWVfcmFuZ2VfdHlwZSByYW5nZV90eXBlLAor CQkgICAgY29uc3Qgd2lkZV9pbnRfcmVmICZtaW4sIGNvbnN0IHdpZGVfaW50 X3JlZiAmbWF4KQogewogICBnY2NfYXNzZXJ0ICghUE9JTlRFUl9UWVBFX1Ag KFRSRUVfVFlQRSAobmFtZSkpKTsKICAgZ2NjX2Fzc2VydCAocmFuZ2VfdHlw ZSA9PSBWUl9SQU5HRSB8fCByYW5nZV90eXBlID09IFZSX0FOVElfUkFOR0Up OwpAQCAtMzYwLDYgKzM2MywzNCBAQCBzZXRfcmFuZ2VfaW5mbyAodHJlZSBu YW1lLCBlbnVtIHZhbHVlX3JhbmdlX3R5cGUgcmFuZ2VfdHlwZSwKICAgICB9 CiB9CiAKKy8qIFN0b3JlIHJhbmdlIGluZm9ybWF0aW9uIFJBTkdFX1RZUEUs IE1JTiwgYW5kIE1BWCB0byB0cmVlIHNzYV9uYW1lCisgICBOQU1FIHdoaWxl IG1ha2luZyBzdXJlIHdlIGRvbid0IHN0b3JlIHVzZWxlc3MgcmFuZ2UgaW5m by4gICovCisKK3ZvaWQKK3NldF9yYW5nZV9pbmZvICh0cmVlIG5hbWUsIGVu dW0gdmFsdWVfcmFuZ2VfdHlwZSByYW5nZV90eXBlLAorCQljb25zdCB3aWRl X2ludF9yZWYgJm1pbiwgY29uc3Qgd2lkZV9pbnRfcmVmICZtYXgpCit7Cisg IGdjY19hc3NlcnQgKCFQT0lOVEVSX1RZUEVfUCAoVFJFRV9UWVBFIChuYW1l KSkpOworCisgIC8qIEEgcmFuZ2Ugb2YgdGhlIGVudGlyZSBkb21haW4gaXMg cmVhbGx5IG5vIHJhbmdlIGF0IGFsbC4gICovCisgIHRyZWUgdHlwZSA9IFRS RUVfVFlQRSAobmFtZSk7CisgIGlmIChtaW4gPT0gd2k6Om1pbl92YWx1ZSAo VFlQRV9QUkVDSVNJT04gKHR5cGUpLCBUWVBFX1NJR04gKHR5cGUpKQorICAg ICAgJiYgbWF4ID09IHdpOjptYXhfdmFsdWUgKFRZUEVfUFJFQ0lTSU9OICh0 eXBlKSwgVFlQRV9TSUdOICh0eXBlKSkpCisgICAgeworICAgICAgcmFuZ2Vf aW5mb19kZWYgKnJpID0gU1NBX05BTUVfUkFOR0VfSU5GTyAobmFtZSk7Cisg ICAgICBpZiAocmkgPT0gTlVMTCkKKwlyZXR1cm47CisgICAgICBpZiAocmkt PmdldF9ub256ZXJvX2JpdHMgKCkgPT0gLTEpCisJeworCSAgZ2djX2ZyZWUg KHJpKTsKKwkgIFNTQV9OQU1FX1JBTkdFX0lORk8gKG5hbWUpID0gTlVMTDsK KwkgIHJldHVybjsKKwl9CisgICAgfQorCisgIHNldF9yYW5nZV9pbmZvX3Jh dyAobmFtZSwgcmFuZ2VfdHlwZSwgbWluLCBtYXgpOworfQorCiAKIC8qIEdl dHMgcmFuZ2UgaW5mb3JtYXRpb24gTUlOLCBNQVggYW5kIHJldHVybnMgZW51 bSB2YWx1ZV9yYW5nZV90eXBlCiAgICBjb3JyZXNwb25kaW5nIHRvIHRyZWUg c3NhX25hbWUgTkFNRS4gIGVudW0gdmFsdWVfcmFuZ2VfdHlwZSByZXR1cm5l ZApAQCAtNDE5LDkgKzQ1MCwxMyBAQCBzZXRfbm9uemVyb19iaXRzICh0cmVl IG5hbWUsIGNvbnN0IHdpZGVfaW50X3JlZiAmbWFzaykKIHsKICAgZ2NjX2Fz c2VydCAoIVBPSU5URVJfVFlQRV9QIChUUkVFX1RZUEUgKG5hbWUpKSk7CiAg IGlmIChTU0FfTkFNRV9SQU5HRV9JTkZPIChuYW1lKSA9PSBOVUxMKQotICAg IHNldF9yYW5nZV9pbmZvIChuYW1lLCBWUl9SQU5HRSwKLQkJICAgIFRZUEVf TUlOX1ZBTFVFIChUUkVFX1RZUEUgKG5hbWUpKSwKLQkJICAgIFRZUEVfTUFY X1ZBTFVFIChUUkVFX1RZUEUgKG5hbWUpKSk7CisgICAgeworICAgICAgaWYg KG1hc2sgPT0gLTEpCisJcmV0dXJuOworICAgICAgc2V0X3JhbmdlX2luZm9f cmF3IChuYW1lLCBWUl9SQU5HRSwKKwkJCSAgVFlQRV9NSU5fVkFMVUUgKFRS RUVfVFlQRSAobmFtZSkpLAorCQkJICBUWVBFX01BWF9WQUxVRSAoVFJFRV9U WVBFIChuYW1lKSkpOworICAgIH0KICAgcmFuZ2VfaW5mb19kZWYgKnJpID0g U1NBX05BTUVfUkFOR0VfSU5GTyAobmFtZSk7CiAgIHJpLT5zZXRfbm9uemVy b19iaXRzIChtYXNrKTsKIH0KZGlmZiAtLWdpdCBhL2djYy90cmVlLXNzYW5h bWVzLmggYi9nY2MvdHJlZS1zc2FuYW1lcy5oCmluZGV4IDlhMTgzOTQuLmY3 ZTAzMmYgMTAwNjQ0Ci0tLSBhL2djYy90cmVlLXNzYW5hbWVzLmgKKysrIGIv Z2NjL3RyZWUtc3NhbmFtZXMuaApAQCAtNjksNiArNjksOSBAQCBzdHJ1Y3Qg R1RZICgodmFyaWFibGVfc2l6ZSkpIHJhbmdlX2luZm9fZGVmIHsKIC8qIFNl dHMgdGhlIHZhbHVlIHJhbmdlIHRvIFNTQS4gICovCiBleHRlcm4gdm9pZCBz ZXRfcmFuZ2VfaW5mbyAodHJlZSwgZW51bSB2YWx1ZV9yYW5nZV90eXBlLCBj b25zdCB3aWRlX2ludF9yZWYgJiwKIAkJCSAgICBjb25zdCB3aWRlX2ludF9y ZWYgJik7CitleHRlcm4gdm9pZCBzZXRfcmFuZ2VfaW5mb19yYXcgKHRyZWUs IGVudW0gdmFsdWVfcmFuZ2VfdHlwZSwKKwkJCQljb25zdCB3aWRlX2ludF9y ZWYgJiwKKwkJCQljb25zdCB3aWRlX2ludF9yZWYgJik7CiAvKiBHZXRzIHRo ZSB2YWx1ZSByYW5nZSBmcm9tIFNTQS4gICovCiBleHRlcm4gZW51bSB2YWx1 ZV9yYW5nZV90eXBlIGdldF9yYW5nZV9pbmZvIChjb25zdF90cmVlLCB3aWRl X2ludCAqLAogCQkJCQkgICAgIHdpZGVfaW50ICopOwo= --------------3FF55F54F7FF6CD6399EDDFB--