From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) by sourceware.org (Postfix) with ESMTPS id C67883858D28 for ; Tue, 28 May 2024 12:35:20 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C67883858D28 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 C67883858D28 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=195.135.223.131 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1716899722; cv=none; b=jOXua9G30++rHruR27n74yG20P+IYhMp8QhL4mQlBrD2fSbXBJ+NtbKD2JD+p4v+cMmE2ksbUD+5uzyuvLabJa3YKynusvZqCBH1YqpKzCH4E454ZKVSX6CJKZhKEONTLWeMVZkx1vxVGdF3k2FY1+o2h/juig6WKG5Oix2BavA= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1716899722; c=relaxed/simple; bh=Xs3He6+S1MCp4MVCt7aoJomk9A5wGV7MOSeFfi4cqow=; h=DKIM-Signature:DKIM-Signature:DKIM-Signature:DKIM-Signature:Date: From:To:Subject:MIME-Version; b=vpsYgIE/+CQ8EzZj37PHGMEVtRp+pyarWy2jf/KwMjJf9U9HD/oPt86xO3na7G25Im/6wWwSvBN0sqVoUKLk/NLFdL+RNoSCyNAqBnMhi1td8n1+nE5QF8gElhwq15AHP01Ra8XjpGD/tpX/f73EBCUsPCsw74fhhxJxCbtc1sI= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from murzim.nue2.suse.org (unknown [10.168.4.243]) (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-out2.suse.de (Postfix) with ESMTPS id A2637202A4 for ; Tue, 28 May 2024 12:35:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1716899719; h=from:from:reply-to:date:date:to:to:cc:mime-version:mime-version: content-type:content-type; bh=ywmhONSdo79vpiH1HfdPsVnGUTqT7b9LuajPLYQJapA=; b=gaoT4zpVq4onxqUViKguIr+TMuwapYq1qS11ZtFpsjVj6cnDy1GtqZHkVfHH8wlN2MMBP7 M1jL/6pjoILjq6ub7iMoHDUhTeRvA10rpim5uFujN8+JVVW93CSblIKMBYCsk2GiDHsZu0 P2a+plVpf42PMDuUyjhrwW9AtqYhtEQ= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1716899719; h=from:from:reply-to:date:date:to:to:cc:mime-version:mime-version: content-type:content-type; bh=ywmhONSdo79vpiH1HfdPsVnGUTqT7b9LuajPLYQJapA=; b=xJK9C0idyt6cmMJQ9nuPT6htAfbaPk9YDyLy0tbv+adiLPRY98fenRtnKKWdoOetNbXax+ nJ/KWn5srhhMbpCQ== Authentication-Results: smtp-out2.suse.de; none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1716899719; h=from:from:reply-to:date:date:to:to:cc:mime-version:mime-version: content-type:content-type; bh=ywmhONSdo79vpiH1HfdPsVnGUTqT7b9LuajPLYQJapA=; b=gaoT4zpVq4onxqUViKguIr+TMuwapYq1qS11ZtFpsjVj6cnDy1GtqZHkVfHH8wlN2MMBP7 M1jL/6pjoILjq6ub7iMoHDUhTeRvA10rpim5uFujN8+JVVW93CSblIKMBYCsk2GiDHsZu0 P2a+plVpf42PMDuUyjhrwW9AtqYhtEQ= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1716899719; h=from:from:reply-to:date:date:to:to:cc:mime-version:mime-version: content-type:content-type; bh=ywmhONSdo79vpiH1HfdPsVnGUTqT7b9LuajPLYQJapA=; b=xJK9C0idyt6cmMJQ9nuPT6htAfbaPk9YDyLy0tbv+adiLPRY98fenRtnKKWdoOetNbXax+ nJ/KWn5srhhMbpCQ== Date: Tue, 28 May 2024 14:35:19 +0200 (CEST) From: Richard Biener To: gcc-patches@gcc.gnu.org Subject: [PATCH] tree-optimization/115236 - more points-to *ANYTHING = x fixes MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII X-Spam-Level: X-Spamd-Result: default: False [-1.74 / 50.00]; BAYES_HAM(-3.00)[100.00%]; MISSING_MID(2.50)[]; NEURAL_HAM_LONG(-0.99)[-0.995]; NEURAL_HAM_SHORT(-0.14)[-0.711]; MIME_GOOD(-0.10)[text/plain]; MISSING_XM_UA(0.00)[]; MIME_TRACE(0.00)[0:+]; ARC_NA(0.00)[]; RCPT_COUNT_ONE(0.00)[1]; RCVD_COUNT_ZERO(0.00)[0]; FROM_HAS_DN(0.00)[]; FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; TO_DN_NONE(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[tree-ssa-structalias.cc:url,murzim.nue2.suse.org:helo] X-Spam-Score: -1.74 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 List-Id: Message-ID: <20240528123519.gzfXGcE2LQ5WYNPDWsr_Fj0-OVOfrt6HVhke7zzS2Qc@z> The stored-to ANYTHING handling has more holes, uncovered by treating volatile accesses as ANYTHING. We fail to properly build the pred and succ graphs, in particular we may not elide direct nodes from receiving from STOREDANYTHING. Bootstrapped and tested on x86_64-unknown-linux-gnu, pushed. PR tree-optimization/115236 * tree-ssa-structalias.cc (build_pred_graph): Properly handle *ANYTHING = X. (build_succ_graph): Likewise. Do not elide direct nodes from receiving from STOREDANYTHING. * gcc.dg/pr115236.c: New testcase. --- gcc/testsuite/gcc.dg/pr115236.c | 12 ++++++++++++ gcc/tree-ssa-structalias.cc | 20 ++++++++++++++------ 2 files changed, 26 insertions(+), 6 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/pr115236.c diff --git a/gcc/testsuite/gcc.dg/pr115236.c b/gcc/testsuite/gcc.dg/pr115236.c new file mode 100644 index 00000000000..91edfab957a --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr115236.c @@ -0,0 +1,12 @@ +/* { dg-do run } */ +/* { dg-options "-O -fno-tree-fre" } */ + +int a, *b = &a; +int main() +{ + int *c, *volatile *d = &c; + *d = b; + if (c != &a) + __builtin_abort(); + return 0; +} diff --git a/gcc/tree-ssa-structalias.cc b/gcc/tree-ssa-structalias.cc index 9cec2c6cfd9..330e64e65da 100644 --- a/gcc/tree-ssa-structalias.cc +++ b/gcc/tree-ssa-structalias.cc @@ -1312,7 +1312,12 @@ build_pred_graph (void) { /* *x = y. */ if (rhs.offset == 0 && lhs.offset == 0 && rhs.type == SCALAR) - add_pred_graph_edge (graph, FIRST_REF_NODE + lhsvar, rhsvar); + { + if (lhs.var == anything_id) + add_pred_graph_edge (graph, storedanything_id, rhsvar); + else + add_pred_graph_edge (graph, FIRST_REF_NODE + lhsvar, rhsvar); + } } else if (rhs.type == DEREF) { @@ -1398,7 +1403,12 @@ build_succ_graph (void) if (lhs.type == DEREF) { if (rhs.offset == 0 && lhs.offset == 0 && rhs.type == SCALAR) - add_graph_edge (graph, FIRST_REF_NODE + lhsvar, rhsvar); + { + if (lhs.var == anything_id) + add_graph_edge (graph, storedanything_id, rhsvar); + else + add_graph_edge (graph, FIRST_REF_NODE + lhsvar, rhsvar); + } } else if (rhs.type == DEREF) { @@ -1418,13 +1428,11 @@ build_succ_graph (void) } } - /* Add edges from STOREDANYTHING to all non-direct nodes that can - receive pointers. */ + /* Add edges from STOREDANYTHING to all nodes that can receive pointers. */ t = find (storedanything_id); for (i = integer_id + 1; i < FIRST_REF_NODE; ++i) { - if (!bitmap_bit_p (graph->direct_nodes, i) - && get_varinfo (i)->may_have_pointers) + if (get_varinfo (i)->may_have_pointers) add_graph_edge (graph, find (i), t); } -- 2.35.3