From patchwork Mon Nov 27 09:42:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Biener X-Patchwork-Id: 170068 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:ce62:0:b0:403:3b70:6f57 with SMTP id o2csp2969758vqx; Mon, 27 Nov 2023 01:43:31 -0800 (PST) X-Google-Smtp-Source: AGHT+IHeA1UTo1UI1+aadPVMixOdf0ZPLvEVg/SFaGNxwHzQxZnHU8BoOZeOZSeVKKF0C/cTVgXv X-Received: by 2002:a05:6358:16d5:b0:16d:bd39:46a with SMTP id r21-20020a05635816d500b0016dbd39046amr11968778rwl.14.1701078211178; Mon, 27 Nov 2023 01:43:31 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1701078211; cv=pass; d=google.com; s=arc-20160816; b=kfhDWlKOCT7UisViVD8JZdZnAPIT0I3BJWT2l6aVALC7M89hWc3N/+JUpzDY6iFbRc IlXgMJCeF1+AvOVomYiiKOuX2h4b3C69rJTg05o5j2mdMLQCGrTWxInOWcGvfLKmRL3s SQWgPduTOXYjXt/Fxhd1Vy9h5uBwrMcoXGwmzxB6ZnjBrP/VAObHsP+fybOF6a41Locp js5sryJtYBiU9veoKJEf9IILNUXYXk4Gip8cafUdpcTgKMBm0OKJIIigi980NvQP9nK5 Yzmwwzzs92fpNwuzBS5Ep9yhngvCqbHD/9u74toXMa6/cXN42flvbqHi23ScFXbML067 TpMA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=message-id:errors-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:mime-version :user-agent:subject:to:from:date:dkim-signature:dkim-signature :arc-filter:dmarc-filter:delivered-to; bh=sf+ks+YPMGjb8Wez6Dyrmnz34TpShJNX8Oto+O2TLG8=; fh=hPrbWPhweUx4V0GV9uXJqbyAzg2ABmTz7kczrAQqMmM=; b=YDiDcIxu+42upk0tR8bf7Av+/mYoakrUX/ZH3xwv69i2k6TJqQ3r4KYzGrp4QFPUrA p1B7uqtb3w/zARc8+Vfbt/xBbx1UK+wFYRqvfMASGJjYYdbXMrH0njLOtBixBxsGONMz itzzLwspweZccO7xGDFsutTGgMCqgr6FdCfvWs6UjVqa1Y1DPSJNH3Go0aoEO39sTRqw L9EcfzB+6yp/T8RRHWQTGNkCBfa+WrUbQ0W9kghK2ZOVGBUJHICLd+72p/6ciLz/Jh/D 3hG/gZk0bwVb9AuPbYGVCmbM3BkE9EJJDmXh5SNYZTzvoPfgFPinY72YBz8tz1Osl6YS XhuQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=V9FGMng3; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519; arc=pass (i=1); 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=suse.de Received: from server2.sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id bn15-20020a05622a1dcf00b00423a58fab57si4787905qtb.209.2023.11.27.01.43.31 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Nov 2023 01:43:31 -0800 (PST) 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=@suse.de header.s=susede2_rsa header.b=V9FGMng3; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519; arc=pass (i=1); 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=suse.de Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id EB06E3857BBB for ; Mon, 27 Nov 2023 09:43:30 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from smtp-out2.suse.de (smtp-out2.suse.de [IPv6:2a07:de40:b251:101:10:150:64:2]) by sourceware.org (Postfix) with ESMTPS id 260A53857C48 for ; Mon, 27 Nov 2023 09:43:02 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 260A53857C48 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 260A53857C48 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a07:de40:b251:101:10:150:64:2 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701078183; cv=none; b=F5Wqgs/wTFOZrEOKPJLp/GR1bxNv/jJasAuThnR8DUjDU+ubDF+C+hTBf8rHSGUFGjAyqoZJVIh3iH5z1gbu5ZbOsAXCJq9bSW9VQG9FfkrvI3j+WWVoPPsoYys/ecfJmISMpAYN1xf0XQYaeuCjQOzZ8TmS+HTiMM5jyDgMevw= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701078183; c=relaxed/simple; bh=n9L7zIWl1mko/Z2i/SLqsBjYLW1LGtg5d8fzaTlbXiE=; h=DKIM-Signature:DKIM-Signature:Date:From:To:Subject:MIME-Version; b=oF/LTjml9iJq7F5O5x/iChZ6YJP5YWpQygXFzMw/NRbSsMvexpH7diB55vYMesILVt+DESjW3wvlro9yytx1mgK6eiGTkgHbMyLFY45HXjour5l3Hc7oTrcHvUUNf6q52CK9xVJaIRatsQubmb95rWKx967uFS28MXllhJBAa00= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from relay2.suse.de (unknown [149.44.160.134]) by smtp-out2.suse.de (Postfix) with ESMTP id 1FB5D20246 for ; Mon, 27 Nov 2023 09:43:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1701078181; h=from:from:reply-to:date:date:to:to:cc:mime-version:mime-version: content-type:content-type; bh=sf+ks+YPMGjb8Wez6Dyrmnz34TpShJNX8Oto+O2TLG8=; b=V9FGMng3ED17ljaBhDSLBxA+XzksBRxK625qgha9uS+SjiSxcsg/bcxJIu6CcC5Yzio2Fp uaV/gdh3lx3QcgpLKCV5yhGp7SYz0Y/GhpXC4JD2WwHJEHd9YypbO5qmfSvWVyQIgYxtSZ ONGqxm1yqQfw+rEDnrA27uQZYCU+ug4= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1701078181; h=from:from:reply-to:date:date:to:to:cc:mime-version:mime-version: content-type:content-type; bh=sf+ks+YPMGjb8Wez6Dyrmnz34TpShJNX8Oto+O2TLG8=; b=kfkRzGZI0b857AozhUOAs2Y5lB1AP6rXavZK0daKvVQ9KWZ26M56Q9ot+LaLIDAOMolO0z xfjZ8stMJHLkPKAQ== Received: from wotan.suse.de (wotan.suse.de [10.160.0.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by relay2.suse.de (Postfix) with ESMTPS id 7D1612C161 for ; Mon, 27 Nov 2023 09:42:59 +0000 (UTC) Date: Mon, 27 Nov 2023 09:42:59 +0000 (UTC) From: Richard Biener To: gcc-patches@gcc.gnu.org Subject: [PATCH] tree-optimization/112706 - missed simplification of condition User-Agent: Alpine 2.22 (LSU 394 2020-01-19) MIME-Version: 1.0 X-Spamd-Bar: ++++++++++++++++++++ X-Spam-Score: 20.19 X-Rspamd-Server: rspamd1 X-Rspamd-Queue-Id: 1FB5D20246 Authentication-Results: smtp-out2.suse.de; dkim=none; dmarc=fail reason="No valid SPF, No valid DKIM" header.from=suse.de (policy=none); spf=softfail (smtp-out2.suse.de: 149.44.160.134 is neither permitted nor denied by domain of rguenther@suse.de) smtp.mailfrom=rguenther@suse.de X-Spamd-Result: default: False [20.19 / 50.00]; RDNS_NONE(1.00)[]; SPAMHAUS_XBL(0.00)[149.44.160.134:from]; RWL_MAILSPIKE_GOOD(-1.00)[149.44.160.134:from]; TO_DN_NONE(0.00)[]; HFILTER_HELO_IP_A(1.00)[relay2.suse.de]; R_SPF_SOFTFAIL(4.60)[~all:c]; HFILTER_HELO_NORES_A_OR_MX(0.30)[relay2.suse.de]; R_RATELIMIT(0.00)[rip(RLa6h5sh378tcam5q78u),ip(RLkk1mdgxgu4i4849a6y)]; MX_GOOD(-0.01)[]; RCVD_NO_TLS_LAST(0.10)[]; FROM_EQ_ENVFROM(0.00)[]; R_DKIM_NA(2.20)[]; MIME_TRACE(0.00)[0:+]; BAYES_HAM(-3.00)[100.00%]; RDNS_DNSFAIL(0.00)[]; ARC_NA(0.00)[]; FROM_HAS_DN(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; NEURAL_SPAM_SHORT(3.00)[1.000]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[gcc-patches@gcc.gnu.org]; RCPT_COUNT_ONE(0.00)[1]; MISSING_MID(2.50)[]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; VIOLATED_DIRECT_SPF(3.50)[]; NEURAL_SPAM_LONG(3.50)[1.000]; FUZZY_BLOCKED(0.00)[rspamd.com]; RCVD_COUNT_TWO(0.00)[2]; HFILTER_HOSTNAME_UNKNOWN(2.50)[]; DMARC_POLICY_SOFTFAIL(0.10)[suse.de : No valid SPF, No valid DKIM,none] X-Spam-Status: No, score=-10.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, MISSING_MID, SPF_HELO_NONE, SPF_PASS, 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.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 Message-Id: <20231127094330.EB06E3857BBB@sourceware.org> X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1783709786682062771 X-GMAIL-MSGID: 1783709786682062771 We lack a match.pd pattern recognizing ptr + o ==/!= ptr + o'. The following extends handling we have for integral types to pointers. Bootstrapped and tested on x86_64-unknown-linux-gnu, pushed. PR tree-optimization/112706 * match.pd (ptr + o ==/!=/- ptr + o'): New patterns. * gcc.dg/tree-ssa/pr112706.c: New testcase. --- gcc/match.pd | 9 +++++++++ gcc/testsuite/gcc.dg/tree-ssa/pr112706.c | 15 +++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/pr112706.c diff --git a/gcc/match.pd b/gcc/match.pd index 61e5d3441f4..95225e4ca5f 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -2596,6 +2596,15 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (@0)) || TYPE_OVERFLOW_WRAPS (TREE_TYPE (@0)))) (op @0 @1)))) +/* And similar for pointers. */ +(for op (eq ne) + (simplify + (op (pointer_plus @0 @1) (pointer_plus @0 @2)) + (op @1 @2))) +(simplify + (pointer_diff (pointer_plus @0 @1) (pointer_plus @0 @2)) + (if (TYPE_OVERFLOW_WRAPS (TREE_TYPE (@1))) + (convert (minus @1 @2)))) /* X - Z < Y - Z is the same as X < Y when there is no overflow. */ (for op (lt le ge gt) diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr112706.c b/gcc/testsuite/gcc.dg/tree-ssa/pr112706.c new file mode 100644 index 00000000000..217730b99b2 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr112706.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-O -fdump-tree-fre1" } */ + +int *ptr; +void link_error (); +void +test () +{ + int *ptr1 = ptr + 10; + int *ptr2 = ptr + 20; + if (ptr1 == ptr2) + link_error (); +} + +/* { dg-final { scan-tree-dump-not "if" "fre1" } } */