From patchwork Wed Jun 28 10:21:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Biener X-Patchwork-Id: 113771 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp8813573vqr; Wed, 28 Jun 2023 03:22:46 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4wZjg1tIUbmcF3zdtywXo8W6PT9KCxKiEpwHVInzo2YHNCRBhjRUCyuz5V62wuRXcdVYTD X-Received: by 2002:a17:907:7d9e:b0:991:bd74:ea3e with SMTP id oz30-20020a1709077d9e00b00991bd74ea3emr7114993ejc.4.1687947766444; Wed, 28 Jun 2023 03:22:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1687947766; cv=none; d=google.com; s=arc-20160816; b=w+iPLGc11CTwzR+VZDCkCjB4L0RDx41nd+fcXDXhVMW/UxxGk2XiX06CgPR0M5OJhC rJIFxCQXBnPuBLEz/k/6YQSr5cWhuQjDo2DxYC1gZu9YVwqnoV0Td/j3anh6irDMbOZW auJkdumo2INX8bYSvtM8VaDJgPPMvKo2PI6OD6s3ls8VMuzLmpYPd/SLd2hdBaZeFI3j VUm1LSGm2hV3yt03SbmyEf06kee1a42N8+/lTwkZMeVlDbYE2dO3tRMSDwBBNsYWefg8 sM7tBseYjFwfZro8s4XvBP5lBknR92hxoos6dEpvw7iKswPVn2KNSElyO3CRT+4mrWTC +h9g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=message-id:sender:errors-to:reply-to:from:list-subscribe:list-help :list-post:list-archive:list-unsubscribe:list-id:precedence :mime-version:user-agent:subject:cc:to:date:dmarc-filter :delivered-to:dkim-signature:dkim-filter; bh=ZBk8pnrwp+WQ3CTl0PKZIck/lpdyMMJBqD2BnF61KrY=; fh=Hz/QWAL2vMAbrm3W16QrnQrLktFWGNewssxaKtdN1w4=; b=kjNJOTu/BvUmJsX1wwGGMGZWCaZ2qxnWR2gy+puos4CM/u/Nz39A46yrIiFWa7t1cS UTusi8nSwRrUzk9XV1x1pafvUUrcRCygLAPc2qqSvtStDL6+CNfPyH9btSDt8E6dIQhV Kpf8LBo4LwBc8YjcQSxkuNQdBLYHZeHNo/JaVmbwiSX8ymOTDv4fgF1Ti8NiEllPPN+X y/aOo9piq/WvZSNBAz6QrgnsnoWKeCqjSKBzn8TA5+8kmvRFt4+MPQ7UH9fQoWZmPPdZ XV5eNdkUpiZ6JT/7L/VJtm6QjyGPkoy8FDGFRwgCfqea5el1sQe4mz+K2i92yZk0iiwQ qTeQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=LaWIO3ZU; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id r5-20020a17090638c500b009875481ecc2si5074793ejd.767.2023.06.28.03.22.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Jun 2023 03:22:46 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=LaWIO3ZU; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 5F11E3857C51 for ; Wed, 28 Jun 2023 10:22:28 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 5F11E3857C51 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1687947748; bh=ZBk8pnrwp+WQ3CTl0PKZIck/lpdyMMJBqD2BnF61KrY=; h=Date:To:cc:Subject:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:From; b=LaWIO3ZUkRxG+1QBUiCyfziFxBMyjyaNjNRRp+Rzt8oH1lgSwjAM8N8okeAonk7bn buUX9E5NDVgD+zpLUUrImQ08l3xW5IRK92RKufSQysKlXY8MTxbFStmA29cjUgFG3K jBM2hFxQB+kpac5dKk8zgva5te0Kr5Fp6+qzRjWA= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by sourceware.org (Postfix) with ESMTPS id 1F64B3858401 for ; Wed, 28 Jun 2023 10:21:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1F64B3858401 Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out1.suse.de (Postfix) with ESMTP id 24C892188D; Wed, 28 Jun 2023 10:21:45 +0000 (UTC) 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 177282C2E7; Wed, 28 Jun 2023 10:21:45 +0000 (UTC) Date: Wed, 28 Jun 2023 10:21:45 +0000 (UTC) To: gcc-patches@gcc.gnu.org cc: Jakub Jelinek Subject: [PATCH] tree-optimization/110434 - avoid ={v} {CLOBBER} from NRV User-Agent: Alpine 2.22 (LSU 394 2020-01-19) MIME-Version: 1.0 X-Spam-Status: No, score=-10.5 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.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Richard Biener via Gcc-patches From: Richard Biener Reply-To: Richard Biener Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" Message-Id: <20230628102228.5F11E3857C51@sourceware.org> X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1769941517214936289?= X-GMAIL-MSGID: =?utf-8?q?1769941517214936289?= When NRV replaces a local variable with it also replaces occurences in clobbers. This leads to being clobbered before the return of it which is strictly invalid but harmless in practice since there's no pass after NRV which would remove earlier stores. The following fixes this nevertheless. Bootstrapped and tested on x86_64-unknown-linux-gnu, OK? Thanks, Richard. PR tree-optimization/110434 * tree-nrv.cc (pass_nrv::execute): Remove CLOBBERs of VAR we replace with . --- gcc/tree-nrv.cc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/gcc/tree-nrv.cc b/gcc/tree-nrv.cc index ff47439647c..466b491e4e7 100644 --- a/gcc/tree-nrv.cc +++ b/gcc/tree-nrv.cc @@ -256,6 +256,14 @@ pass_nrv::execute (function *fun) gsi_remove (&gsi, true); release_defs (stmt); } + /* If this is a CLOBBER of VAR, remove it. */ + else if (gimple_clobber_p (stmt) + && gimple_assign_lhs (stmt) == found) + { + unlink_stmt_vdef (stmt); + gsi_remove (&gsi, true); + release_defs (stmt); + } else { struct walk_stmt_info wi;