From patchwork Thu Jun 16 18:19:30 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Andrew MacLeod X-Patchwork-Id: 1644572 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.a=rsa-sha256 header.s=default header.b=fihH8pXI; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Received: from sourceware.org (ip-8-43-85-97.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4LP9Tc24JZz9sGD for ; Fri, 17 Jun 2022 04:20:52 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 192CE38303F2 for ; Thu, 16 Jun 2022 18:20:49 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 192CE38303F2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1655403649; bh=JRUh28pM0wCQqzqwiYEEnuxNfPTvH4NTdC8FprwDvUY=; h=Date:To:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=fihH8pXI+3TPsB3RaXGBp8JoTwY33grUTNujpxP5sx5cjQSw63qLLZJsqFJ73bzh1 u4jfPJ9UF+9eDkr15IJdogJP+2c9ZwJclPLE1qGVDxQeYFjFqPfFBYDuc0Ip1o0zzg rN7pA6NEzJVdrMk795Qnzm4FffBGn5++n/nYcSdU= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org 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 012CF385694C for ; Thu, 16 Jun 2022 18:19:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 012CF385694C Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-350-2AnPHJzbOCOIPQSp0UDUfQ-1; Thu, 16 Jun 2022 14:19:35 -0400 X-MC-Unique: 2AnPHJzbOCOIPQSp0UDUfQ-1 Received: by mail-qk1-f198.google.com with SMTP id t15-20020a05620a450f00b006a75bf35680so2535430qkp.1 for ; Thu, 16 Jun 2022 11:19:35 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent :content-language:to:cc:from:subject; bh=7Cxrm1EphWYEAOTT8N+FG0HbVLE32Kv/USukrOJow0M=; b=0Ftu8DHmjq4Lnunft/CafdEfld1S6Nm8AB+phqny3MU0SSvnrhIBkGmzwudhYZpXko gRVTeEteVgoi5++C0Aq/q653rHylk+rCTg0XAnvCRjgQLfFYqfqsLSVUSmJwY3AH8kM9 cq61YYx6DaJo8CsDssKmH29DUcpzUwbGBtOVDeVKWk0FzHC9hbpaK8qOJloctNIrEEsf BkVXBNOE/6YR4VF3wBHrNGZz+tybfOKk+DQXPbQzaz3vodOKWlnQEblJNczq4eecnmth DjKOgrWNbiVr+Dnne87wEIxefq3ZJKz3tzz8UgNfgFiHNQoWmiyw86SosDmXzR89V08o klSQ== X-Gm-Message-State: AJIora8Rp8i+xfZaZOvEoimrrdIrSPkUXTPQT8XyVR6iyEwfqyrOe6EX DQ8eoCmuQmQx0c18DfrlMbwXIrbUUtxYTZp4ZpIUuSoT28+zpi2nN41lnv+/67P8lfGbAWkCE7Z ijGWExz1hdLDP9cYNG7f3D7vnusV8npaYcgU6eHVQLT2g8zxfjmYOpXhcAonSQxZTMRlwbQ== X-Received: by 2002:a05:620a:459f:b0:6a6:cde5:4f73 with SMTP id bp31-20020a05620a459f00b006a6cde54f73mr4466284qkb.450.1655403574433; Thu, 16 Jun 2022 11:19:34 -0700 (PDT) X-Google-Smtp-Source: AGRyM1tRR2mAIl/z4vQeAvb0i7jZYDwUqgjC/lh2XigPwwdfnkQhYZpnBsS2ZuKFKlEKVhmH6PuIdA== X-Received: by 2002:a05:620a:459f:b0:6a6:cde5:4f73 with SMTP id bp31-20020a05620a459f00b006a6cde54f73mr4466263qkb.450.1655403574084; Thu, 16 Jun 2022 11:19:34 -0700 (PDT) Received: from ?IPV6:2607:fea8:a261:5e00::b58? ([2607:fea8:a261:5e00::b58]) by smtp.gmail.com with ESMTPSA id y11-20020a05620a44cb00b006a768c699adsm2645738qkp.125.2022.06.16.11.19.30 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 16 Jun 2022 11:19:31 -0700 (PDT) Message-ID: Date: Thu, 16 Jun 2022 14:19:30 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.10.0 To: gcc-patches Subject: [COMMITTED] Clear invariant bit for inferred ranges. X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-CA X-Spam-Status: No, score=-12.9 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_LOW, 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 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-Patchwork-Original-From: Andrew MacLeod via Gcc-patches From: Andrew MacLeod Reply-To: Andrew MacLeod Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org Sender: "Gcc-patches" When checking the results of moving the vrp1 pass to ranger, we triggered a failure where a non-null was not being propagated properly by the ranger inferring code. When an ssa_name never occurs in an outgoing range in any block, it is marked as invariant and its range is not tracked in the cache.  If we register an inferred range such as non-zero on such a name, it needs to be removed from the invariant list so we can begin tracking its range. This patch adds a flag to the set_invariant routine so it can be either set or cleared. When we register an inferred range, we make it no longer invariant. Bootstrapped on x86_64-pc-linux-gnu with no regressions.  Pushed. Andrew From 6c849e2fab3f682b715a81cb4ccc792f20c00eeb Mon Sep 17 00:00:00 2001 From: Andrew MacLeod Date: Thu, 16 Jun 2022 12:44:33 -0400 Subject: [PATCH 2/2] Clear invariant bit for inferred ranges. The range of an invariant SSA (no outgoing edge range anywhere) is not tracked. If an inferred range is registered, remove the invariant flag. * gimple-range-cache.cc (ranger_cache::apply_inferred_ranges): If name was invaraint before, clear the invariant bit. * gimple-range-gori.cc (gori_map::set_range_invariant): Add a flag. * gimple-range-gori.h (gori_map::set_range_invariant): Adjust prototype. --- gcc/gimple-range-cache.cc | 7 ++++++- gcc/gimple-range-gori.cc | 10 +++++++--- gcc/gimple-range-gori.h | 2 +- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/gcc/gimple-range-cache.cc b/gcc/gimple-range-cache.cc index f3494363a10..5df744184c4 100644 --- a/gcc/gimple-range-cache.cc +++ b/gcc/gimple-range-cache.cc @@ -1474,7 +1474,12 @@ ranger_cache::apply_inferred_ranges (gimple *s) if (!m_on_entry.get_bb_range (r, name, bb)) exit_range (r, name, bb, RFD_READ_ONLY); if (r.intersect (infer.range (x))) - m_on_entry.set_bb_range (name, bb, r); + { + m_on_entry.set_bb_range (name, bb, r); + // If this range was invariant before, remove invariance. + if (!m_gori.has_edge_range_p (name)) + m_gori.set_range_invariant (name, false); + } } } } diff --git a/gcc/gimple-range-gori.cc b/gcc/gimple-range-gori.cc index 0a3e54eae4e..a43e44c841e 100644 --- a/gcc/gimple-range-gori.cc +++ b/gcc/gimple-range-gori.cc @@ -499,12 +499,16 @@ gori_map::is_export_p (tree name, basic_block bb) return bitmap_bit_p (exports (bb), SSA_NAME_VERSION (name)); } -// Clear the m_maybe_variant bit so ranges will not be tracked for NAME. +// Set or clear the m_maybe_variant bit to determine if ranges will be tracked +// for NAME. A clear bit means they will NOT be tracked. void -gori_map::set_range_invariant (tree name) +gori_map::set_range_invariant (tree name, bool invariant) { - bitmap_clear_bit (m_maybe_variant, SSA_NAME_VERSION (name)); + if (invariant) + bitmap_clear_bit (m_maybe_variant, SSA_NAME_VERSION (name)); + else + bitmap_set_bit (m_maybe_variant, SSA_NAME_VERSION (name)); } // Return true if NAME is an import to block BB. diff --git a/gcc/gimple-range-gori.h b/gcc/gimple-range-gori.h index f5f691fe424..3d57ab94624 100644 --- a/gcc/gimple-range-gori.h +++ b/gcc/gimple-range-gori.h @@ -94,7 +94,7 @@ public: bool is_import_p (tree name, basic_block bb); bitmap exports (basic_block bb); bitmap imports (basic_block bb); - void set_range_invariant (tree name); + void set_range_invariant (tree name, bool invariant = true); void dump (FILE *f); void dump (FILE *f, basic_block bb, bool verbose = true); -- 2.17.2