From patchwork Tue Oct 18 10:47:57 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Biener X-Patchwork-Id: 4078 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4ac7:0:0:0:0:0 with SMTP id y7csp1886090wrs; Tue, 18 Oct 2022 03:48:46 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5IwKfUDblp/wDcynUx7jaDUxg0iF8FGUk3zM80moV+RAGQNz/v/Ak3QdzxtiIyAA0PDu9F X-Received: by 2002:a05:6402:50d4:b0:45d:fe2:45 with SMTP id h20-20020a05640250d400b0045d0fe20045mr2031582edb.221.1666090126026; Tue, 18 Oct 2022 03:48:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1666090126; cv=none; d=google.com; s=arc-20160816; b=h3Nxb7CJ2Of2TtRKeCYOGrDWh+lB9VtIoVknheoutYzAgXT1FrXqTbPNQmV4JVjw1P katUXtW0F4xMHRj1Zk2Ltdjx1NxnJRYYkJxs5Q+/IikyoMTggfvxJHqN22I+0GTviCem ymrSvVZrnPjQjilrTEPxFJpQt1w8/gO5flKKGfwKpt30x905Tio4mttfApZMLEGkYw66 CHeZymjQhmuEX0+UOMX9AHv09MdBdgCSt3fmjHBKcoAADPH44WKIRp6WWkHrUqFUiNwr an02iGwZ26DnZsoWqEhBsHmkaXf03MWD337Qg12vyccYTxtul2SZW17Ats/513M4FTn0 R5OQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:from:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:message-id :mime-version:subject:to:date:dmarc-filter:delivered-to :dkim-signature:dkim-filter; bh=ZBeaOg5po7ClliPdwsQ38vW4ggAoXTGe3NVgEvuKZTw=; b=u13Csh3mUSmpCIJW4RyW9ZyCQr7TvcT0JibkQbt6mY1Ix1P+//+/BXJOnCS3aWiGua Z+AQMVWCJYmsTnLR6B+VuwyFzX2uVHAeoycNI5eBqBAQ9peBf1rCy9NgkQV2MEm8Che8 s9f7BLIrKo6IzoCuKkRyxX/LdDG0WUoN7q9tQzcMXkPeg04XStW5+JBNrUbnaM30jXQU 9fcDfOIfGrgZiSqf3Cy3mzC1di+Q+YyLNqsZSY+2svmpuL9xfHIJt31UcHsUm4/o36dZ 68CJDK7XOHJwbhJtLZ0HUlpCYL10wWJC8vio7Fa1M7ysECGLPGmsVu5L1VzQNQdHNYDP zJKw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=xfittvkF; 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=gnu.org Received: from sourceware.org (ip-8-43-85-97.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id hc35-20020a17090716a300b0073ce34d1a13si13160114ejc.499.2022.10.18.03.48.45 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Oct 2022 03:48:46 -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=@gcc.gnu.org header.s=default header.b=xfittvkF; 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=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 18055385800F for ; Tue, 18 Oct 2022 10:48:45 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 18055385800F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1666090125; bh=ZBeaOg5po7ClliPdwsQ38vW4ggAoXTGe3NVgEvuKZTw=; h=Date:To:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=xfittvkFVrRYEwBSKJHWfK9WFAsLiHxYDmuwp+AL0RalNzZZDqVTEqXUqA6Cr1hIM 4wSsKsjECr7z633XNRwT/2hvDt09dMo3SxtYha08OFFjTjSM8xEQsGh5SxTqwLzo6w tvTGLndVs4cXacB+dQ4kIwpKqYfjmeh7QxNN/ryM= 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:2001:67c:2178:6::1d]) by sourceware.org (Postfix) with ESMTPS id 3EB3B3857C4B for ; Tue, 18 Oct 2022 10:47:59 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 3EB3B3857C4B Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 3154C1FE3E for ; Tue, 18 Oct 2022 10:47:58 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 20724139D2 for ; Tue, 18 Oct 2022 10:47:58 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id nJ2vBl6ETmO3OAAAMHmgww (envelope-from ) for ; Tue, 18 Oct 2022 10:47:58 +0000 Date: Tue, 18 Oct 2022 12:47:57 +0200 (CEST) To: gcc-patches@gcc.gnu.org Subject: [PATCH] tree-optimization/107302 - fix vec_perm placement for recurrence vect MIME-Version: 1.0 Message-Id: <20221018104758.20724139D2@imap2.suse-dmz.suse.de> X-Spam-Status: No, score=-12.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_PASS, 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.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" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1747022119966181911?= X-GMAIL-MSGID: =?utf-8?q?1747022119966181911?= The following fixes the VEC_PERM_EXPR placement when the latch definition is a PHI node. Bootstrapped and tested on x86_64-unknown-linux-gnu, pushed. PR tree-optimization/107302 * tree-vect-loop.cc (vectorizable_recurrence): Fix vec_perm placement for a PHI latch def. * gcc.dg/vect/pr107302.c: New testcase. --- gcc/testsuite/gcc.dg/vect/pr107302.c | 13 +++++++++++++ gcc/tree-vect-loop.cc | 12 +++++++++--- 2 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/vect/pr107302.c diff --git a/gcc/testsuite/gcc.dg/vect/pr107302.c b/gcc/testsuite/gcc.dg/vect/pr107302.c new file mode 100644 index 00000000000..293f7e4067a --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/pr107302.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-fno-tree-pre" } */ + +int a[2000]; +int s292_im1; + +void +s292() { + for (int i = 0; i < 2000; i++) { + a[i] = s292_im1; + s292_im1 = i; + } +} diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc index 63e86540d12..92790bd8095 100644 --- a/gcc/tree-vect-loop.cc +++ b/gcc/tree-vect-loop.cc @@ -8485,9 +8485,15 @@ vectorizable_recurr (loop_vec_info loop_vinfo, stmt_vec_info stmt_info, second and later operands are tentative and will be updated when we have vectorized the latch definition. */ edge le = loop_latch_edge (LOOP_VINFO_LOOP (loop_vinfo)); - gimple_stmt_iterator gsi2 - = gsi_for_stmt (SSA_NAME_DEF_STMT (PHI_ARG_DEF_FROM_EDGE (phi, le))); - gsi_next (&gsi2); + gimple *latch_def = SSA_NAME_DEF_STMT (PHI_ARG_DEF_FROM_EDGE (phi, le)); + gimple_stmt_iterator gsi2; + if (is_a (latch_def)) + gsi2 = gsi_after_labels (gimple_bb (latch_def)); + else + { + gsi2 = gsi_for_stmt (latch_def); + gsi_next (&gsi2); + } for (unsigned i = 0; i < ncopies; ++i) {