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.133.124]) by sourceware.org (Postfix) with ESMTPS id 1601E3857348 for ; Mon, 31 Jul 2023 16:06:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1601E3857348 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=1690819610; 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=+adQaPtmcnFxhgAPyx+e7udQodgUFDDx1wENrS6VwkI=; b=Cf2UJxwAjrmeo3wX0Q5S0uS3pdu6vhdWQT2ViCg62F6+loRwM6X2DFhjHs90mQixvEhH23 9VABDt+Bm/Z3cOPOOhtTwcKeQK39oRrrwcWtdrkM+dtKNA5m+OJsxjoopyoVVcUDeGhZzV o+cfrnJTgVkopTidmqDloYNv0a+1T30= Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-516-d2Up3pmzM8eFGtj-ioMCNQ-1; Mon, 31 Jul 2023 12:06:47 -0400 X-MC-Unique: d2Up3pmzM8eFGtj-ioMCNQ-1 Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-409ac3c83bbso21986471cf.2 for ; Mon, 31 Jul 2023 09:06:46 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690819604; x=1691424404; 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=navyMDb/XAsRR58QWyHbdxXuEVh88ww5hgB7xZsd3LE=; b=VsYUk7HeVHIfJ8BRYS8zi1cBZRUbkRPyAl6KfIEaq9g/MLWaD/riX3WGL6Wknf8i4p dgXo9FqZ3aEdNdfQMH9xyC3Q1icMB4hq4QyErteaJGaQQJhUYSRJB4pbRwOkQjD2VoIE ffWXvdK2gwvDBbrS8rDXxCs/l6fKNJfztjAuYRBUC8LFnTQATzKtvWjivVVHA7gcuFWu fJOCXG4JLbpkUCCpBur4tnnWweS16sStCZxG7ooPxnqYaWHaeVxcBGaiECv2wgR0YkDo D4kF0hVkKSSQpqqZOmTkRHjTDhGziYzxfckDXWq8x8wWSy0ck12LXSE+Ei++HcTvsQ7X G0+w== X-Gm-Message-State: ABy/qLZWTzLybrPJvgS3rnpzZxnMlMENcbScVdyDgY8cN+4TcTUEP0k0 M447hhEtwd0BvmKuQ2FQWHQJ0yhpJxbRvKNblEjUnOfNLzmLvx7lIbHr8pTZEEQbUHG/gisefRP kKEQJg7dI5l0dBiJzAQ0fnEX05+oLwBR/ZBI2q/N0VRzD0Uybdg5cpZwzySfcwZXv+OarvniGv8 64xg== X-Received: by 2002:ac8:5a4a:0:b0:406:9532:55ab with SMTP id o10-20020ac85a4a000000b00406953255abmr11958188qta.42.1690819604031; Mon, 31 Jul 2023 09:06:44 -0700 (PDT) X-Google-Smtp-Source: APBJJlEGOKwwd9klGSmI4nNwrpmtSvAKZk+ISTZayl1qsKiIugOnf9JPq4HlwkviuhJpY4cQ4Bpx8g== X-Received: by 2002:ac8:5a4a:0:b0:406:9532:55ab with SMTP id o10-20020ac85a4a000000b00406953255abmr11958157qta.42.1690819603546; Mon, 31 Jul 2023 09:06:43 -0700 (PDT) Received: from [192.168.0.174] ([104.219.124.192]) by smtp.gmail.com with ESMTPSA id 11-20020ac8560b000000b00406949706afsm3594240qtr.18.2023.07.31.09.06.42 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 31 Jul 2023 09:06:42 -0700 (PDT) Message-ID: <73a27325-37f9-255e-4902-4adf41f5f4a6@redhat.com> Date: Mon, 31 Jul 2023 12:06:40 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 To: gcc-patches Cc: "hernandez, aldy" From: Andrew MacLeod Subject: [COMMITTED] PR tree-optimization/110582 - fur_list should not use the range vector for non-ssa, operands. X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="------------l0bf4Ih8AsbuMfcT5S1uLlT6" Content-Language: en-US X-Spam-Status: No, score=-12.1 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_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE 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. --------------l0bf4Ih8AsbuMfcT5S1uLlT6 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit The fold_using_range operand fetching mechanism has a variety of modes.  The "normal" mechanism simply invokes the current or supplied range_query to satisfy fetching current range info for any ssa-names used during the evalaution of the statement, I also added support for fur_list which allows a list of ranges to be supplied which is used to satisfy ssa-names as they appear in the stmt.  Once the list is exhausted, then it reverts to using the range query. This allows us to fold a stmt using whatever values we want. ie, a_2 = b_3 + c_4 i can call fold_stmt (r, stmt, [1,2],  [4,5]) and a_2 would be calculated using [1,2] for the first ssa_name, and [4,5] for the second encountered name.  This allows us to manually fold stmts when we desire. There was a bug in the implementation of fur_list where it was using the supplied values for *any* encountered operand, not just ssa_names. The PHI analyzer is the first consumer of the fur_list API, and was tripping over this.     [local count: 1052266993]:   # a_lsm.12_29 = PHI   iftmp.1_15 = 3 / a_lsm.12_29;   [local count: 1063004408]:   # iftmp.1_11 = PHI   # ivtmp_2 = PHI   ivtmp_36 = ivtmp_2 - 1;   if (ivtmp_36 != 0)     goto ; [98.99%]   else     goto ; [1.01%] It detemined that the initial value of iftmp.1_11 was [2, 2] (from the edge 2->4), and that the only modifying statement is iftmp.1_15 = 3 / a_lsm.12_29; One of the things it tries to do is determine is if a few iterations feeding the initial value and combining it with the result of the statement converge, thus providing a complete initial range.  Its uses fold_range supplying the value for the ssa-operand directly..  but tripped over the bug. So for the first iteration, instead of calculating   _15 = 3 / [2,2]  and coming up with [1,1],   it was instead calculating [2,2]/VARYING, and coming up with [-2, 2].  Next pass of the iteration checker then erroneously calculated [-2,2]/VARYING and the result was [-2,2] and convergence was achieved, and the initial value of the PHI set to[-2, 2] ... incorrectly.  and of course bad things happened. This patch fixes fur_list::get_operand to check for an ssa-name before it pulling a value from the supplied list.  With this, no partlculary good starting value for the PHI node can be determined. Andrew --------------l0bf4Ih8AsbuMfcT5S1uLlT6 Content-Type: text/x-patch; charset=UTF-8; name="582.patch" Content-Disposition: attachment; filename="582.patch" Content-Transfer-Encoding: base64 RnJvbSA5MTRmYTM1YTdmN2RiNzYyMTFjYTI1OTYwNjU3ODE5Mzc3M2EyNTRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgTWFjTGVvZCA8YW1hY2xlb2RAcmVkaGF0LmNvbT4K RGF0ZTogTW9uLCAzMSBKdWwgMjAyMyAxMDowODo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIGZ1 cl9saXN0IHNob3VsZCBub3QgdXNlIHRoZSByYW5nZSB2ZWN0b3IgZm9yIG5vbi1zc2EKIG9wZXJh bmRzLgoKCWdjYy8KCVBSIHRyZWUtb3B0aW1pemF0aW9uLzExMDU4MgoJKiBnaW1wbGUtcmFuZ2Ut Zm9sZC5jYyAoZnVyX2xpc3Q6OmdldF9vcGVyYW5kKTogRG8gbm90IHVzZSB0aGUKCXJhbmdlIHZl Y3RvciBmb3Igbm9uLXNzYSBuYW1lcy4KCglnY2MvdGVzdHN1aXRlLwoJKiBnY2MuZGcvcHIxMTA1 ODIuYzogTmV3LgotLS0KIGdjYy9naW1wbGUtcmFuZ2UtZm9sZC5jYyAgICAgICAgfCAgMyArKy0K IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByMTEwNTgyLmMgfCAxOCArKysrKysrKysrKysrKysrKysK IDIgZmlsZXMgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRl IG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByMTEwNTgyLmMKCmRpZmYgLS1naXQg YS9nY2MvZ2ltcGxlLXJhbmdlLWZvbGQuY2MgYi9nY2MvZ2ltcGxlLXJhbmdlLWZvbGQuY2MKaW5k ZXggZDA3MjQ2MDA4ZjAuLmFiMmQ5OTZjNGViIDEwMDY0NAotLS0gYS9nY2MvZ2ltcGxlLXJhbmdl LWZvbGQuY2MKKysrIGIvZ2NjL2dpbXBsZS1yYW5nZS1mb2xkLmNjCkBAIC0yNjIsNyArMjYyLDgg QEAgZnVyX2xpc3Q6OmZ1cl9saXN0ICh1bnNpZ25lZCBudW0sIHZyYW5nZSAqKmxpc3QsIHJhbmdl X3F1ZXJ5ICpxKQogYm9vbAogZnVyX2xpc3Q6OmdldF9vcGVyYW5kICh2cmFuZ2UgJnIsIHRyZWUg ZXhwcikKIHsKLSAgaWYgKG1faW5kZXggPj0gbV9saW1pdCkKKyAgLy8gRG8gbm90IHVzZSB0aGUg dmVjdG9yIGZvciBub24tc3NhLW5hbWVzLCBvciBpZiBpdCBoYXMgYmVlbiBlbXB0aWVkLgorICBp ZiAoVFJFRV9DT0RFIChleHByKSAhPSBTU0FfTkFNRSB8fCBtX2luZGV4ID49IG1fbGltaXQpCiAg ICAgcmV0dXJuIG1fcXVlcnktPnJhbmdlX29mX2V4cHIgKHIsIGV4cHIpOwogICByID0gKm1fbGlz dFttX2luZGV4KytdOwogICBnY2NfY2hlY2tpbmdfYXNzZXJ0IChyYW5nZV9jb21wYXRpYmxlX3Ag KFRSRUVfVFlQRSAoZXhwciksIHIudHlwZSAoKSkpOwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvcHIxMTA1ODIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByMTEwNTgyLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmFlMDY1MGQzYWU3Ci0tLSAvZGV2 L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIxMTA1ODIuYwpAQCAtMCwwICsxLDE4 IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTzIgLWZkdW1w LXRyZWUtdnJwMiIgfSAqLworCitpbnQgYSwgYjsKK2ludCBtYWluKCkgeworICBjaGFyIGMgPSBh ID0gMDsKKyAgZm9yICg7IGMgIT0gLTM7IGMrKykgeworICAgIGludCBkID0gMjsKKyAgICBkIF49 IDIgJiYgYTsKKyAgICBiID0gYSA9PSAwID8gZCA6IGQgLyBhOworICAgIGEgPSBiOworICB9Cisg IGZvciAoOyAoMSArIDk1IDw8IDI0KSArIGIgKyAxICsgNjg2NjU4NzE0TCArIGIgLSAyMjk3Mjcx NDU3OykKKyAgICA7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC1ub3QgIkZv bGRpbmcgcHJlZGljYXRlIiAidnJwMiIgfSB9ICovCisKLS0gCjIuNDAuMQoK --------------l0bf4Ih8AsbuMfcT5S1uLlT6--