From patchwork Tue Nov 16 03:18:36 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 47744 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 927003857C42 for ; Tue, 16 Nov 2021 03:19:08 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 927003857C42 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1637032748; bh=EnKcqq84QFWaZbHTXSpDlpwP2IK9qc1epQ0JcSrGJ2E=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=dKi/tVpSLmkbzLKHwQbzcSmDcWeuTh900GF38mDV2rApzEy4CtLvsHRtd1JFI6w2w htshUXT9hj2SvJjpq6NYgWBrgsX/P9439f/H9vtYobFWUyiZU0XFtgYuWf0nB93KnB wzpZ1nsx4O7r2k92kwsvE7T0aV7LznCB746tIWxA= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-pl1-x62b.google.com (mail-pl1-x62b.google.com [IPv6:2607:f8b0:4864:20::62b]) by sourceware.org (Postfix) with ESMTPS id F224B3858003 for ; Tue, 16 Nov 2021 03:18:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org F224B3858003 Received: by mail-pl1-x62b.google.com with SMTP id k4so16133463plx.8 for ; Mon, 15 Nov 2021 19:18:38 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=EnKcqq84QFWaZbHTXSpDlpwP2IK9qc1epQ0JcSrGJ2E=; b=NS55VOTBgvfi8JpYabx0WFeqQCrNJWnyR7sSfOmCPi33CenWLLo83qIzyMPqrtXx57 uKBjXCqD75KT5M1wxL3OH3W3WdBMJajy7sgKqJcp14d6hvHTrWudjTzIRT3FueQ2lJwc 6m8u6xuPqvpaJHlOb0T1n7sXB7P0foNYbDSq+Rk40gWk7c6JDFS9ZfgLXTcKnsLMc6mj PSRZjzlW2yH9RTVm8xo2VQVu+oLBM8Wlt5rNqb1HZ+6/HB1SH73Ceyo4IJ/DpAKbkB1s fVk5QEr+aKMaUtE9RAnPgxFqp4m/B+QD8LLHTCTnerRG6ai7cEz6lNQOkf/nlm+etdYN Itvw== X-Gm-Message-State: AOAM5320UoGxCSS/eRDNhzEIS2vFb55gIKmIDICC1rhH7Fm9yGPutNF3 88447LxNB6A2se0iCmeDi1N+gy9L31o= X-Google-Smtp-Source: ABdhPJyX/SaOMVEbtCgBuY1U2HYT8OSvk6z5bjak8dhCTThCRmLDiNYtEASH/4FEPQamJ119KhsUow== X-Received: by 2002:a17:902:e749:b0:141:edaa:fde1 with SMTP id p9-20020a170902e74900b00141edaafde1mr41516544plf.72.1637032717821; Mon, 15 Nov 2021 19:18:37 -0800 (PST) Received: from gnu-cfl-2.localdomain ([172.58.35.133]) by smtp.gmail.com with ESMTPSA id s30sm16979925pfg.17.2021.11.15.19.18.37 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Nov 2021 19:18:37 -0800 (PST) Received: from gnu-cfl-2.lan (localhost [IPv6:::1]) by gnu-cfl-2.localdomain (Postfix) with ESMTP id 596FB1A015A for ; Mon, 15 Nov 2021 19:18:36 -0800 (PST) To: gcc-patches@gcc.gnu.org Subject: [PATCH] Add a missing return transforming atomic bit test and operations Date: Mon, 15 Nov 2021 19:18:36 -0800 Message-Id: <20211116031836.2056526-1-hjl.tools@gmail.com> X-Mailer: git-send-email 2.33.1 MIME-Version: 1.0 X-Spam-Status: No, score=-3029.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_BARRACUDACENTRAL, 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-Patchwork-Original-From: "H.J. Lu via Gcc-patches" From: "H.J. Lu" Reply-To: "H.J. Lu" Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" When failing to transform equivalent, but slighly different cases of atomic bit test and operations to their canonical forms, return immediately. gcc/ PR middle-end/103268 * tree-ssa-ccp.c (optimize_atomic_bit_test_and): Add a missing return. gcc/testsuite/ PR middle-end/103268 * gcc.dg/pr103268-1.c: New test. * gcc.dg/pr103268-2.c: Likewise. --- gcc/testsuite/gcc.dg/pr103268-1.c | 10 ++++++++++ gcc/testsuite/gcc.dg/pr103268-2.c | 12 ++++++++++++ gcc/tree-ssa-ccp.c | 2 ++ 3 files changed, 24 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/pr103268-1.c create mode 100644 gcc/testsuite/gcc.dg/pr103268-2.c diff --git a/gcc/testsuite/gcc.dg/pr103268-1.c b/gcc/testsuite/gcc.dg/pr103268-1.c new file mode 100644 index 00000000000..6d583d55d6d --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr103268-1.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +extern int si; +long +test_types (void) +{ + unsigned int u2 = __atomic_fetch_xor (&si, 0, 5); + return u2; +} diff --git a/gcc/testsuite/gcc.dg/pr103268-2.c b/gcc/testsuite/gcc.dg/pr103268-2.c new file mode 100644 index 00000000000..12283bb43d9 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr103268-2.c @@ -0,0 +1,12 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +extern long pscc_a_2_3; +extern int pscc_a_1_4; + +void +pscc (void) +{ + pscc_a_1_4 = __sync_fetch_and_and (&pscc_a_2_3, 1); +} + diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c index 0666dc652d0..18d57729d8a 100644 --- a/gcc/tree-ssa-ccp.c +++ b/gcc/tree-ssa-ccp.c @@ -3638,6 +3638,8 @@ optimize_atomic_bit_test_and (gimple_stmt_iterator *gsip, use_stmt = use_nop_stmt; } } + else + return; if (!bit) {