From patchwork Tue Oct 3 14:31:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Andrew MacLeod X-Patchwork-Id: 147910 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2a8e:b0:403:3b70:6f57 with SMTP id in14csp2127634vqb; Tue, 3 Oct 2023 07:32:28 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEpL3AudNntgN0lF9wPQKPM7AA2ZYwnionydKKQljs1OV/hGP+FrbxlVBVitHK2msVpnFhe X-Received: by 2002:a50:ee8f:0:b0:52f:b00a:99be with SMTP id f15-20020a50ee8f000000b0052fb00a99bemr14250414edr.33.1696343548159; Tue, 03 Oct 2023 07:32:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696343548; cv=none; d=google.com; s=arc-20160816; b=mYyK+50nsQR1iyJH/XbQRlUUamFybOMvrZCPtYjdKv88Qd1E0e6kG+S1TaqZ04YCz0 /VeKwKHgjoQE85OUeE4epjSEOXU3Jhovo/zvxTQycwnSXi0ad4EHn/IzmYKPNbDxgEqg ZnOoXbZtKnJ1TwXsO6ybYNDZcPIKMJlo98NtVSEVGKz1FPcIMkRJgPYdDcQoa0LMoilW Wp4NaG2t0vBwvFkelqzz4wL7+xBeExI0MChy3B48INVI+7WBSfFOwIuNXcvJWebtOapN CJJ0TceCkaP3PRmoE+wxkhNflAmAmdcsrQp1ZNxnLVwnr9GPO46U9Jng8lIg8AxYTA2b /J7A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-language:subject:from :to:user-agent:mime-version:date:message-id:dkim-signature :dmarc-filter:delivered-to; bh=iUV9i0rlXGb8cPduN4it2J8RT5qhnHqR7gjeF92chMA=; fh=8G0fvw9kezX2+yjwifXgHvTII1omy92vRpR1R+rFCOA=; b=EmUSR6OWHuRnJYm0Z6eNneAs35fVZtTXAhkv/7Hvuv0JdgQswlLDVbRTP/t28nU094 oIetHslFb8VWDUKsXFJmttBVkSKpHn+dYyZIQkdKZ86dg3ZE0sx94F3zGxxJOg+EXeqw hPglRHa3ghTmuRnkPiwgNyBG/mZ8cT7WMNYh4Md6o/aQbI2799fOXh8icvsoXboZEYPB il3UL8v42ymQ6mgtniH2zXwL2n9PiwdtRgVYKYa9ZyxNgL3K83o+OZwRE6v8R+PPYp8E wkD8XN2z1u9StsPiCXB/mo3JLUjWSx31Wkx9+KU8uy5g2q0gZreT4Qg8Lib122bGnBX1 k8pQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=EzgQ1ZnK; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from server2.sourceware.org (ip-8-43-85-97.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id g24-20020aa7d1d8000000b0053624b51694si623450edp.466.2023.10.03.07.32.27 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Oct 2023 07:32:28 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=EzgQ1ZnK; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 2C99238618E9 for ; Tue, 3 Oct 2023 14:31:59 +0000 (GMT) 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 B10943858D28 for ; Tue, 3 Oct 2023 14:31:35 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B10943858D28 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=1696343495; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type; bh=iUV9i0rlXGb8cPduN4it2J8RT5qhnHqR7gjeF92chMA=; b=EzgQ1ZnKcnuhdvbmBdtz4/fpz4IP84d3/ydcDpy3yZsXU2U9MS7chUzmNKKNGyHU88O2NK dDIqyUIr7qsekU0HutPnqA/YUVgBZwb18VoocYjWc7WjFolj5hJwzWUscyv3+vivhJkdeo QFWSi5Njh1PufX3n/ewtNtt5cWgJILQ= 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-582-_OOTEFmENMSQYP-WxAmEBA-1; Tue, 03 Oct 2023 10:31:33 -0400 X-MC-Unique: _OOTEFmENMSQYP-WxAmEBA-1 Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-419754aaa41so10243561cf.2 for ; Tue, 03 Oct 2023 07:31:33 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696343492; x=1696948292; h=subject:from:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=2ha3eScDbJYsJJI+wMo4Z/iEu1lHya9MxQg/5fdYbwg=; b=gdpmcUQZfRIKvLT03x8WJwqXVoT5oPnOhsH3xAiUHK+CiS4IU8zf/5QrRZ9avlIidX BCwG5rskBgHpk4FOUja0v5JJxD/eGzXbHmUZrB6VTNyN47hdkCInhxqTXJjW+3XLU3Ru kperZDJRLgKdJQ65CDjPmO3DH91lnwqyuiCJuHH4TKQ+lFu9TuY/ACkRxx7VnxSU8kZ+ n8gJPMiHJ89OcZnJi618qX33DcAFK6uX+BCe556zfN1lG5nPme1dAxclSkZtV2GEFUpR i32WVwYr6XIua29Iz8zqNkSGrh1/kxOWkmB6khoVSBpZDUotqAEb3TbJKny3AhpnDwVH vGBA== X-Gm-Message-State: AOJu0YznJ08lTWC3gLhBj2UgHAYB4A+JsIQy/TfSV6Si2y5R3Q0K4p8e X8J/H2I5XAbmp6bqPSiPyuTYWpeuqyiwgHCPd5xjjk/wLgy5+s+kr9+IVLmBtj17+1gFO31xEzX BIlp9KJYWTaisPRBs7B0oXhidOPsIjxLieNDkY0fQFM6qSu8etjjI3njdkiSwfDXHBc1RTA1CVT yTSQ== X-Received: by 2002:ac8:7c50:0:b0:410:9836:8066 with SMTP id o16-20020ac87c50000000b0041098368066mr16645762qtv.43.1696343492410; Tue, 03 Oct 2023 07:31:32 -0700 (PDT) X-Received: by 2002:ac8:7c50:0:b0:410:9836:8066 with SMTP id o16-20020ac87c50000000b0041098368066mr16645732qtv.43.1696343491954; Tue, 03 Oct 2023 07:31:31 -0700 (PDT) Received: from [192.168.0.174] ([104.219.124.252]) by smtp.gmail.com with ESMTPSA id x16-20020ac87310000000b004181aa90b46sm482804qto.89.2023.10.03.07.31.31 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 03 Oct 2023 07:31:31 -0700 (PDT) Message-ID: <6ff7d585-b793-a586-efe5-27874242742f@redhat.com> Date: Tue, 3 Oct 2023 10:31:33 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 To: gcc-patches From: Andrew MacLeod Subject: [COMMITTED] Return TRUE only when a global value is updated. X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US X-Spam-Status: No, score=-11.5 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_H3, RCVD_IN_MSPIKE_WL, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778745132588370984 X-GMAIL-MSGID: 1778745132588370984 set_range_info should return TRUE only when it sets a new value. It was currently returning true whenever it set a value, whether it was different or not. With this change,  VRP no longer overwrites global ranges DOM has set.  2 testcases needed adjusting that were expecting VRP2 to set a range but turns out it was really being set in DOM2.   Instead they check for the range in the final listing... Bootstrapped on  x86_64-pc-linux-gnu with no regressions. Pushed. Andrew From dae5de2a2353b928cc7099a78d88a40473abefd2 Mon Sep 17 00:00:00 2001 From: Andrew MacLeod Date: Wed, 27 Sep 2023 12:34:16 -0400 Subject: [PATCH 1/5] Return TRUE only when a global value is updated. set_range_info should return TRUE only when it sets a new value. VRP no longer overwrites global ranges DOM has set. Check for ranges in the final listing. gcc/ * tree-ssanames.cc (set_range_info): Return true only if the current value changes. gcc/testsuite/ * gcc.dg/pr93917.c: Check for ranges in final optimized listing. * gcc.dg/tree-ssa/vrp-unreachable.c: Ditto. --- gcc/testsuite/gcc.dg/pr93917.c | 4 ++-- .../gcc.dg/tree-ssa/vrp-unreachable.c | 4 ++-- gcc/tree-ssanames.cc | 24 +++++++++---------- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/gcc/testsuite/gcc.dg/pr93917.c b/gcc/testsuite/gcc.dg/pr93917.c index f09e1c41ae8..f636b77f45d 100644 --- a/gcc/testsuite/gcc.dg/pr93917.c +++ b/gcc/testsuite/gcc.dg/pr93917.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -fdump-tree-vrp1 -fdump-tree-vrp2" } */ +/* { dg-options "-O2 -fdump-tree-vrp1 -fdump-tree-vrp2 -fdump-tree-optimized-alias" } */ void f3(int n); @@ -19,5 +19,5 @@ void f2(int*n) /* { dg-final { scan-tree-dump-times "Global Export.*0, \\+INF" 1 "vrp1" } } */ /* { dg-final { scan-tree-dump-times "__builtin_unreachable" 1 "vrp1" } } */ -/* { dg-final { scan-tree-dump-times "Global Export.*0, \\+INF" 1 "vrp2" } } */ /* { dg-final { scan-tree-dump-times "__builtin_unreachable" 0 "vrp2" } } */ +/* { dg-final { scan-tree-dump-times "0, \\+INF" 2 "optimized" } } */ diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp-unreachable.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp-unreachable.c index 5835dfc8dbc..4aad7f1be5d 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/vrp-unreachable.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp-unreachable.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -fdump-tree-vrp1-alias -fdump-tree-vrp2-alias" } */ +/* { dg-options "-O2 -fdump-tree-vrp1 -fdump-tree-vrp2 -fdump-tree-optimized-alias" } */ void dead (unsigned n); void alive (unsigned n); @@ -39,4 +39,4 @@ void func (unsigned n, unsigned m) /* { dg-final { scan-tree-dump-not "dead" "vrp1" } } */ /* { dg-final { scan-tree-dump-times "builtin_unreachable" 1 "vrp1" } } */ /* { dg-final { scan-tree-dump-not "builtin_unreachable" "vrp2" } } */ -/* { dg-final { scan-tree-dump-times "fff8 VALUE 0x0" 4 "vrp2" } } */ +/* { dg-final { scan-tree-dump-times "fff8 VALUE 0x0" 2 "optimized" } } */ diff --git a/gcc/tree-ssanames.cc b/gcc/tree-ssanames.cc index 23387b90fe3..1eae411ac1c 100644 --- a/gcc/tree-ssanames.cc +++ b/gcc/tree-ssanames.cc @@ -418,10 +418,17 @@ set_range_info (tree name, const vrange &r) if (r.undefined_p () || r.varying_p ()) return false; + // Pick up the current range, or VARYING if none. tree type = TREE_TYPE (name); + Value_Range tmp (type); + if (range_info_p (name)) + range_info_get_range (name, tmp); + else + tmp.set_varying (type); + if (POINTER_TYPE_P (type)) { - if (r.nonzero_p ()) + if (r.nonzero_p () && !tmp.nonzero_p ()) { set_ptr_nonnull (name); return true; @@ -429,18 +436,11 @@ set_range_info (tree name, const vrange &r) return false; } - /* If a global range already exists, incorporate it. */ - if (range_info_p (name)) - { - Value_Range tmp (type); - range_info_get_range (name, tmp); - tmp.intersect (r); - if (tmp.undefined_p ()) - return false; + // If the result doesn't change, or is undefined, return false. + if (!tmp.intersect (r) || tmp.undefined_p ()) + return false; - return range_info_set_range (name, tmp); - } - return range_info_set_range (name, r); + return range_info_set_range (name, tmp); } /* Set nonnull attribute to pointer NAME. */ -- 2.41.0