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 84EC23858D35 for ; Thu, 3 Nov 2022 16:49:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 84EC23858D35 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=1667494176; 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; bh=shUPcZ4HPnNoY1boPV9tApUusA+1WoFNC0bTQQo0/4I=; b=Mdr9rE1z801pDe0nUG/ptK0Yh9Zm9XARSEpHED09QtS3o4ExAAVNWhdsLB/Xv4SXxV/oyE JxUtLNKFY1OIT1YqRH70IGnfibEKLqiS0RU6AXzOkQ/LJasVb58qTHA/5H7584QYCdUMnH T0HfWlQyPSRnRWsJhjBzH4SAa3/mw+w= Received: from mail-io1-f72.google.com (mail-io1-f72.google.com [209.85.166.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-255-FTl9A9jwPWS2IspLvaWf0Q-1; Thu, 03 Nov 2022 12:49:34 -0400 X-MC-Unique: FTl9A9jwPWS2IspLvaWf0Q-1 Received: by mail-io1-f72.google.com with SMTP id g13-20020a056602072d00b006c60d59110fso1384389iox.12 for ; Thu, 03 Nov 2022 09:49:34 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=subject:from:cc:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=N2G4JUtK3PFXxhp8xdwhfJ4t8jFJAGEgu/VqpryG9GI=; b=6sYl4ok2odFn1kOvTOcs7BfsUCgU8NKfZTCndWvgUHB2XD215ZyoQ4+bA5mwWiaGum Kec42p+fDRROk5GUs5HIJG+Xvv5f4hqlJM2EVdgUKBl7dCMvfSURxaL5fN8Qh1hrI6cy Ac/G3D6msLzMgF1d6AY0ubKR84UKDQ5GKr614HZPthn677p37FHQ4loELCXdJPFbys68 PiOZX7BgLEowTgoytRCETuwJe7mb3/HmFeKTP+AYj3KCiu1GKhP/QkkAqTbT953VONDp s7UHxEFRvAgc4wCW162ZCr23vSlIE5mbaSue8U43s/OduAL62nfgY/U6RaCUTHsLWQS7 kANQ== X-Gm-Message-State: ACrzQf0fwoEAyQvqxsv6RxptclKgk+IVyICxHwR2kll4EdEMOIbs2mRd XkX/C16Dn74ZxOdvI/yQWtFTnbtBVTtpKadilRIu0vXS34/+6wOEvtCaOzItDIsVX+XI91BmpLe hABpE/ABBXNTNtTTL2EZlldOs5lW5xJd2jdci4RYOO/2k1TRRhJARWoc3qudOKBK5/NHXfA== X-Received: by 2002:a05:6638:3015:b0:341:de68:602c with SMTP id r21-20020a056638301500b00341de68602cmr19909942jak.10.1667494173368; Thu, 03 Nov 2022 09:49:33 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7GP8r41iSeD0DZZjYC/8IuAEIhyoXKBDA6hC5aFukBptfA3cVN8lS7u94jZF0fazCiNXpPog== X-Received: by 2002:a05:6638:3015:b0:341:de68:602c with SMTP id r21-20020a056638301500b00341de68602cmr19909928jak.10.1667494173064; Thu, 03 Nov 2022 09:49:33 -0700 (PDT) Received: from ?IPV6:2607:fea8:a263:f600::72c3? ([2607:fea8:a263:f600::72c3]) by smtp.gmail.com with ESMTPSA id x33-20020a0294a4000000b00346a98b0a76sm359899jah.77.2022.11.03.09.49.31 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 03 Nov 2022 09:49:32 -0700 (PDT) Message-ID: <6b89d319-89ce-ec7b-f346-6e05ceac493d@redhat.com> Date: Thu, 3 Nov 2022 12:49:31 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.1 To: gcc-patches Cc: "hernandez, aldy" From: Andrew MacLeod Subject: [COMMITTED] Update range query cache when a statement is updated. X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="------------IHEaoNtDeXUPuZMn82VKKvcs" Content-Language: en-US X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,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. --------------IHEaoNtDeXUPuZMn82VKKvcs Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Whenever the IL changes under ranger, its possible the resulting range calculation could be different. Once cached, we don't really recalculate ranges unless we can detect an input range has caused the result to go stale. Simplification and folding can both change the IL in such a way that the result can be refined, but it is not obvious to ranger. Ive been looking at a case from glibc (I finally produced a reduced testcase which I included) where the original IL is  __message_length_90 = __builtin_strlen (iftmp.39_117); for which which we calculate a range:   [irange] size_t [0, 9223372036854775805] NONZERO 0x7fffffffffffffff Then in vrp1, simplification at the last second changes the IL to:  __message_length_90 = 52; but range has no way to know this has happened, and continues with the original range.  This eventually feeds _39 = __builtin_constant_p (__message_length_90); and if we are not aware of the new range, we fold this builtin the wrong way.  Then a function with no linkage that should have been removed remains in the object, and glibc builds break. doh. I've been looking at various alternatives, none of which I liked much.  I tried a final re-evaluation every time we looked at a stmt for the last time in VRP, but that was a 20% penalty. yuck. What I finally settled on is simple and effective for all passes.  ssa has an update_stmt() call which is invoked to ensure all the ssa-operands are updated properly when the IL changes.  I added an update_stmt call to the generic range_query (which does nothing), then overload it in ranger to force a recalculation of the statement, and update the global value only if it changes as a result. THis solves the problem elegantly, and will be applicable no matter where and how the IL changes.  The overhead of adding the call to update_stmt is very minute..  0.01% overall, and the VRP pass itself only slows down by 0.3%. And this should allow glibc to build again. Bootstrapped on x86_64-pc-linux-gnu with no regressions.  Pushed. Andrew --------------IHEaoNtDeXUPuZMn82VKKvcs Content-Type: text/x-patch; charset=UTF-8; name="0001-Update-range-query-cache-when-a-statement-is-updated.patch" Content-Disposition: attachment; filename*0="0001-Update-range-query-cache-when-a-statement-is-updated.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA2ZmQ0ODVkMTVjMWEyYzQyN2MzOWJjZDQ1ZTAzYmVkOGNkZTY4OWU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgTWFjTGVvZCA8YW1hY2xlb2RAcmVkaGF0LmNvbT4K RGF0ZTogV2VkLCAyIE5vdiAyMDIyIDIxOjM3OjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRDSF0gVXBk YXRlIHJhbmdlIHF1ZXJ5IGNhY2hlIHdoZW4gYSBzdGF0ZW1lbnQgaXMgdXBkYXRlZC4KCkFkZCBh biB1cGRhdGVfc3RtdCBpbnRlcmZhY2UgdG8gcmFuZ2UgcXVlcnksIGFuZCBob29rIGludG8gaXQg d2l0aCB0aGUKc3NhIHN0YXRlbWVudCB1cGRhdGUgY2FsbC4KCglnY2MvCgkqIGdpbXBsZS1yYW5n ZS5jYyAoZ2ltcGxlX3Jhbmdlcjo6dXBkYXRlX3N0bXQpOiBOZXcuCgkqIGdpbXBsZS1yYW5nZS5o IChnaW1wbGVfcmFuZ2VyOjp1cGRhdGVfc3RtdCk6IE5ldyBwcm90b3R5cGUuCgkqIHRyZWUtc3Nh LW9wZXJhbmRzLmNjICh1cGRhdGVfc3RtdF9vcGVyYW5kcyk6IE5vdGlmeSByYW5nZQoJcXVlcnkg dGhhdCBzdG10IGhhcyBjaGFuZ2VkLgoJKiB2YWx1ZS1xdWVyeS5oIChyYW5nZV9xdWVyeTo6dXBk YXRlX3N0bXQpOiBOZXcuCgoJZ2NjL3Rlc3RzdWl0ZS8KCSogZ2NjLmRnL3RyZWUtc3NhL3ZycC11 cGRhdGUuYzogTmV3LgotLS0KIGdjYy9naW1wbGUtcmFuZ2UuY2MgICAgICAgICAgICAgICAgICAg ICAgICB8IDM0ICsrKysrKysrKysrKysrKysrKysrKysKIGdjYy9naW1wbGUtcmFuZ2UuaCAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAxICsKIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3Nh L3ZycC11cGRhdGUuYyB8IDIxICsrKysrKysrKysrKysKIGdjYy90cmVlLXNzYS1vcGVyYW5kcy5j YyAgICAgICAgICAgICAgICAgICB8ICAzICsrCiBnY2MvdmFsdWUtcXVlcnkuaCAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgMyArKwogNSBmaWxlcyBjaGFuZ2VkLCA2MiBpbnNlcnRpb25zKCsp CiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvdnJwLXVw ZGF0ZS5jCgpkaWZmIC0tZ2l0IGEvZ2NjL2dpbXBsZS1yYW5nZS5jYyBiL2djYy9naW1wbGUtcmFu Z2UuY2MKaW5kZXggMTEwY2Y1NzQ0NTQuLjgwNjM4NjkxOGJkIDEwMDY0NAotLS0gYS9nY2MvZ2lt cGxlLXJhbmdlLmNjCisrKyBiL2djYy9naW1wbGUtcmFuZ2UuY2MKQEAgLTQ4Miw2ICs0ODIsNDAg QEAgZ2ltcGxlX3Jhbmdlcjo6cmVnaXN0ZXJfaW5mZXJyZWRfcmFuZ2VzIChnaW1wbGUgKnMpCiAg IG1fY2FjaGUuYXBwbHlfaW5mZXJyZWRfcmFuZ2VzIChzKTsKIH0KIAorLy8gV2hlbiBhIHN0YXRl bWVudCBTIGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSByZXN1bHQgd2FzIGNhY2hlZCwgcmUtZXZhbHVh dGUKKy8vIGFuZCB1cGRhdGUgdGhlIGdsb2JhbCBjYWNoZS4KKwordm9pZAorZ2ltcGxlX3Jhbmdl cjo6dXBkYXRlX3N0bXQgKGdpbXBsZSAqcykKK3sKKyAgdHJlZSBsaHMgPSBnaW1wbGVfZ2V0X2xo cyAocyk7CisgIGlmICghbGhzIHx8ICFnaW1wbGVfcmFuZ2Vfc3NhX3AgKGxocykpCisgICAgcmV0 dXJuOworICBWYWx1ZV9SYW5nZSByIChUUkVFX1RZUEUgKGxocykpOworICAvLyBPbmx5IHVwZGF0 ZSBpZiBpdCBhbHJlYWR5IGhhZCBhIHZhbHVlLgorICBpZiAobV9jYWNoZS5nZXRfZ2xvYmFsX3Jh bmdlIChyLCBsaHMpKQorICAgIHsKKyAgICAgIC8vIFJlLWNhbGN1bGF0ZSBhIG5ldyB2YWx1ZSB1 c2luZyBqdXN0IGNhY2hlIHZhbHVlcy4KKyAgICAgIFZhbHVlX1JhbmdlIHRtcCAoVFJFRV9UWVBF IChsaHMpKTsKKyAgICAgIGZvbGRfdXNpbmdfcmFuZ2UgZjsKKyAgICAgIGZ1cl9kZXBlbmQgc3Jj IChzLCAmKGdvcmkgKCkpLCAmbV9jYWNoZSk7CisgICAgICBmLmZvbGRfc3RtdCAodG1wLCBzLCBz cmMsIGxocyk7CisKKyAgICAgIC8vIENvbWJpbmUgdGhlIG5ldyB2YWx1ZSB3aXRoIHRoZSBvbGQg dmFsdWUgdG8gY2hlY2sgZm9yIGEgY2hhbmdlLgorICAgICAgaWYgKHIuaW50ZXJzZWN0ICh0bXAp KQorCXsKKwkgIGlmIChkdW1wX2ZpbGUgJiYgKGR1bXBfZmxhZ3MgJiBUREZfREVUQUlMUykpCisJ ICAgIHsKKwkgICAgICBwcmludF9nZW5lcmljX2V4cHIgKGR1bXBfZmlsZSwgbGhzLCBUREZfU0xJ TSk7CisJICAgICAgZnByaW50ZiAoZHVtcF9maWxlLCAiIDogZ2xvYmFsIHZhbHVlIHJlLWV2YWx1 YXRlZCB0byAiKTsKKwkgICAgICByLmR1bXAgKGR1bXBfZmlsZSk7CisJICAgICAgZnB1dGMgKCdc bicsIGR1bXBfZmlsZSk7CisJICAgIH0KKwkgIG1fY2FjaGUuc2V0X2dsb2JhbF9yYW5nZSAobGhz LCByKTsKKwl9CisgICAgfQorfQorCiAvLyBUaGlzIHJvdXRpbmUgd2lsbCBleHBvcnQgd2hhdGV2 ZXIgZ2xvYmFsIHJhbmdlcyBhcmUga25vd24gdG8gR0NDCiAvLyBTU0FfUkFOR0VfTkFNRV9JTkZP IGFuZCBTU0FfTkFNRV9QVFJfSU5GTyBmaWVsZHMuCiAKZGlmZiAtLWdpdCBhL2djYy9naW1wbGUt cmFuZ2UuaCBiL2djYy9naW1wbGUtcmFuZ2UuaAppbmRleCA0ODAwYmZiZjg5MC4uMjJlMDVmNjQ1 ZjggMTAwNjQ0Ci0tLSBhL2djYy9naW1wbGUtcmFuZ2UuaAorKysgYi9nY2MvZ2ltcGxlLXJhbmdl LmgKQEAgLTUxLDYgKzUxLDcgQEAgcHVibGljOgogICB2aXJ0dWFsIGJvb2wgcmFuZ2Vfb2Zfc3Rt dCAodnJhbmdlICZyLCBnaW1wbGUgKiwgdHJlZSBuYW1lID0gTlVMTCkgb3ZlcnJpZGU7CiAgIHZp cnR1YWwgYm9vbCByYW5nZV9vZl9leHByICh2cmFuZ2UgJnIsIHRyZWUgbmFtZSwgZ2ltcGxlICog PSBOVUxMKSBvdmVycmlkZTsKICAgdmlydHVhbCBib29sIHJhbmdlX29uX2VkZ2UgKHZyYW5nZSAm ciwgZWRnZSBlLCB0cmVlIG5hbWUpIG92ZXJyaWRlOworICB2aXJ0dWFsIHZvaWQgdXBkYXRlX3N0 bXQgKGdpbXBsZSAqKSBvdmVycmlkZTsKICAgdm9pZCByYW5nZV9vbl9lbnRyeSAodnJhbmdlICZy LCBiYXNpY19ibG9jayBiYiwgdHJlZSBuYW1lKTsKICAgdm9pZCByYW5nZV9vbl9leGl0ICh2cmFu Z2UgJnIsIGJhc2ljX2Jsb2NrIGJiLCB0cmVlIG5hbWUpOwogICB2b2lkIGV4cG9ydF9nbG9iYWxf cmFuZ2VzICgpOwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvdnJw LXVwZGF0ZS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvdnJwLXVwZGF0ZS5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45ZTVkYTg4OTBjNAotLS0gL2Rl di9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL3ZycC11cGRhdGUuYwpA QCAtMCwwICsxLDIxIEBACisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZmR1bXAtdHJlZS12cnAxICIg fSAqLworCisvKiBUZXN0cyB0aGF0IGNhbGxzIHRvIHVwZGF0ZV9zdG10IGJ5IHRoZSBmb2xkZXIg d2lsbCBhbHNvIHVwZGF0ZSByYW5nZXIncworICAgY2FjaGUgdmFsdWUgYW5kIHByb2R1Y2UgdGhl IGNvcnJlY3QgcmVzdWx0IGZvciB0aGUgYnVpbHRpbl9jb25zdGFudF9wCisgICBmdW5jdGlvbi4g ICovCisKK3ZvaWQgZGVhZCAoKTsKKwordm9pZCBmb28oIHZvaWQgKl90aHJkZXNjciwgaW50IF9y ZXN1bHQpCit7CisgIGNvbnN0IGNoYXIgKmxvc3NhZ2UgPSBfcmVzdWx0ID8gImNvbnN0YW50IHN0 cmluZyIgOiAwOworCisgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChsb3NzYWdlICE9ICgodm9pZCAq KTApICwgMCkpCisgICAgeworICAgIHVuc2lnbmVkIF9fbWVzc2FnZV9sZW5ndGggPSBfX2J1aWx0 aW5fc3RybGVuIChsb3NzYWdlKTsKKyAgICBpZiAoISBfX2J1aWx0aW5fY29uc3RhbnRfcCAoX19t ZXNzYWdlX2xlbmd0aCkpCisgICAgICBkZWFkICgpOworICAgIH0KK30KKworLyogeyBkZy1maW5h bCB7IHNjYW4tdHJlZS1kdW1wLW5vdCAiZGVhZCIgInZycDEiIH0gfSAqLwpkaWZmIC0tZ2l0IGEv Z2NjL3RyZWUtc3NhLW9wZXJhbmRzLmNjIGIvZ2NjL3RyZWUtc3NhLW9wZXJhbmRzLmNjCmluZGV4 IDQ5MTU2MjJlMTYzLi45ZTg1OTk4Yjc1ZSAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUtc3NhLW9wZXJh bmRzLmNjCisrKyBiL2djYy90cmVlLXNzYS1vcGVyYW5kcy5jYwpAQCAtMzAsNiArMzAsNyBAQCBh bG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQogI2luY2x1 ZGUgInN0bXQuaCIKICNpbmNsdWRlICJwcmludC10cmVlLmgiCiAjaW5jbHVkZSAiZHVtcGZpbGUu aCIKKyNpbmNsdWRlICJ2YWx1ZS1xdWVyeS5oIgogCiAKIC8qIFRoaXMgZmlsZSBjb250YWlucyB0 aGUgY29kZSByZXF1aXJlZCB0byBtYW5hZ2UgdGhlIG9wZXJhbmRzIGNhY2hlIG9mIHRoZQpAQCAt MTE0Niw2ICsxMTQ3LDggQEAgdXBkYXRlX3N0bXRfb3BlcmFuZHMgKHN0cnVjdCBmdW5jdGlvbiAq Zm4sIGdpbXBsZSAqc3RtdCkKICAgZ2NjX2Fzc2VydCAoZ2ltcGxlX21vZGlmaWVkX3AgKHN0bXQp KTsKICAgb3BlcmFuZHNfc2Nhbm5lciAoZm4sIHN0bXQpLmJ1aWxkX3NzYV9vcGVyYW5kcyAoKTsK ICAgZ2ltcGxlX3NldF9tb2RpZmllZCAoc3RtdCwgZmFsc2UpOworICAvLyBJbmZvcm0gdGhlIGFj dGl2ZSByYW5nZSBxdWVyeSBhbiB1cGRhdGUgaGFzIGhhcHBlbmVkLgorICBnZXRfcmFuZ2VfcXVl cnkgKGZuKS0+dXBkYXRlX3N0bXQgKHN0bXQpOwogCiAgIHRpbWV2YXJfcG9wIChUVl9UUkVFX09Q Uyk7CiB9CmRpZmYgLS1naXQgYS9nY2MvdmFsdWUtcXVlcnkuaCBiL2djYy92YWx1ZS1xdWVyeS5o CmluZGV4IGZjNjM4ZWI3NmIxLi5iOGU2ZmVkZmIyOCAxMDA2NDQKLS0tIGEvZ2NjL3ZhbHVlLXF1 ZXJ5LmgKKysrIGIvZ2NjL3ZhbHVlLXF1ZXJ5LmgKQEAgLTkzLDYgKzkzLDkgQEAgcHVibGljOgog ICB2aXJ0dWFsIGJvb2wgcmFuZ2Vfb25fZWRnZSAodnJhbmdlICZyLCBlZGdlLCB0cmVlIGV4cHIp OwogICB2aXJ0dWFsIGJvb2wgcmFuZ2Vfb2Zfc3RtdCAodnJhbmdlICZyLCBnaW1wbGUgKiwgdHJl ZSBuYW1lID0gTlVMTCk7CiAKKyAgLy8gV2hlbiB0aGUgSUwgaW4gYSBzdG10IGlzIGNoYW5nZWQs IGNhbGwgdGhpcyBmb3IgYmV0dGVyIHJlc3VsdHMuCisgIHZpcnR1YWwgdm9pZCB1cGRhdGVfc3Rt dCAoZ2ltcGxlICopIHsgfQorCiAgIC8vIFF1ZXJ5IGlmIHRoZXJlIGlzIGFueSByZWxhdGlvbiBi ZXR3ZWVuIFNTQTEgYW5kIFNTQTIuCiAgIHJlbGF0aW9uX2tpbmQgcXVlcnlfcmVsYXRpb24gKGdp bXBsZSAqcywgdHJlZSBzc2ExLCB0cmVlIHNzYTIsCiAJCQkJYm9vbCBnZXRfcmFuZ2UgPSB0cnVl KTsKLS0gCjIuMzcuMwoK --------------IHEaoNtDeXUPuZMn82VKKvcs--