From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x52c.google.com (mail-ed1-x52c.google.com [IPv6:2a00:1450:4864:20::52c]) by sourceware.org (Postfix) with ESMTPS id 5F8703858401 for ; Wed, 1 Dec 2021 14:34:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 5F8703858401 Received: by mail-ed1-x52c.google.com with SMTP id z5so37473243edd.3 for ; Wed, 01 Dec 2021 06:34:31 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=QL28Zjj9mYasUtVXKeGMwXJL+bF/km/Nk0azXUknL6o=; b=CAzcQuNiTnBzGep0DNWbZI41g+4J3vYY8Ei7+Eik/2aXm/lqiv3mD2+VJS8k7eOd5+ WTSniybCWcLJk6YVVGoMGvqU+kVAK4+TphDnmVwqLggAQ0h4kWrmYGQM/D7GxCfiTzid XxpR5CMTI+3xQA41s36jFg9ZjL40krF0Ht+/755hyfM1izHJFYNy6BelRk0YMsW3NBUr KS3qQsLG+CZnqZOhBfdSFTVuss7AiA3frHI8VyzsOu1NEJFoIArDwbDMaijsZoqlpEd1 RnxSYUfm8TS1Za0TaM4Xj7ut1ZBy5FEP4wRv9ZK9YaA9DOTOQrMnywwJJoORdNX/vQEG FR0w== X-Gm-Message-State: AOAM53363xXaj+xEuHWJ9ZiwkaMGpC82jaXwGYeoV0nntzZbtQAlZHrm xu0ySh4zPHHNQbnCrQUiApggmC6u78kI4/kBq8M= X-Google-Smtp-Source: ABdhPJzU0htmiUCcjzyarzFftZh2WD35Lccowje6zlpCdcAJXbCUoMPNNvDnv/VrOWpULBKFjhEAW74bmJcKGkgLCIs= X-Received: by 2002:a17:907:6d28:: with SMTP id sa40mr7523631ejc.201.1638369270255; Wed, 01 Dec 2021 06:34:30 -0800 (PST) MIME-Version: 1.0 References: <0db1d9e8-f097-e766-a9fa-1a98c47b8115@suse.cz> <3a07ef98-d05f-dc07-2e36-a2b4ffd52936@suse.cz> <7bcc368c-3f26-4503-aec1-a3d6378e33ec@suse.cz> <561a3ffd-8973-d771-418f-76c484085cc5@suse.cz> <20265d97-6350-c234-695d-bc18e2e617b4@suse.cz> <1169b649-e3e2-36c9-f964-0b0ecd2530fa@suse.cz> In-Reply-To: <1169b649-e3e2-36c9-f964-0b0ecd2530fa@suse.cz> From: Richard Biener Date: Wed, 1 Dec 2021 15:34:19 +0100 Message-ID: Subject: Re: [PATCH] Loop unswitching: support gswitch statements. To: =?UTF-8?Q?Martin_Li=C5=A1ka?= Cc: GCC Patches Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-2.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 01 Dec 2021 14:34:33 -0000 On Wed, Dec 1, 2021 at 3:25 PM Martin Li=C5=A1ka wrote: > > On 12/1/21 15:19, Richard Biener wrote: > > which is compute the range of 'lhs' on edge_true into predicate->true_r= ange, > > assign that same range to ->false_range and then invert it to get the > > range on the false_edge. What I am saying is that for better precision > > you should do > > > > ranger->range_on_edge (predicate->false_range, edge_false, lhs); > > > > rather than prematurely optimize this to the inversion of the true rang= e > > since yes, ranger is CFG sensitive and only the_last_ predicate on a > > long CFG path is actually inverted. > > > > What am I missing? > > I might be misunderstood, but I think it's the problem defined here: > https://gcc.gnu.org/pipermail/gcc-patches/2021-November/584605.html > > where I used the ranger->range_on_edge on the false_edge. Ah, OK. But then even the true_edge range is possibly wrong, no? Consider for (;;) { if (a < 100) if (a > 50) // unswitch on this /* .. */ if (a < 120) /* ... */ } then you record [51, 99] for true_range of the a > 50 predicate and thus simplification will simplify the if (a < 120) check, no? You can only record the range from the (CFG independent) a > 50 check, thus [51, +INF] but of course at simplification time you can also use the CFG context at each simplification location. Richard. > Martin