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 387543858404 for ; Mon, 18 Oct 2021 09:49:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 387543858404 Received: by mail-ed1-x52c.google.com with SMTP id d9so68395994edh.5 for ; Mon, 18 Oct 2021 02:49:52 -0700 (PDT) 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; bh=JWEk7vswxstC2Cm8EDcLfUgsZCs4OIMhB1KLtcc4dxg=; b=ZR7CtGDQ4G488YGwkOjExO2Z1lrYARXU0a68d9+BCaFwOeuWqpXb+1uNbPqQ2+jFR+ sReAGEhe1dFGV3LLoUJfVMuqWIUDS7eMTGc5kFU3914ooV/0TcUcA7tc76dSzR8bsCvw 35cjF5J73iFmrPvY7BJfex++0ssSbSiWgWLQi1G0PiU9Esl0eQX8CyTNdovkYHcC428B NJQvOSfBTO6ZMlenHs+TGn9EsScCOkFM2H27X7FWbobSDGqVAhP6BL/eL6t4iMTw+RJj +/qccUZxG4k/Dcu3dyleTXTK/SJeX1HhFVdvApUN2kGmAncolBXIWI1J9waRoQD4LZNs tJHQ== X-Gm-Message-State: AOAM532Ky4QmIAp66/y3d+1KHVYfYUmJT/pXE7Zm8INsruThnmUok80a peoLH7sUxk4vUjs323HrysWLBJNrm+lwejiDvmI= X-Google-Smtp-Source: ABdhPJzWa1jt7bvOod/xXhpi34kX/LOWTsbGagCC+nzwDT+tHJj2N9x2JLJ33mkNyCRcjeCy5/hwcHR9ZeTf3BrFs0g= X-Received: by 2002:a17:906:b311:: with SMTP id n17mr27367826ejz.571.1634550590872; Mon, 18 Oct 2021 02:49:50 -0700 (PDT) MIME-Version: 1.0 References: <65efdb72-260a-e5a3-5b28-f536f86bd5e6@redhat.com> In-Reply-To: <65efdb72-260a-e5a3-5b28-f536f86bd5e6@redhat.com> From: Richard Biener Date: Mon, 18 Oct 2021 11:49:39 +0200 Message-ID: Subject: Re: [PATCH] Ranger : Do not process abnormal ssa-names. To: Andrew MacLeod Cc: gcc-patches , Aldy Hernandez , Jakub Jelinek Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-2.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, 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: Mon, 18 Oct 2021 09:49:53 -0000 On Fri, Oct 15, 2021 at 3:50 PM Andrew MacLeod wrote: > > I've been looking at the pathological time issue ranger has with the > testcase from, uuuuuh.. PR 97623 I think. I've lost the details, but > kept the file since it was showing unpleasant behaviour. > > Most of the time is spent in callbacks from substitute_and_fold to > value_on_edge() dealing with PHI results and arguments. Turns out, its > virtually all wasted time dealing with SSA_NAMES with the > OCCURS_IN_ABNORMAL_PHI flag set.. > > This patch tells ranger not to consider any SSA_NAMEs which occur in > abnormal PHIs. This reduces the memory footprint of all the caches, and > also has a ripple effect with the new threader code which uses the GORI > exports and imports tables, making it faster as well as no ssa-name with > the abnormal flag set will be entered into the tables. > > That alone was not quite enough, as all the sheer volume of call backs > still took time, so I added checks in the value_of_* class of routines > used by substitute_and_fold to indicate there is no constant value > available for any SSA_NAME with that flag set. > > On my x86_64 box, before this change, that test case looked like: > > tree VRP : 7.76 ( 4%) 0.23 ( 5%) 8.02 > ( 4%) 537k ( 0%) > tree VRP threader : 7.20 ( 4%) 0.08 ( 2%) 7.28 ( > 4%) 392k ( 0%) > tree Early VRP : 39.22 ( 22%) 0.07 ( 2%) 39.44 ( > 22%) 1142k ( 0%) > > And with this patch , the results are: > > tree VRP : 7.57 ( 6%) 0.26 ( 5%) 7.85 > ( 6%) 537k ( 0%) > tree VRP threader : 0.62 ( 0%) 0.02 ( 0%) 0.65 > ( 0%) 392k ( 0%) > tree Early VRP : 4.00 ( 3%) 0.01 ( 0%) 4.03 > ( 3%) 1142k ( 0%) > > Which is a significant improvement, both for EVRP and the threader.. > > The patch adjusts the ranger folder, as well as the hybrid folder. > > bootstrapped on x86_64-pc-linux-gnu with no regressions and no missed > cases that I have been able to find. > > I don't want to push it quite yet as I wanted feedback to make sure we > don't actually do anything I'm not aware of with SSA_NAMES which have > the ABNORMAL_PHI flag set. Most of the code i can find in VRP and > vr-values appears to punt, so I presume not even considering those names > is fine? > > This also seems like something that might be worth back-porting, > especially the hybrid pass parts... Returning NULL in gimple_range_ssa_p is probably not a good idea. The name does carry a range it just has to be considered VARYING. The issue with abnormal edges is that they do not have a jump associated with them and thus we cannot insert code on the edge because we cannot split it. That has implications for coalescing since we cannot even insert copies there so the PHI argument and the PHI result have to be the same register for the arguments on abnormal edges. Otherwise they do carry a value and a range but forcing that to be VARYING makes sense to avoid propagating constants to where it is not allowed (though the substitution phase should be the one checking). Richard. > Andrew > >