From patchwork Wed Apr 24 04:43:07 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Biener X-Patchwork-Id: 88942 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 0A961384AB5E for ; Wed, 24 Apr 2024 04:43:35 +0000 (GMT) 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 [IPv6:2a07:de40:b251:101:10:150:64:1]) by sourceware.org (Postfix) with ESMTPS id 65515385840D for ; Wed, 24 Apr 2024 04:43:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 65515385840D 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 65515385840D Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a07:de40:b251:101:10:150:64:1 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1713933790; cv=none; b=YYZJqN5uBacyUqLwBCvL9CPGjv9xT1nFtlRKuTzkCd37gcB2JN3V1AET6ivPH+qbs3/sqKdVN8g7uRCQliTiJOn+DriA4pkok4ZViWI5aNl7nco1DV1vUatkZKUj2KF5DcfyW+3/qkvyKsLF83zGKHDF/Fxq/gMNyIXfZr3ZdBE= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1713933790; c=relaxed/simple; bh=kcru0Cdzmku0XDEawnQtlkVl9RNXu2H8j4cBS7IB06o=; h=DKIM-Signature:DKIM-Signature:DKIM-Signature:DKIM-Signature:Date: From:To:Subject:MIME-Version:Message-Id; b=Auo3td/FGYrq5Q1ND3bcL8LiDatSq6dP8wdKm3gVJi+wfKmicCZngf/84cGfywSJe6Winhi5Lsn2zaMDqNV/660fLSg28M5o+NwPFXlwox7UqgKbe2P20vq8213VydjpbEo2cjl6Hglm8HvQrCRs7A1Ifb90OVGyCo8XG5kjxpk= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id E957438DED for ; Wed, 24 Apr 2024 04:43:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1713933788; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version:content-type:content-type; bh=lfownDXofQbLfVCqk4j/BRYRufVAdK9+4+oqVDagBqs=; b=MNYbjP4C8bg68x1SQSb2hjfCzUIbcG5p64dY6j1yur4yvTAOWMsIa2VD7+2tES2g9xGXvN et3m905Xbn6zYX2cMqw1zkKXgfuQB1UShzoq0CF788o9+R/dPByc9VZEZfDd65bkMnpnti mpYVg/LraHD96fGTkD5zk9mGBrLpF20= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1713933788; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version:content-type:content-type; bh=lfownDXofQbLfVCqk4j/BRYRufVAdK9+4+oqVDagBqs=; b=AWNYUNTFJ2xEng01LFGklr75wOq2O38YOiE96LlFekE5rQrJiSZKxWN2rcsO4eRWNJ4S9T 0yBe1voKQe5QyCCg== Authentication-Results: smtp-out1.suse.de; none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1713933787; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version:content-type:content-type; bh=lfownDXofQbLfVCqk4j/BRYRufVAdK9+4+oqVDagBqs=; b=d5zT1JKs+q8oDguRxu1awq7xbB3cBXFpmXy+6nxhYSpin1f3LWOpWQkzq7uxWuN3EiJEuA KckwlU1YmRQ5xkcoZ97TiBmFOgfVKeT+JS8kfB4j0TPxNBt/6zHG3iiybCGVOlons5xAFx FE1God5lSjqrgvopZI16Ra///b7NpIA= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1713933787; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version:content-type:content-type; bh=lfownDXofQbLfVCqk4j/BRYRufVAdK9+4+oqVDagBqs=; b=6utyiBnO/tmn4gzo5pJGddpju+xHgOeIyJ0EVEdvsmBYz9aZyEcNnAciCGUv19ySlAqJZC e75OHXPFWbx2eJAg== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id D750F13724 for ; Wed, 24 Apr 2024 04:43:07 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id XGN0M9uNKGZ0ZQAAD6G6ig (envelope-from ) for ; Wed, 24 Apr 2024 04:43:07 +0000 Date: Wed, 24 Apr 2024 06:43:07 +0200 (CEST) From: Richard Biener X-X-Sender: rguenther@rguenther-XPS-13-9380 To: gcc-patches@gcc.gnu.org Subject: [PATCH] tree-optimization/114832 - wrong dominator info with vect peeling User-Agent: Alpine 2.22 (DEB 394 2020-01-19) MIME-Version: 1.0 Message-Id: <20240424044307.D750F13724@imap1.dmz-prg2.suse.org> X-Spam-Score: -4.29 X-Spam-Level: X-Spamd-Result: default: False [-4.29 / 50.00]; BAYES_HAM(-3.00)[100.00%]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_SHORT(-0.19)[-0.964]; MIME_GOOD(-0.10)[text/plain]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; RCVD_VIA_SMTP_AUTH(0.00)[]; RCPT_COUNT_ONE(0.00)[1]; ARC_NA(0.00)[]; RCVD_TLS_ALL(0.00)[]; FUZZY_BLOCKED(0.00)[rspamd.com]; TO_MATCH_ENVRCPT_ALL(0.00)[]; FROM_HAS_DN(0.00)[]; PREVIOUSLY_DELIVERED(0.00)[gcc-patches@gcc.gnu.org]; FROM_EQ_ENVFROM(0.00)[]; TO_DN_NONE(0.00)[]; RCVD_COUNT_TWO(0.00)[2]; MIME_TRACE(0.00)[0:+] X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org When we update the dominator of the redirected exit after peeling we check whether the immediate dominator was the loop header rather than the exit source when we later want to just update it to the new source. The following fixes this oversight. Bootstrap and regtest running on x86_64-unknown-linux-gnu. Richard. PR tree-optimization/114832 * tree-vect-loop-manip.cc (slpeel_tree_duplicate_loop_to_edge_cfg): Fix dominance check. * gcc.dg/vect/pr114832.c: New testcase. --- gcc/testsuite/gcc.dg/vect/pr114832.c | 13 +++++++++++++ gcc/tree-vect-loop-manip.cc | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/vect/pr114832.c diff --git a/gcc/testsuite/gcc.dg/vect/pr114832.c b/gcc/testsuite/gcc.dg/vect/pr114832.c new file mode 100644 index 00000000000..2de07ae22ef --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/pr114832.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-fno-tree-loop-if-convert -fno-tree-loop-distribute-patterns" } */ + +int a, b, c, d[3]; +void e() { + int f, g = 0; + for (; g < 3; g++) { + if (f || a || b && c) { + int h, *i = &h, **j = &i; + } + d[g] = 0; + } +} diff --git a/gcc/tree-vect-loop-manip.cc b/gcc/tree-vect-loop-manip.cc index 8d9b533d50f..43c7881c640 100644 --- a/gcc/tree-vect-loop-manip.cc +++ b/gcc/tree-vect-loop-manip.cc @@ -1523,7 +1523,7 @@ slpeel_tree_duplicate_loop_to_edge_cfg (class loop *loop, edge loop_exit, exit_dest = exit->dest; was_imm_dom = (get_immediate_dominator (CDI_DOMINATORS, - exit_dest) == loop->header ? + exit_dest) == exit->src ? true : false); /* Also copy the pre-header, this avoids jumping through hoops to